我们有一个 Rails 3.1 应用程序,允许用户将照片上传到 Amazon S3。由于我们在生产中使用 S3,我想自动(打开cap deploy
)也将预编译的资产(application.js 和 application.css 和图像)上传到我们的 S3 存储桶,在那里它们将被提供。很简单。
超越设定config.action_controller.asset_host = "http://assets.example.com"
简而言之,我正在为 Capistrano 寻找一些可行的“食谱”示例,但似乎找不到任何现代(兼容 3.1 资产管道)的示例。我们已成功预编译资产,但如何将它们移至 S3?而且,理想情况下,只有那些已经改变的?
当前“食谱”的“肉”:
...
after "deploy:update_code", "deploy:pipeline_precompile"
before "deploy:finalize_update", "deploy:copy_database_config"
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
# copy database.yml into project
task :copy_database_config do
production_db_config = "/path_to_config/#{application}.yml"
run "cp #{production_db_config} #{current_release}/config/database.yml"
`puts "replaced database.yml with live copy"`
end
task :pipeline_precompile do
run "cd #{release_path}; RAILS_ENV=production bundle exec rake assets:precompile"
end
end