2013-02-11 104 views
0

我的團隊正在維護一個Rails應用程序。之前的開發人員決定將一些配置變量(如Facebook應用程序ID,Twitter應用程序ID)作爲env變量。但這不是很通用。如果我們有兩個應用程序(測試和生產),我們只能使用一個硬編碼配置(或手動更改)。將這些變量放入版本控制也是一種很好的做法。Rails:在哪裏放置配置變量

這是正確的方法嗎?如果不是,那麼正確的方法是什麼?

+0

你是什麼意思, 「硬編碼」?如果你把它們放在代碼中,*然後*它們將被硬編碼。環境變量是要走的路。 – 2013-02-11 13:32:24

回答

1

我們在2款應用中使用以下解決方案。

  1. 將配置變量存儲在yml文件中用於https://github.com/railsjedi/rails_config gem。

  2. 應用程序被配置爲通過初始化程序在生產和開發模式中使用不同的yml文件。

  3. 在帶有yml文件的生產服務器目錄中,鏈接了2個應用程序。

任務Capistrano的看起來如此:

namespace :settings do 
    task :symlink, roles: :app do 
    run "ln -s /path_to_settings/#{rail_env} #{current_path}/config/settings" 
    end 
end 

after "deploy:create_symlink", "settings:symlink"