【发布时间】:2012-12-09 01:30:03
【问题描述】:
我正在将一个大型应用程序拆分为多个较小的应用程序。这样做时,我意识到通过创建Gemfile.global 并将其包含在我的主应用程序和子应用程序中,我可以清理我所有的Gemfiles。例如,我所有的部署 gem 都放在主 Gemfile 中,而我的 rails 放在 Gemfile.global 中。
它几乎适用于我所有的宝石,除了一个:Squeel。
我在根应用程序中的Gemfile 开头为:
gemfiles = [
File.join('Gemfile.global'),
]
Dir.glob(File.join(File.dirname(__FILE__), gemfiles)) do |gemfile|
eval(IO.read(gemfile), binding)
end
# gem 'squeel' # Let's try putting this in Gemfile.global
我的Gemfile.global 看起来像:
source 'https://rubygems.org'
# rails and dependencies
gem 'squeel'
bundle install 和rails s 以及几乎所有东西都非常好用,正如您所期望的那样,主要是Gemfile。但是,将其放入 Gemfile.global 会在使用默认 Squeel 初始化程序时搞砸初始化过程:
Squeel.configure do |config|
end
rails s 抛出 uninitialized constant Squeel (NameError),即使 bundle install 报告 Using squeel (1.0.13)。为什么这种编写我的Gemfile 的方法会弄乱rails 运行时常量?
【问题讨论】:
-
经过进一步检查,这完全搞砸了我所有 gem 对常量的访问。我回到了传统方式,但我很好奇为什么会发生这种情况/可组合 Gemfile 的替代方法。
-
我强烈怀疑你和我遇到了同一现象的略有不同的表现形式......stackoverflow.com/questions/16554397/…
-
我想是的。本周我将深入研究 bundler 的一些资源,也许我会有一个顿悟。
-
马上——祝你好运!
标签: ruby-on-rails rubygems gem gemfile squeel