加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:46:51 所属栏目:百科 来源:网络整理
导读:我正在将一个大型应用程序拆分成多个较小的应用程序.在这样做时,我意识到通过创建Gemfile.global并将其包含在我的主应用程序和子应用程序中,我可以清理所有的Gemfiles.例如,我的所有部署gem都在主Gemfile中,我的rails在Gemfile.global中. 它几乎适用于我的所
我正在将一个大型应用程序拆分成多个较小的应用程序.在这样做时,我意识到通过创建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'

捆绑安装工作得很好,以及rails和几乎所有东西,你期望的方式,主要Gemfile中的Squeel.但是,将它放在Gemfile.global中时,在使用默认的Squeel初始化程序时会搞砸初始化过程:

Squeel.configure do |config|
end

rails s抛出一个未初始化的常量Squeel(NameError),即使bundle install报告使用squeel(1.0.13).为什么这种组合我的Gemfile的方法搞乱了rails运行时常量?

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读