ruby-on-rails - 从多个其他人组合一个 Gemfile

标签 ruby-on-rails rubygems gem gemfile squeel

我正在将一个大型应用程序拆分为多个较小的应用程序。这样做时,我意识到通过创建 Gemfile.global并将它包含在我的主应用程序和子应用程序中,我可以清理我所有的 Gemfile s。例如,我所有的部署 gem 都在主 Gemfile 中。 ,而我的 rails 进入 Gemfile.global .

它几乎适用于我的所有 gem ,除了一个: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和几乎所有的东西,你所期望的方式,主要是 Squeel Gemfile .放入Gemfile.global ,然而,当使用默认的 Squeel 初始化程序时,会搞砸初始化过程:
Squeel.configure do |config|
end
rails s抛出一个 uninitialized constant Squeel (NameError)即使 bundle install报告 Using squeel (1.0.13) .为什么我的这种作曲方法Gemfile弄乱了 rails 运行时常量?

最佳答案

使用 instance_eval而不是 eval将 Gemfile.global 加载到 Gemfile 时。即您的项目 Gemfile 应如下所示(删除 File.joins 以避免混淆):

gemfiles = [ 'Gemfile.global' ]
gemfiles.each do |gemfile|
  instance_eval File.read(gemfile)
end

关于ruby-on-rails - 从多个其他人组合一个 Gemfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783801/

相关文章:

ruby-on-rails - Rails 4.2 网络控制台问题

ruby-on-rails - 如何在 Mac os 10.6 上安装 mysql gem?

ruby-on-rails - ActiveRecord 范围 "default"结果

HTML 删除文本之间所需的空格

ruby-on-rails - 使用 paper_trail 来具体化 acts_as_taggable_on 关联

java - jar 中的 jRuby gem 生成目录而不是 jar

ruby-on-rails - 如何使用 Ruby 调用使用 SSH 和 SCP 传输文件?

ruby - 访问ruby gem中的文本文件

ruby-on-rails - 缺少 Rails 2.3.11 gem。请 `gem install -v=2.3.11 rails` ,

ruby-on-rails - Rails - Heroku 错误,日志中没有任何内容,在本地工作