使用厨师食谱进行Rails应用程序部署

时间:2014-11-21 10:32:11

标签: ruby-on-rails git deployment vagrant chef

我正在尝试使用厨师烹饪书git部署rails应用程序。

以下是我用来从github克隆私有repo的代码示例。

git "/var/www/hello_app" do
  repository "git://github.com/MyUser/MyProject.git"
  reference "master"
  action "sync"
  user "gituser"
end

我担心的是如何运行bundle update / bundle install和rake precompile。

同时启动unicorn web服务器,我也检查了主厨docs的部署资源。

我正在探索其他方法来完成它,

请帮助我

2 个答案:

答案 0 :(得分:0)

我最好的方法是使用通知,但它不是坚如磐石(因为任何失败都会涉及修改app目录,以便git资源在下次运行时得到更新)。

类似的东西:

execute "bundle_install" do
 cwd "/var/www/hello_app"
 command "bundle install"
 action :nothing #To avoid executing at each run
end

git [....] do 
 [...]
 notifies :run,"execute[bundle_install]", :immediately
end

每个执行可以依次通知另一个,最后一个可以通知服务重启例如。

使用application cookbook和application_ruby可能会有更好的机会(请参阅链接中的自述文件)。

Thoose cookbook也有部署前后挂钩和重启命令挂钩,它们(IIRC)可以自动处理故障,如果发生故障,可以在下次运行时重试。

答案 1 :(得分:0)

我选择部署资源或应用程序食谱。在任何一种情况下,bundle install都会进入你的钩子。我相信部署资源实际上具有precompile_command的属性。