【发布时间】:2011-11-14 11:43:02
【问题描述】:
我们有一个 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
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 capistrano asset-pipeline