Bundler的部署错误

我目前正在使用后卫,即guard-coffeescript gem编译我的JavaScript(以后我可能会添加一些更多的守护任务)在我的OSX开发系统上。 我添加了rb-fsevent gem到我的Gemspec,现在我看到在很多Gemspecs中添加了一个if语句,如下所示:

 gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i 

尝试部署到在Linux下运行的登台/生产环境中,在服务器上执行的脚本使用bundle install --deployment结果中的以下exception:

 # 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 

有没有解决这个问题的方法,或者我只需要删除,以便我可以部署到我的系统,并依次安装在非OSX平台上无用的gem?

编辑:我运行bundle install然后部署到我的临时环境,并在第一次失败后运行bundle check 。 删除了if语句后我运行了

Solutions Collecting From Web of "Bundler的部署错误"

我有一个类似的问题。 如果您正在使用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机器和你的服务器拿出不同的结果锁文件。 这就是为什么抱怨。

我有完全相同的问题,卢克的解决方案为我修好了,但是,只有当我删除了:require => false if RUBY_PLATFORM =~ /darwin/i通常使用的字符串。

如上所述

https://github.com/guard/guard

解决办法很简单

 group :development do gem 'rb-inotify', :require => false gem 'rb-fsevent', :require => false gem 'rb-fchange', :require => false end