我正在使用 Action Mailer,并且我的environment.rb 文件中有 Action Mailer 的配置设置。我想将我的项目与environment.rb 文件一起发布在公共(public)存储库中,但我不想包含我的邮件服务器的登录信息。如何配置Capistrano 的deploy.rb,以便提示用户进行邮件服务器设置,然后在Capistrano 部署期间修改或创建environment.rb 文件。
感谢您的浏览=)
最佳答案
这方面还有很多其他变体...请参阅此博客文章以获取更多想法: http://www.simonecarletti.com/blog/2009/06/capistrano-and-database-yml
从这里开始...
将其添加到您的 production.rb 环境文件中:
ActionMailer::Base.smtp_settings = File.expand_path(File.join(RAILS_ROOT, 'config', 'actionmailer.yml'))
在 capistrano 任务中,您可以执行以下操作:
desc "Generate actionmailer.yml file"
task :generate_actionmailer_yml, :roles=>:app do
secret_password = Capistrano::CLI.ui.ask "Enter your secret mail password:"
template = File.read("config/deploy/actionmailer.yml.erb")
buffer = ERB.new(template).result(binding)
put buffer, "#{shared_path}/config/actionmailer.yml"
end
desc "Link actionmailer.yml from shared"
task :link_actionmailer_yml, :roles=>:app do
run "rm -f #{current_path}/config/actionmailer.yml && ln -s #{shared_path}/config/actionmailer.yml #{current_path}/config/actionmailer.yml"
end
after "deploy:finalize_update", "deploy:link_actionmailer_yml"
然后,创建一个模板 actionmailer.yml.erb 文件:
address: "my.smtp.com"
port: 587
authentication: :plain
user_name: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="07727462754769666a622964686a" rel="noreferrer noopener nofollow">[email protected]</a>"
password: <%= secret_password %>
关于ruby-on-rails - 让 Capistrano 将提示符中的密码插入到 Environment.rb 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1863974/