カピストラーノでシンサーバーを使用してレールアプリをデプロイしています。~/.bash_profile で定義されたメーラーのユーザー名とパスワードの 2 つの環境変数がありますexport SMTP_USERNAME=...
。
cap deploy
サーバーに ssh し、Rails コンソールから電子メールを送信しようとすると、正常に動作しますが、実行したり、他のコマンドを実行すると、シンによってロードされないように見えます。
それらを定義する正しい方法は何ですか? config/environments/production.rb
コード自体に関連するファイルまたは他のファイルで直接定義することを提案する投稿を見てきました。セキュリティ上の理由からそれを避けようとしていました。
更新:これを保存するためにymlファイルを使用しようとしましたが、この問題に遭遇しました:
で新しいファイルを作成しましemail_config.rb
たconfig/initializers
。その内容は次のとおりです。
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