Mar*_*ark 16 linux macos ruby-on-rails guard bundler
我目前正在使用guard即guard-coffeescript gem来编译我的javascript(以及将来我可能会在我的OSX开发系统上添加一些更多的保护任务).我在rb-fsevent
我的Gemspec中添加了gem,现在我在很多Gemspecs中看到它添加了if语句,如下所示:
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
Run Code Online (Sandbox Code Playgroud)
尝试部署到在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
Run Code Online (Sandbox Code Playgroud)
有没有解决这个问题的方法,或者我只需要删除if,以便我可以部署到我的系统,然后安装在非OSX平台上无用的gem?
-
编辑:我bundle install
在部署到我的暂存环境之前运行bundle check
,并在第一次失败后运行.删除if语句后我运行了它..
Luk*_*ell 23
我遇到了类似的问题.如果您使用的是capistrano,则可以设置以下选项:
set :bundle_without, [:darwin, :development, :test]
Run Code Online (Sandbox Code Playgroud)
然后将你的gem'rb-fsevent'行包装在一个名为darwin的组中.像这样的东西应该很好地工作:
group :test, :darwin do
gem 'rb-fsevent'
end
Run Code Online (Sandbox Code Playgroud)
这使得bundler在服务器上执行此操作:
bundle --without darwin development test
Run Code Online (Sandbox Code Playgroud)
这意味着它忽略了Gemfile.lock中的那些组.你在做什么会让你的OS X机器和你的服务器得到不同的结果锁文件.这就是抱怨的原因.
我有完全相同的问题,并且Luke的解决方案为我修复了它,但是,只有在我删除了:require => false if RUBY_PLATFORM =~ /darwin/i
常用的字符串之后.
归档时间: |
|
查看次数: |
3268 次 |
最近记录: |