24

こんにちは、heroku と github で Rails アプリを使用しており、現在アプリでメーラーを使用しています。

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :user_name            => "myemail@gmail.com",
  :password             => "PasswordShouldGoHere",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

人々はログインして私の情報を盗むことができるので、私の電子メールとパスワードが私の github アカウントに表示されることを望んでいません。ただし、偽のパスワードを入力すると、メーラーが配信するはずのときに、アプリで heroku でエラーが発生します。最初に本物のメールアドレスとパスワードを heroku にプッシュしてから、それを編集して github アカウントに偽のパスワードを入力するだけでよいことはわかっていますが、もっと良い方法はありますか?

4

3 に答える 3

50

他の人が言ったように、ENV変数を使用してこのセキュリティを実現できます。方法は次のとおりです。

config.action_mailer.smtp_settings = {
  user_name: ENV["MAILER_EMAIL"],
  password: ENV["MAILER_PASSWORD"]
}

現在、本番環境 (Heroku) では、このガイドに従うだけです。基本的には、コンソールを開いて次のように入力することになります。

heroku config:set MAILER_EMAIL=email@example.com MAILER_PASSWORD=password

開発中は、config/initializers フォルダー内に、app_env_vars.rb. その中に、次のものを配置します。

ENV['MAILER_EMAIL'] = 'email@example.com'
ENV['MAILER_PASSWORD'] = 'password'

この新しく作成されたファイルがソース管理にプッシュされないようにするには、次のファイルに追加する必要があります.gitignore

/config/initializers/app_env_vars.rb

ただし、イニシャライザ ファイルは環境の後にのみロードされるため、問題があります。そのため、最後に 1 つのことを行う必要があります。ファイルに移動し、のenvironment.rb次を追加します。Yourapp::Application.initialize!

# Load the app's custom environment variables here, before environments/*.rb
app_env_vars = File.join(Rails.root, 'config', 'initializers', 'app_env_vars.rb')
load(app_env_vars) if File.exists?(app_env_vars)

あなたは終わった!

ただし、この構成が面倒な場合は、Figaro gemを使用することをお勧めします。それは私が説明したすべてを実行します。

于 2012-11-08T19:22:24.103 に答える
4

figaro gemを使用して構成設定を管理することをお勧めします。設定を保存するために使用ENVされ、Heroku のアプリが構成されている方法とまったく同じです。

于 2012-11-08T17:32:34.183 に答える
0

このRails アプリのチュートリアルをご覧ください。

「Gmail アカウントを使用する」セクションに、この構成例が示されています。

config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
  domain: "example.com",
  authentication: "plain",
  enable_starttls_auto: true,
  user_name: ENV["GMAIL_USERNAME"],
  password: ENV["GMAIL_PASSWORD"]
}

サーバーに変数を設定すること~/.bashrcをお勧めします。

export GMAIL_USERNAME="myname@gmail.com"
export GMAIL_PASSWORD="secret*"

アプリ サーバーが から環境を読み取らない場合は、別の場所に設定する必要がある場合があります~/.bashrc。これは、アプリ サーバーが何であるかに大きく依存します。

于 2012-11-08T18:40:55.200 に答える