2

カピストラーノでシンサーバーを使用してレールアプリをデプロイしています。~/.bash_profile で定義されたメーラーのユーザー名とパスワードの 2 つの環境変数がありますexport SMTP_USERNAME=...

cap deployサーバーに ssh し、Rails コンソールから電子メールを送信しようとすると、正常に動作しますが、実行したり、他のコマンドを実行すると、シンによってロードされないように見えます。

それらを定義する正しい方法は何ですか? config/environments/production.rbコード自体に関連するファイルまたは他のファイルで直接定義することを提案する投稿を見てきました。セキュリティ上の理由からそれを避けようとしていました。

更新:これを保存するためにymlファイルを使用しようとしましたが、この問題に遭遇しました:

で新しいファイルを作成しましemail_config.rbconfig/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_CONFIGRAILS_ROOT

4

1 に答える 1

0

あなたが言っているように、パスワードを直接 production.rb に保存するのは良い考えではありません。より良いオプションは、シェル変数 (現在のセットアップに近い) または yaml ファイル (私が個人的に行っていること) からそれらを参照することです。詳細については、この投稿を参照してください。

于 2012-11-16T14:45:31.880 に答える