2012-04-11 29 views
6

Tôi có một số cài đặt email trong development.rb mà tôi muốn truy cập trong bộ điều khiển của mình.Nhận cài đặt môi trường trong bộ điều khiển đường ray

Settings trong development.rb là:

config.notify_submited_transaction = '[email protected],[email protected]' 
config.notify_approved_transaction = '[email protected]' 

Trong điều khiển của tôi/hành động tôi đang cố gắng này:

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

này mặc dù kết quả do lỗi:

undefined method `notify_submited_transaction' 

Tôi không chắc chắn làm thế nào để có được giá trị cấu hình tôi đã thiết lập.

Cảm ơn bạn đã được trợ giúp.

+0

Điều này có thể trùng lặp với http://stackoverflow.com/questions/592554/best-way-to-create-custom-config-options-for-my-rails-app và http: //stackoverflow.com/questions/1450285/how-to-define-custom-configuration-variables-in-rails – Ernest

Trả lời

4

Cố gắng truy cập:

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

vẻ tương tự như: For Rails, how to access or print out config variables (as experiment or test/debugging)

+0

lỗi tương tự .. phương thức undefined 'notify_submited_transaction' –

+0

ok các tác phẩm của nó, cần khởi động lại máy chủ, nhờ vik –

+0

Vik, khi ứng dụng triển khai để sản xuất, nó sẽ chọn các giá trị cấu hình form.rb tự động tạo, phải không? –

17

Chỉ cần một sidenote: Rails.env là đối tượng chuỗi đặc biệt, cho phép bạn để có được môi trường hiện tại (nó không thích env Rack) :

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

Không có nghĩa là trả lại cài đặt cấu hình. Điều này có thể hữu ích khi bạn muốn đặt cài đặt tùy chỉnh của mình dưới /config/initializers/* và để rõ ràng, đó là cách tốt hơn trong một số trường hợp (khuyên bạn không nên làm lộn xộn các tệp môi trường đường ray với cài đặt tùy chỉnh của mình). Ví dụ:

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

vì vậy, khi ứng dụng được triển khai vào sản xuất, nó sẽ không tự động chọn các giá trị cấu hình tạo production.rb? –

+0

và cài đặt smtp, tôi đã thêm vào development.rb, những cài đặt này cũng không tự động chọn từ production.rb? –

+0

@AnilD Nếu bạn chạy Rails trong môi trường produciont, nó sẽ tải cài đặt cấu hình từ app/environment.rb và app/environment/production.rb. Vì vậy, không, nó sẽ không chọn cài đặt từ phát triển. – Ernest

Các vấn đề liên quan