Ruby on rails Rails应用程序中application.rb文件的说明
我正试图深入了解rails应用程序是如何初始化的。我正在查看config/application.rb文件,我被以下三行弄糊涂了:Ruby on rails Rails应用程序中application.rb文件的说明,ruby-on-rails,Ruby On Rails,我正试图深入了解rails应用程序是如何初始化的。我正在查看config/application.rb文件,我被以下三行弄糊涂了: require_relative 'boot' require 'rails/all' Bundler.require(*Rails.groups) 据我所知,这三行代码都在加载Rails应用程序使用的gemboot.rb像加载Bundler.require(*Rails.groups)一样加载所有gem。为什么需要全部三行代码 require_relativ
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
据我所知,这三行代码都在加载Rails应用程序使用的gemboot.rb像加载Bundler.require(*Rails.groups)一样加载所有gem。为什么需要全部三行代码
require_relative 'boot'
为gems设置绑定器和加载路径
require 'rails/all'
这将加载rails gems。它可以被替换,以便明确地只需要您需要的rails gem(即需要“操作”\u mailer/railtie
)
默认情况下,这需要gem文件中列出的gem。如果删除此行,则必须手动要求每个gem。基本正确,并且您可以通过在Rails应用程序中一次禁用一行来验证“需要”的内容
:应用程序仍在运行require\u relative'boot'
:未在我的gem文件中列出的gem的Method not found错误(其中一个(require'rails/all'))require'rails/all'
:从Gemfile中找不到gem的方法Bundler.require(*Rails.groups)
因此,在短期内,你可能只会得到第二行和第三行,但肯定会希望其他人在某一天必须执行的任何事情上得到这三行。开销很小,所以我不会删除其中任何一行。谢谢你姆贝卡。我仍然不明白为什么需要第二行。第三行不包括吗e我们所有的gem?@nflauria不,它只包括gem文件中的gem。我编辑了我的回复,以修复第二项中Rails源代码丢失的链接,其中显示了内置在Rails中的gem。像ActiveRecord、ActiveStorage和ActionMailer这样的gem被广泛使用,并且经常因为这一行而忽略gem文件。
Bundler.require(*Rails.groups)