ruby - Gemfile - 将生产 gems 与开发 gems 分开

标签 ruby ruby-on-rails-3 bundler gemfile

所以我知道在 Gemfile 中我可以做这样的事情:

group :development, :test do
  gem 'gem1'
  gem 'gem2'
end

我想要完成的事情是这样的:

group :production do
  gem 'gem1'
  gem 'gem2'
end

group :development, :test do
  gem 'gem1', :path => '/Documents/Code/gem1/'
  gem 'gem2', :path => '/Documents/Code/gem2/'
end

所以我们的应用程序使用了 2 个我们也在本地开发的 gem。为了缩短在本地机器上开发的时间,我们希望能够将我们的开发环境指向 gem 的本地副本——这样它就可以在不需要重新启动 rails 服务器的情况下获取所有更改。否则我们将不得不重建 gem,重新安装 gem,并在 gem 中的每个开发更改时重新启动 rails。

但是,这样做会给我以下错误:

You cannot specify the same gem twice coming from different sources. You specified that gem1 (>= 0) should come from an unspecfied source and source at /Documents/Code/gem1

我什至尝试运行类似 bundle install --without production 的东西,但我得到了同样的错误。

有谁知道是否可以做我想做的事?

谢谢!

最佳答案

我认为有一种受支持的方法可以做到这一点,并且有一些技巧可以解决它。

支持方式:

使用 bundle configlocal 选项,如下所述:http://bundler.io/v1.3/man/bundle-config.1.html

黑客方式:

在生产环境中使用之前使用环境变量并执行 bundler :http://www.cowboycoded.com/2010/08/10/using-2-sources-for-a-gem-in-different-environments-with-bundler/

在 github 上有一个针对此问题的功能请求,其中有几个相关问题和大量评论:https://github.com/carlhuda/bundler/issues/396

关于ruby - Gemfile - 将生产 gems 与开发 gems 分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12805569/

相关文章:

css - 如何使用条件来减少对象的边距

ruby - 如何可视化ruby中的Hash数据结构?

ruby-on-rails - 使用 CanCan 通过父关联授权子对象

ruby-on-rails - Rails 5 - 如何获取 activerecord 的 serializable_hash?

ajax - Rails 中的分页

ruby-on-rails-3 - 无法从供应商缓存安装 Gems

ruby - 连接到另一个终端进程?

ruby - 为什么下面的代码在 ruby​​ 中有效?

ruby-on-rails - 了解 bundler 依赖解析

ruby - 找不到 bundle 命令。糟糕的翻译