Detect initial deploy in openshift deploy hook
我在openshift上有一个rails应用程序。 我想在openshift上的deploy钩子中运行
这不一定是特定于openshift的,因为部署挂钩只是在部署应用程序时运行的bash脚本。
有没有办法知道应用程序之前是否已部署,或者是否已从部署挂钩创建数据库?
我不认为你必须做出这种区分。即使数据库已存在,也可以调用
或者,您可以创建自定义rails任务。例如,此任务可以尝试访问数据库以检查它是否存在。如果没有,你可以调用db:setup。要了解有关自定义rake任务的更多信息,请查看这个精彩的视频 - http://railscasts.com/episodes/66-custom-rake-tasks。使用rake的好处是您的解决方案独立于OpenShift,使用Rake可以访问Rails环境。
我在openshift文档中找到了一个解决方案,实际上甚至不是有效的。这是我的版本。
1 2 3 4 5 6 | if echo"use $OPENSHIFT_APP_NAME; show tables" | mysql | grep schema_migrations 2>&1 > /dev/null then bundle exec rake db:migrate RAILS_ENV="production" else bundle exec rake db:setup RAILS_ENV="production" fi |
如果你使用postgres,这是一个类似的命令
1 2 3 4 5 6 | if echo"\c $PGDATABASE; \dt" | psql | grep schema_migrations 2>&1 >/dev/null then bundle exec rake db:migrate RAILS_ENV="production" else bundle exec rake db:setup RAILS_ENV="production" fi |
我确信有一个类似于mysql的