2011-11-18 103 views
13

我刚刚设置了Devise(rails认证插件)在注册时发送确认电子邮件。这涉及到我的推杆以下到我的environment.rb文件中:从github隐藏我的敏感信息(例如密码)

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    :tls => true, 
    :address => "smtp.gmail.com", 
    :port => 587, 
    :domain => "gmail.com", 
    :authentication => :login, 
    :user_name => "[my email]", 
    :password => "[my pass]" 
} 

我显然不希望推动这个了[我的通行证]只是坐在那里github上。这里有一个标准的做法吗?

回答

10

标准是将您的配置设置放入一个未包含在您的仓库中的YAML文件。

然后您只需从中获取数据。

查看Railscast“#85 YAML Configuration File”以查看它的行动。

+0

当然,如果你只打算从ruby访问你的配置文件,有[社区成员](http://www.amazon.ca/Distributed-Programming-Ruby-Mark-Bates/dp/0321638360 )谁[喜欢配置在...红宝石](http://www.metabates.com/2011/06/28/lets-say-goodbye-to-yaml-for-configuration-shall-we/)。 –

+0

获取数据可能涉及'config/initializers'中的一个文件,它表示类似于'CONFIG = YAML.load_file(“#{:: Rails.root.to_s} /config/config.yml”)[:: Rails。 ENV]' – jimworm

1

创建一个包含邮件设置的配置文件并从文件加载它们。检查配置文件中删除的所有设置。让您的应用程序检查文件是否被填充,如果不是,则显示错误并正常退出(或禁用邮件,只需确保用户知道发生了什么)。

这具有额外的优势,用户可以轻松地更改邮件设置,而无需编辑代码。通常,告诉用户编辑代码来设置配置是一个坏主意。此外,您可以将配置保存在与代码不同的位置,以便更轻松地进行操作。

4

apneadiving是正确的,添加到他的解决方案中,其他人下载你的代码,可能不会很快找出如何生成这个yml,所以你需要给他们一个提示,具有以下结构:

config 
    | 
    |--- environment.rb 
    |--- mail_settings.yml 
    |--- main_settings.yml.example 

具有文件“mail_settings.yml”包含您的敏感信息,而不包括在回购协议,并有“main_settings.yml.example”包含在你的回购,并具有相同的结构“mail_settings.yml” 。

为了提供更多帮助,请在您的README文件中提供一个部分,描述人们需要将mail_settings.yml.example文件复制到mail_settings.yml并增强其内容。