2

我正在部署我的rails應用程序與capistrano和使用瘦服務器。我在〜/ .bash_profile中使用export SMTP_USERNAME=...定義了我的郵件用戶名和密碼的2個env vars。瘦服務器不加載與Capistrano的環境變量

當我ssh到服務器,並嘗試從軌道控制檯發送電子郵件時,它工作正常,但它看起來像他們沒有通過瘦加載時運行cap deploy或任何其他命令。

什麼是定義它們的正確方法?我看過一些帖子,他們建議直接在config/environments/production.rb或其他與代碼本身相關的文件中定義它們。出於安全原因,我試圖避免這種情況。

更新:我試圖用一個YML文件來存儲這一點,但我遇到了這樣的問題:

config/initializers創建一個新文件email_config.rb。其內容是:

EMAIL_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/email.yml")[RAILS_ENV] 

config/email.yml我:

production: 
    username: username 
    password: password 

在我config/environments/production.rb我:

config.action_mailer.delivery_method = :smtp 
config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 
config.action_mailer.default :charset => "utf-8" 
config.action_mailer.smtp_settings = { 
    address: "smtp.gmail.com", 
    port: 587, 
    authentication: :plain, 
    enable_starttls_auto: true, 
    user_name: EMAIL_CONFIG[:username], 
    password: EMAIL_CONFIG[:password] 
} 

現在的問題是,初始值設定項environments.rb加載後,如果我把在我的電子郵件配置之前定義了EMAIL_CONFIG變量,那麼RAILS_ROOT變量不是defin即

回答

0

就像你在說,不是上帝的想法直接在production.rb中保存密碼。更好的選擇是從shell變量(更接近你當前的設置)或從yaml文件(我親自做的)中引用它們。你可以在this post

找到更多的信息