gpt4 book ai didi

ruby-on-rails - 用于使用 bundler 进行自动测试的特定于平台的 gem

转载 作者:行者123 更新时间:2023-12-04 03:49:35 25 4
gpt4 key购买 nike

在我正在处理的 rails 项目中,我使用这个 Gemfile(部分)插入了对 rspec、cucumber 和 autotest 的支持

gem 'rspec-rails'
gem 'cucumber-rails'
gem 'autotest-standalone'
gem 'autotest-rails-pure'
gem 'zentest-without-autotest'

但是为了使用自动测试运行测试,我需要执行 bundle exec autotest否则它会失败并显示此消息
$ autotest 
loading autotest/cucumber_rails_rspec_rspec2
Error loading Autotest style autotest/cucumber_rails_rspec_rspec2 (no such file to load -- autotest/cucumber_rails_rspec_rspec2). Aborting.

现在我正在 Mac 上进行开发,我想启用 autotest-growl 和 autotest-fsevents gem,但是如果我在 ~/.autotest 中插入这些行
require 'autotest/growl'
require 'autotest/fsevent'

然后我需要在 Gemfile 中插入相应的 gems 并且一切正常,但是它破坏了我的 CI 服务器(在 Linux 上)上的构建

如何在不为本地和 CI 环境维护不同 Gemfile 的情况下解决这个问题?

编辑:

目前我用 Gemfile 中的这些行解决了
if RUBY_PLATFORM.downcase.include?("darwin") # I'm on Mac
gem 'autotest-fsevent'
gem 'autotest-growl'
end

它在本地和 CI 服务器上都可以工作,我不知道它是否搞砸了,目前它似乎完美无缺。

任何更清洁的方法仍然受欢迎。

编辑2:

我切换到组解决方案。虽然之前的monkeypatch 在开发和持续集成方面都运行良好,但如果您使用capistrano bundler 任务进行部署或使用 bundle install --deployment,它会在生产中出现错误。选项(在生产中建议)

使用 if RUBY_PLATFORM.downcase.include?("darwin") 时行,您将在部署时收到此错误。
# bundle install --deployment --without development test
You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.

You have deleted from the Gemfile:
* autotest-fsevent
* autotest-growl

所以我对这个问题的最终解决方案是在给定的组中包含特定于平台的 gem,比如 osx,然后在生产和 CI 服务器上使用 bundle 排除它。

如果您使用 capistrano 进行部署,请将其放入您的 config.rb
set :bundle_without,  [:development, :test, :osx]
# capistrano bundler task
require "bundler/capistrano"

最佳答案

您可能希望在您的 gemfile 中使用组,例如:

group :development do
gem "autotest-growl"
gem "autotest-fsevents"
end

在您使用的服务器上: $ bundle install --without development

关于ruby-on-rails - 用于使用 bundler 进行自动测试的特定于平台的 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5634577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com