2012-06-10 106 views

回答

3

如果涉及密碼,我建議您將數據存儲在外部文件中,以避免將敏感數據提交到存儲庫。 然後,可以通過讀取在該文件中的初始值設定,加載數據到存儲器例如:

配置/ my_secrets.yml:

development: 
    password: abcdefgh 
test: 
    password: abcdefgh 

配置/初始化/ load_my_config.rb:

MY_CONFIG = YAML.load_file("#{Rails.root.to_s}/config/my_secrets.yml")[Rails.env] 

現在,您可以通過訪問MY_CONFIG['password']在任何環境中訪問您的password。 生產密碼可以單獨保存在服務器上(並在另一個安全位置)。

對於非敏感數據,我只是將數據直接放在初始化程序中。 (對於應用程序)

+0

yml文件是公開可讀的,但是,不是嗎? – thatdankent

+0

'未初始化的常量HomeController :: MY_CONFIG' – Alexandre

+0

yml文件放置在服務器上,但它應該只對rails用戶可讀。 – Nicholas

3

密碼應該與由認證/授權寶石通過給定的請求,應用程序的代碼紅寶石來處理諸如設計,大減價,authLogic等

要可用變量可以存儲在全局變量中。類級固定值可以存儲在常量中。在控制器繼承自application_controller的rails中,您可以在那裏定義類級別常量。檢查Ruby語言以獲取這些變量類型變量的確切繼承規則。

實際上,最好的做法是不要這樣做,或者儘可能避免它,許多優秀的程序員會避免像鼠疫這樣的問題。這意味着你的代碼塊沒有被封裝 - 這些動作現在依賴於外部值,並且通過使許多項依賴於可能在範圍之外改變的一件事物而增加了耦合。

+0

這是一個很棒的評論,邁克爾。對於將認證密鑰存儲在代碼塊外定義的常量上的想法感到好奇。這是一個可接受的項目來存儲在別處嗎? – thatdankent