Rails:在创建类之前运行初始化程序

jwa*_*all 4 ruby-on-rails initializer activeresource ruby-on-rails-3

基本上我有一个initializer classatRAILS_ROOT/config/initialiers/app_constant.rb来让一切变得容易控制。

class AppConstant
  APIURL = 'http://path.to.api'
end
Run Code Online (Sandbox Code Playgroud)

在 中RAILS_ROOT/model/user.rb,我有设置:

class User < ActiveResource::Base
  self.site = AppConstant::APIURL
end
Run Code Online (Sandbox Code Playgroud)

当运行时rails s,我收到以下错误

<class:User>: uninitialized constant User::AppConstant::APIURL
Run Code Online (Sandbox Code Playgroud)

我知道问题是因为 Rails 在创建类后运行初始化程序。有没有办法让一些初始化器在 Rails 设置它的类之前运行?


require "#{Rails.root}\conf\initializers\app_constant.rb"最后,通过添加application.rb在 Rails 加载模型之前加载的 来解决这个问题。

Dan*_*anS 5

要让代码在 Rails 本身加载之前运行,请将其放在上面require 'rails/all'config/application.rb.