1

我使用 application 和 application_ruby 食谱定义了以下应用程序:

application 'railsapp' do
  owner 'vagrant'
  group 'vagrant'
  path '/home/vagrant/railsapp'
  revision 'master'
  repository 'git@github.com:rohshall/railsreadings.git'
  migrate true
  rails do
    bundler true
    database do
      host 'localhost'
      username mysql_connection_info[:username]
      password mysql_connection_info[:password]
      database 'railsreadings_production'
      adapter 'mysql2'
      encoding 'utf8'
    end
  end
  unicorn do
    preload_app true
    port "9000"
    worker_timeout 30
    worker_processes 2
  end
end

即使我有 preload_app true,独角兽也不会重新启动。从 chef 日志中可以看到,unicorn 的 before_compile cook 和 before_deploy 钩子被执行了,但是它没有进入 before_restart。关于我的配置错误的任何指示?

4

1 回答 1

1

应用程序说明书的模型是它将在每个注册资源中查找“restart_command”,并在 before_restart 和 after_restart 回调之间触发这些。在 application_ruby 的先前版本中,这将默认为“touch tmp/restart.txt”,这是乘客的默认设置。在当前版本中,没有默认的 restart_command。

我建议为独角兽添加一个合适的命令:

application 'railsapp' do
  ...
  restart_command "service unicorn restart"
  ...
end

根据 application_ruby 食谱的版本,您可能需要将其放在“rails”资源下。

我们在Ninefold的 Rails 应用程序部署服务中广泛使用这些食谱,并且通常它们运行良好。我们发现实际的回调非常有用,可以覆盖迁移和资产预编译等内置操作,以提供更好的控制和报告。

于 2013-12-08T22:41:53.530 回答