2012-11-08 14 views
22

こんにちは、私はHerokuのとgithubの上で私のレールのアプリを持っており、現在、私のアプリでメーラーを使用しています:Rails:メーラーパスワードを安全に保存するには?

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

人々はちょうどことができるので、私は、私のメールアドレスとパスワードは私のgithubのアカウントに表示されるようにしたくありませんログインして私の情報を盗むしかし、もし私が偽のパスワードを入れたら、私のアプリはメーラーが配送されるはずだと私に英雄のエラーを与えます。私はちょうどherokuに実際の電子メールとパスワードをプッシュアップし、それを編集して、私のgithubアカウントに偽のパスワードを置くことができますが、より良い方法がありますか?

+0

環境変数。 –

+0

私はそれについて読んだことがあります。どのように/正確に環境変数が設定されているか教えていただけますか? – Edmund

答えて

46

他の人たちと同じように、ENV変数を使ってこのセキュリティを実現できます。ここでそれを行う方法は次のとおりです。今

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

生産(Herokuの)中で、あなたがしなければならないすべては、follow this guideです。それは基本的にあなたのコンソールを開き、これをタイプになる:

heroku config:set [email protected] MAILER_PASSWORD=password 

開発では、あなたがapp_env_vars.rbのような示唆に富む名前で設定/初期化子フォルダ内のファイルを作成することができます。その中に、次のように配置します。

ENV['MAILER_EMAIL'] = '[email protected]' 
ENV['MAILER_PASSWORD'] = 'password' 

あなたのソース管理に押されることから、この新しく作成されたファイルを防ぐために、あなたの.gitignoreに追加する必要があります。

/config/initializers/app_env_vars.rb 

しかし、初期化子ため問題がありますファイルは環境の後にのみロードされるため、最後に行うべきことがあります。あなたの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を使用することをおすすめします。それは、私が説明したすべてのことを行います。

+0

私はこの問題を抱えています。Net :: SMTPAuthenticationError in Devise :: PasswordsController#create – xirukitepe

+2

@Ashitaka偉大なチュートリアル! –

4

figaro gemを使用して構成設定を管理することをおすすめします。それはENVを使用して設定を保存し、正確にはHeroku上のアプリケーションの設定方法です。

0

このRails Apps Tutorialをご覧ください。

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で変数を設定することを示唆:

セクション「Gmailアカウントを使用するには、」この例の設定を示し

export GMAIL_USERNAME="[email protected]" 
export GMAIL_PASSWORD="secret*" 

あなたはどこか別の場所にそれらを設定する必要があるかもしれませんアプリケーションサーバーが~/.bashrcから環境を読み取っていない場合これはあなたのアプリケーションサーバーの種類に大きく依存しています。

関連する問題