Ruby on rails 如何将一个初始值设定项文件中定义的常量访问到rails中的另一个初始值设定项文件中?

Ruby on rails 如何将一个初始值设定项文件中定义的常量访问到rails中的另一个初始值设定项文件中?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我已经定义了这样一个YAML文件throttling\u request.yml logged_in_user: watching_timespan: 60 allowed_requests: 60 blocking_timespan: 300 non_logged_in_user: watching_timespan: 300 allowed_requests: 300 我在config/intializers/throttle\u config.rb config

我已经定义了这样一个YAML文件
throttling\u request.yml

logged_in_user:
  watching_timespan: 60
  allowed_requests:  60
  blocking_timespan: 300

non_logged_in_user:
  watching_timespan: 300
  allowed_requests:  300
我在
config/intializers/throttle\u config.rb

config = YAML.load_file('config/throttling_request.yml').with_indifferent_access
THROTTLE_REQ_NON_LOGGED_IN = config[:non_logged_in_user]
THROTTLE_REQ_LOGGED_IN     = config[:logged_in_user]

但是我想访问另一个初始化程序文件
config/initializers/rack\u attack.rb

  configs = ::THROTTLE_REQ_NON_LOGGED_IN

  # Throttle all requests by IP (20rpm)
  #
  # Key: "rack::attack:#{Time.now.to_i/:period}:req/ip:#{req.ip}"
  throttle('req/ip', limit: configs[:allowed_requests], period: configs[:watching_timespan]) do |req|
    req.ip unless req.path.start_with?('/assets')
  end
我无法在有或没有范围解析运算符的情况下加载常量
限制请求\u未登录\u的
。我想对我的另一个类使用常量
THROTTLE\u REQ\u LOGGED\u
,在机架攻击配置中使用常量
THROTTLE\u REQ\u NON\u LOGGED\u
。所以我不想混淆在rack attack初始值设定项文件中调用这个常量


如果需要我提供任何其他信息,请告诉我。

建议的解决方案

应用程序.rb中执行以下操作:

::THROTTLE_CONFIG = YAML.load_file('config/throttling_request.yml').with_indifferent_access
现在,在项目中的任何地方,包括
config/initializers/rack\u attack.rb
都可以执行以下操作:

THROTTLE_CONFIG[:non_logged_in_user]

这对
方法的
config\u有帮助吗@Eyeslandic
config\u for
很好,但我使用的是rails 3应用程序。它只提供rails 4.2 plus版本。Ok。如果你愿意的话,没有什么可以阻止你使用这个代码。我不确定在
应用程序中加一个常量是否也是rails的标准。rb
@punitcs因为我已经用了3~4年了;从来都没有问题。