获取rails控制器中的环境设置

时间:2012-04-11 07:50:18

标签: ruby-on-rails

我在development.rb中有一些电子邮件设置,我想在我的控制器中访问。

development.rb中的设置为:

config.notify_submited_transaction = 'anil@swiftsetup.com,anildbest83@gmail.com'
config.notify_approved_transaction = 'anil@swiftsetup.com'

在我的控制器/动作中,我正在尝试这个:

  @to = Rails.env.notify_submited_transaction
  @subject = 'AM - Vendor Submitted Transaction'
  AmMailer.vendor_submited_transaction(@to, @subject, current_user).deliver

这会导致错误:

  undefined method `notify_submited_transaction'

我不确定如何获得我设置的配置值。

感谢您的帮助。

2 个答案:

答案 0 :(得分:17)

只是一个旁注:Rails.env是一个特殊的字符串对象,它允许你获得当前的环境(它不像Rack的env):

puts Rails.env # => "production"
puts Rails.env.test? # => false

这并不意味着返回配置设置。

当您想要将自定义设置置于/config/initializers/*下时,这可能会派上用场,为清楚起见,在某些情况下这是更好的方法(建议不要使用自定义设置来混乱rails环境文件)。例如:

# config/initializers/mailer_settings.rb
if Rails.env.production?
  ActionMailer::Base.smtp_settings = {
    :address              => "smtp.gmail.com",
    ...
  }
else
  #different settings
end

答案 1 :(得分:4)

尝试访问:

Rails.application.config.notify_submited_transaction
Rails.application.config.notify_approved_transaction

似乎类似于:For Rails, how to access or print out config variables (as experiment or test / debugging)