我们正在努力使我们的部署脚本尽可能通用。是否可以为服务器地址提供capistrano 3提示,而不是在配置文件中设置它。
到目前为止,我有一个
的capistrao任务namespace :config do
task :setup do
ask(:db_user, 'db_user')
ask(:db_pass, 'db_pass')
ask(:db_name, 'db_name')
ask(:db_host, 'db_host')
ask(:application, 'application')
ask(:web_server, 'server')
setup_config = <<-EOF
#{fetch(:rails_env)}:
adapter: postgresql
database: #{fetch(:db_name)}
username: #{fetch(:db_user)}
password: #{fetch(:db_pass)}
host: #{fetch(:db_host)}
EOF
on roles(:app) do
execute "mkdir -p #{shared_path}/config"
upload! StringIO.new(setup_config), "# {shared_path}/config/database.yml"
end
end
end
在我的production.rb文件中我有
set :application, "#{fetch(:application)}"
set :server_name, "#{fetch(:application)}.#{fetch(:server)}"
set :app_port, "80"
但是当我进行封装生产配置时:设置运行配置脚本我收到一个错误,要求我输入密码。如果我硬编码生产.rb文件中的服务器地址,它工作正常......我该如何解决这个问题?
由于
答案 0 :(得分:0)
我希望其他人提供更优雅的解决方案,但如果没有:
我在某些情况下使用环境变量完成了这项工作。如果需要,您还可以使用Makefile来简化某些env组合。