如何判断Rails应用程序何时被迁移激活?

时间:2012-03-07 21:20:44

标签: ruby-on-rails ruby ruby-on-rails-3

我正在尝试为我的应用创建迁移,在这个应用中,我正在使用一个宝石试图在应用启动时启动不同的服务。显然,创建一个迁移......

rails generate migration AddSomeStuffToTable stuff:string

...激活应用程序,并尝试连接启动服务的此gem。看起来通过生成迁移来启动应用程序会导致服务启动无法连接,因此它只是保持睡眠状态并再次尝试,从不实际执行迁移。

在这个宝石中,我已经为rake处理了这个问题,所以这就是我到目前为止所做的:

MyService.start unless defined? Rake or defined? IRB

这会处理rake问题(比如rake db:migrate,rake db:populate),但是如何处理迁移的创建(据我所知),这不是Rake任务?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用环境变量来禁用该服务:

MyService.start unless ENV['NO_SERVICE']

按照以下方式运行你的命令:

NO_SERVICE=1 rails generate migration AddSomeStuffToTable stuff:string

但是,我怀疑这种情况很好,特别是如果应用程序中有多个开发人员。更好的方法可能是反过来,只有当特定的env变量 存在时才启动服务。但是,朝这个方向发展,您需要确保您的应用服务器设置此变量,例如:

Apache:SetEnv START_SERVICE 1

nginx:env START_SERVICE=1

瘦:START_SERVICE=1 thin start