我正在尝试为我的应用创建迁移,在这个应用中,我正在使用一个宝石试图在应用启动时启动不同的服务。显然,创建一个迁移......
rails generate migration AddSomeStuffToTable stuff:string
...激活应用程序,并尝试连接启动服务的此gem。看起来通过生成迁移来启动应用程序会导致服务启动无法连接,因此它只是保持睡眠状态并再次尝试,从不实际执行迁移。
在这个宝石中,我已经为rake处理了这个问题,所以这就是我到目前为止所做的:
MyService.start unless defined? Rake or defined? IRB
这会处理rake问题(比如rake db:migrate,rake db:populate),但是如何处理迁移的创建(据我所知),这不是Rake任务?
答案 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