我目前正在使用guard,即guard-coffeescript gem 在我的OSX 开发系统上编译我的javascript(将来我可能会添加更多的guard 任务)。我添加了rb-fsevent
gem 到我的 Gemspec,现在我看到在很多 Gemspec 中它都添加了这样的 if 语句:
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
尝试部署到在 Linux 下运行的临时/生产环境,在服务器上执行的脚本使用bundle install --deployment
导致以下异常:
# bundle install --deployment
You have modified your Gemfile in development but did not check
the resulting snapshot (Gemfile.lock) into version control
You have deleted from the Gemfile:
* rb-fsevent
有没有办法解决这个问题,或者我只需要删除 if 以便我可以部署到我的系统,然后安装一个在非 OSX 平台上无用的 gem?
--
编辑:我跑bundle install
在部署到我的临时环境并运行之前bundle check
第一次失败后。删除 if 语句后我就开始运行了。
我有类似的问题。如果您使用的是 capistrano,您可以设置以下选项:
set :bundle_without, [:darwin, :development, :test]
然后将您的 gem 'rb-fsevent' 行包装在名为 darwin 的组中。像这样的东西应该可以很好地工作:
group :test, :darwin do
gem 'rb-fsevent'
end
这使得捆绑器在服务器上执行此操作:
bundle --without darwin development test
这意味着它会忽略 Gemfile.lock 中的那些组。你所做的事情会让你的 OS X 机器和你的服务器产生不同的结果锁定文件。这就是它抱怨的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)