gpt4 book ai didi

ruby-on-rails - Rails 3 初始化顺序

转载 作者:行者123 更新时间:2023-12-03 20:28:16 25 4
gpt4 key购买 nike

有人可以指出我正确的方向,以了解rails模块实例化的顺序。

我试图找到的主要内容是:

1) gem 什么时候加载?

2) config/initializers/* 什么时候加载?

3) routes.rb 中的命名路由何时得到处理?

最佳答案

添加一些 puts 很容易回答您的问题Rails 应用程序中的语句。 (好像很多人都不愿意去深挖,但我真的很推荐!)所以,仅通过实验和观察,这里是你提到的事情的顺序:

  • boot.rb
  • config/initializers/*
  • routes.rb

  • 这里有一点细节:

    1. boot.rb
    这将使用捆绑器加载应用程序 gem:
    require 'rubygems'
    # Set up gems listed in the Gemfile.
    ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
    require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])

    2. config/initializers/*
    它们按字母顺序运行。

    如果你好奇是什么触发了这个,看看 engine.rb in the railties source code . (知道 Rails 应用程序是 Rails 引擎的子类很有用。)
    initializer :load_config_initializers do
    config.paths["config/initializers"].existent.sort.each do |initializer|
    load(initializer)
    end
    end

    3. routes.rb
    通过观察,我看到接下来会出现路线图(规范)。

    但是看细节更复杂,所以如果你有兴趣我会读 SO: Controlling routes loading order from Engines也许看看 the :add_routing_paths initializer in engine.rb .

    关于ruby-on-rails - Rails 3 初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116119/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com