ruby-on-rails - 让 Capistrano 将提示符中的密码插入到 Environment.rb 文件中

标签 ruby-on-rails capistrano

我正在使用 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/

相关文章:

ruby-on-rails - 在 Ruby on Rails 中使用回形针和 ffmpeg 转换视频

ruby-on-rails - 第一个 Rails 项目 : Rake Problem

javascript - 无法使用 $.getJSON 获取 json 响应

ruby-on-rails - 在 Phusion Passenger 上使用 Capistrano 设置 Ruby on Rails 应用程序环境

ruby-on-rails - Rails : An unhandled lowlevel error occurred. 应用程序日志可能有详细信息

ruby-on-rails-3 - 使用 capistrano 部署时出现心理语法错误

ruby-on-rails - 在 simpleform + Rails 中的 bootstrap 中左对齐 "remember me"复选框

ruby-on-rails - Authlogic 如何与 Mongoid 一起使用?

ruby-on-rails - 第一次 Capistrano 用户。没有返回错误,但实际上没有上传代码

ruby-on-rails - 部署后 Rails 不使用新的 manifest-*.json 文件