首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署时出现捆绑程序错误

部署时出现捆绑程序错误
EN

Stack Overflow用户
提问于 2011-06-25 03:23:57
回答 3查看 3.4K关注 0票数 16

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

代码语言:javascript
复制
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i

在尝试部署到我的登台/生产环境(在Linux下运行)时,在服务器上执行的脚本使用bundle install --deployment结果,出现以下异常:

代码语言:javascript
复制
# 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语句后,我让它运行起来。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-11 13:14:33

我也遇到过类似的问题。如果您正在使用capistrano,则可以设置以下选项:

代码语言:javascript
复制
set :bundle_without, [:darwin, :development, :test]

然后将您的gem 'rb-fsevent‘行包装在一个名为darwin的组中。像这样的东西应该能很好地工作:

代码语言:javascript
复制
group :test, :darwin do
  gem 'rb-fsevent'
end

这使得bundler在服务器上执行以下操作:

代码语言:javascript
复制
bundle --without darwin development test

这意味着它会忽略Gemfile.lock中的这些组。你所做的会使你的OS机器和你的服务器产生不同的结果锁文件。这就是为什么它会抱怨。

票数 23
EN

Stack Overflow用户

发布于 2011-08-31 03:58:44

我遇到了完全相同的问题,而Luke的解决方案只是在我删除了常用的:require => false if RUBY_PLATFORM =~ /darwin/i字符串之后才帮我解决了这个问题。

票数 6
EN

Stack Overflow用户

发布于 2012-12-01 03:45:34

如中所述

https://github.com/guard/guard

解决方案很简单

代码语言:javascript
复制
group :development do
  gem 'rb-inotify', :require => false
  gem 'rb-fsevent', :require => false
  gem 'rb-fchange', :require => false
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6472785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档