扶手:创建类之前运行初始化(Rails: Run initializer before creati

2019-09-17 09:29发布

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

class AppConstant
  APIURL = 'http://path.to.api'
end

而在RAILS_ROOT/model/user.rb ,我的设置:

class User < ActiveResource::Base
  self.site = AppConstant::APIURL
end

当运行rails s ,我得到了以下错误

<class:User>: uninitialized constant User::AppConstant::APIURL

我知道,这个问题是由于Rails创建类之后运行初始化器。 有没有什么办法,使一些初始化器之前的Rails设置它的类运行?


最后,这个问题是通过将解决require "#{Rails.root}\conf\initializers\app_constant.rb"application.rb这是前右侧滑轨负荷模型加载。

Answer 1:

有自身被加载之前的Rails代码的运行,把它上面的require 'rails/all'config/application.rb



Answer 2:

当类被装载另一解决方案是包装的方法中的常数,因此不计算,但只后,当方法被调用:

def self.site
  AppConstant::APIURL
end

如果它需要的设定,以及:

def self.site=(url)
  @site = url
end

def self.site
  @site ||= AppConstant::APIURL
end


文章来源: Rails: Run initializer before creating classes