2014-02-21 57 views
2

我正在尋找一種配置Rails應用程序的好方法,當它已經被加載。例如,我需要特定的「管理員」角色才能激活特定的選項,以使應用程序改變其發送電子郵件的方式(基於不同的邏輯)。這一變化必須在整個應用生命週期中保持不變,包括重啓......直到另一個管理員決定取消選中該選項。Rails運行時配置

現在我們可以創建一個「設置」表,並在那裏存儲配置,但是感覺最合適的方式是使用初始化器(以app.rb爲例)。我知道在rails中,我可以獲得這些配置屬性並將其更改爲我想要的任何內容......現在,我怎樣才能「堅持」它們?

很明顯,任何其他方法或解決這個問題是完全受歡迎的。

非常感謝

+1

如果您使用初始值設定項,則如果設置發生更改,則應用程序將需要重新啓動。我認爲設置表是要走的路。 – Hesham

+0

你正在更新什麼'特定'電子郵件選項? – wurde

回答

1

爲了響應用戶輸入,讓您的應用程序修改其磁盤上的代碼可能不是最合適的方法 - 只需想想如何使用它即可。應用更新。這是一個脆弱的設計。該配置是用戶提供的數據,因此將其存儲爲用戶提供的數據。

0

您需要使用與表admin角色。你可以使用rails_admin Gem,並在人們改變它們時堅持設置。

0

我有相同的問題一段時間,並提出了你提出的混合:保存在db中的值,默認值在初始化器中設置。你可以隨時在運行時更改值,它會被保留下來並在任何重新啓動後生存下來,這些都不能說是環境變量。 我還送寶石,但太不成熟了,不能給一個鏈接,但可以向你保證,這是很容易實現

BTW Spree gem,這是相當流行,造成這樣的表

create_table "spree_preferences", force: true do |t| 
    t.text  "value" 
    t.string "key" 
    t.string "value_type" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end