我有時會面臨這種情況,根據環境的不同,可能會更好地處理流程。 (例如,禁用某些功能)根據Rails中的環境變量更改行爲的最佳方法
例如, 如果您在生產,您可以發送電子郵件,如果過程成功。 但是對於測試和開發環境我們只是簡單地禁用它。
現在,我只是把if-clause
。
ActiveRecord::Base.transaction do
itemable = create_invoiceitemable(each_line)
next unless itemable.present?
create_invoiceitem(invoice, itemable, each_line[:id])
end
ReceiptMailer.receipt(invoie[:uuid]).deliver_later if RAILS_ENV[:production]
有更好的方法來處理這個問題的任何想法?
我建議使用專用的方法進行這樣的檢查:'if Rails.production?'。您將獲得更好的可維護性。 –
對於電子郵件發送,我通常使用這個gem https://github.com/ryanb/letter_opener,它將在瀏覽器中直接打開電子郵件,而不是在開發過程中發送。 – tegon