0

我有一个非常简单的 Rails 应用程序,当用户注册时会发送一封欢迎电子邮件。我正在使用我的 gmail 帐户发送消息,并且我的 gmail 帐户的密码存储在应用程序中,如下所示:

应用程序.rb

require File.expand_path('../boot', __FILE__)

require 'rails/all'

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

ENV.update YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))

module TestMailApp
  class Application < Rails::Application

    config.action_mailer.smtp_settings = {
      :address              => "smtp.gmail.com",
      :port                 => 587,
      :domain               => "my address",
      :user_name            => "my_gmail_name",
      :password             => ENV["MAIL_PASSWORD"],
      :authentication       => :plain,
      :enable_starttls_auto => true
    }

    config.action_mailer.default_url_options = {
      :host => "my address"
    }   


应用程序.yml

MAIL_PASSWORD: "my_password"


我想隐藏存储在我的 git 存储库中的 application.yml 文件中的密码。我尝试将 application.yml 添加到我的 gitignore 文件中,但这只会使我的应用程序崩溃。

如何在我的 git 存储库中隐藏此密码,以便我的应用程序仍然可以运行,并且我不必将我的应用程序放入私有存储库中?

4

3 回答 3

4

你基本上不能。这类信息最好作为环境变量存储在服务器上,或者存储在您不添加到 git 的配置文件中。

于 2013-07-14T18:36:48.643 回答
2

我的 sendgrid 示例:

发展.rb

  if ENV['SENDGRID_USERNAME']
    config.action_mailer.smtp_settings = {
        :address => 'smtp.sendgrid.net',
        :domain => 'heroku.com',
        :port => '587',
        :authentication => :plain,
        :user_name => ENV['SENDGRID_USERNAME'],
        :password => ENV['SENDGRID_PASSWORD']
    }
  end

在您的服务器上编辑 bash 配置文件:

nano .bash_profile

并添加您的价值:

export SENDGRID_USERNAME=yourusername
export SENDGRID_PASSWORD=yourpassword

在我的本地计算机上执行此操作后,我必须关闭所有控制台窗口并再次打开它以初始化这些窗口,env variables您就可以开始了。如果您在 vps 上执行此操作,您可能需要重新启动您的 vps,不确定。

于 2013-07-14T19:57:06.070 回答
0

尝试使用 dotenv gem https://rubygems.org/gems/dotenv。通过在 .gitignore 中提及 .env 文件,您可以获得所需的结果。

于 2017-08-27T11:54:02.917 回答