3

如果您将 Rails 与 Sprockets 和 Opscode Chef 一起使用,您将如何在部署期间处理资产预编译?我想保持我的 git 历史干净,所以我不想在本地预编译它们然后将它们提交到存储库。

最简单的方法似乎是将它们添加到应用程序说明书的迁移命令中,但这对我来说似乎很讨厌。资产预编译应该与数据库迁移分开。关于如何处理这个问题的任何其他建议?

4

1 回答 1

4

如果您使用的是 deploy_revision 资源,您可以粘贴 rake 任务以将资产预编译到before_restart块中。

这是我的 deploy_revision 资源中的代码片段。因为我使用的是 RVM,所以我安装了 Fletcher Nichol 令人惊叹的RVM 食谱。您可以将其替换为ruby-block资源。

在我的 gist中查看更完整的示例。

 app = node[:rails][:app_name]
 before_restart do
   rvm_shell "assets precompile" do
     ruby_string "#{app[:ruby_ver]}@#{app[:gemset]}"
     cwd release_path
     user app[:deploy_user]
     group app[:deploy_user]

     # TODO I could not set the environment via the builtin command. Does not look like it is getting passed to popen4
     # So instead of `environment "RAILS_ENV" => app[:environment]` I have it in the code block
     code %{
       export RAILS_ENV=#{app[:environment]}
       bundle exec rake assets:precompile
     }
   end
 end
于 2012-03-17T06:20:50.607 回答