Railtie:如何访问初始值设定项和库加载钩子



我正在为我的Rails应用程序开发一个gem,它通过Railtie加载到其中。我基本上是在旧的 Rails 应用程序样式中插入模型,以及库和一些初始值设定项。我主要关心的是在整个 Rails 应用程序加载逻辑中不知道我应该最好在哪里插入它们。我对它的要求是:必须在应用程序初始值设定项之前加载 gem 初始值设定项,库也是如此,初始化项访问库信息。在Rails应用程序工作流程中,它以某种方式工作。我的短期解决方法如下:

module Gemname
  def self.initialize_railtie
    ActiveSupport.on_load :active_record do
      require 'gemname/lib'
      require 'gemname/initializers'
    end
  end
  class Railtie < Rails::Railtie
  initializer 'gemname.insert_into_app' do
    Gemfile.initialize_railtie
  end
end 

所以这样,我确定库是在初始化项之前加载的。只是我很确定有更好的方法可以做到这一点,即访问一些 railtie 钩子,它允许我使用应用程序库加载我的库,并使用应用程序初始值设定项加载初始值设定项。只是我似乎找不到它们。

我认为你想要的是config.after_initialize.根据这里:

要运行的最后一个可配置块。在框架初始化后调用。

在这里:

after_initialize:在应用程序初始化之后直接运行,但在运行应用程序初始值设定项之前运行。

因此,您将拥有:

module Gemname
  class MyCoolRailtie < ::Rails::Railtie
    config.after_initialize do
      require 'gemname/lib'
      require 'gemname/initializers'
    end
  end
end

相关内容

  • 没有找到相关文章

最新更新