我目前正在使用guard,即guard-coffeescript gem在我的OSX开发系统上编译我的javascript (将来我可能会添加更多的guard任务)。我将rb-fsevent gem添加到了我的Gemspec中,现在我看到在很多Gemspecs中都添加了一个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语句后,我让它运行起来。
发布于 2011-08-11 13:14:33
我也遇到过类似的问题。如果您正在使用capistrano,则可以设置以下选项:
set :bundle_without, [:darwin, :development, :test]然后将您的gem 'rb-fsevent‘行包装在一个名为darwin的组中。像这样的东西应该能很好地工作:
group :test, :darwin do
gem 'rb-fsevent'
end这使得bundler在服务器上执行以下操作:
bundle --without darwin development test这意味着它会忽略Gemfile.lock中的这些组。你所做的会使你的OS机器和你的服务器产生不同的结果锁文件。这就是为什么它会抱怨。
发布于 2011-08-31 03:58:44
我遇到了完全相同的问题,而Luke的解决方案只是在我删除了常用的:require => false if RUBY_PLATFORM =~ /darwin/i字符串之后才帮我解决了这个问题。
发布于 2012-12-01 03:45:34
如中所述
https://github.com/guard/guard
解决方案很简单
group :development do
gem 'rb-inotify', :require => false
gem 'rb-fsevent', :require => false
gem 'rb-fchange', :require => false
endhttps://stackoverflow.com/questions/6472785
复制相似问题