2009-12-08 1 views
2

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

Спасибо для смотреть =)

ответ

5

Там много других вариаций на это ... смотреть этот блог больше идей: 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: "[email protected]" 
password: <%= secret_password %> 
0

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