У Capistrano пароль для вставки из приглашения в файл Environment.rb - PullRequest
2 голосов
/ 08 декабря 2009

Я использую Action Mailer и у меня есть параметры конфигурации для Action Mailer в моем файле environment.rb. Я хотел бы опубликовать свой проект в общедоступном хранилище вместе с файлом environment.rb, но я не хочу включать информацию для входа в систему моего почтового сервера. Как настроить файл deploy.rb Capistrano, чтобы он запрашивал у пользователя параметры почтового сервера, а затем изменял или создавал файл environment.rb во время развертывания Capistrano.

Спасибо за внимание =)

Ответы [ 2 ]

5 голосов
/ 08 декабря 2009

Есть много других вариантов ... см. Этот пост в блоге для большего количества идей: 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'))

А в задании по капистрано вы можете сделать что-то вроде этого:

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: "user@name.com"
password: <%= secret_password %>
0 голосов
/ 19 января 2012

Я бы добавил к ответу @jkrall, предложив использовать метод Capistrano :: CLI.password_prompt вместо Capistrano::CLI.ui.ask, чтобы пароль не передавался в stdin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...