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

Ruby on rails 如何判断Rails应用程序何时被迁移激活?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在尝试为我的应用程序创建迁移,在这个应用程序中,我使用了一个gem,它试图在应用程序启动时启动一个不同的服务。显然,创建迁移 rails generate migration AddSomeStuffToTable stuff:string …激活应用程序,此gem将尝试连接以启动服务。似乎通过生成迁移来启动应用程序会使服务启动无法连接,因此它只会继续休眠并重试,而不会实际运行迁移 在这个gem中,我已经为rake处理了这个问题,所以这是我到目前为止得到的: MyService.start

我正在尝试为我的应用程序创建迁移,在这个应用程序中,我使用了一个gem,它试图在应用程序启动时启动一个不同的服务。显然,创建迁移

rails generate migration AddSomeStuffToTable stuff:string
…激活应用程序,此gem将尝试连接以启动服务。似乎通过生成迁移来启动应用程序会使服务启动无法连接,因此它只会继续休眠并重试,而不会实际运行迁移

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

MyService.start unless defined? Rake or defined? IRB

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

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

MyService.start unless ENV['NO_SERVICE']
并按如下方式运行命令:

NO_SERVICE=1 rails generate migration AddSomeStuffToTable stuff:string
然而,我怀疑这是否能很好地扩展,特别是如果应用程序中有多个开发人员。一个更好的方法可能是做相反的事情,只在存在特定的env变量时启动服务。但是,按照这个方向,您需要确保您的应用程序服务器设置此变量,例如:

Apache:
SetEnv启动\u服务1

nginx:
env START\u SERVICE=1


瘦:<代码> StaskService = 1瘦启动

您是否考虑手动创建迁移文件?还是这纯粹是好奇?:)好吧,那将是一个替代方案,但我真的觉得我应该能够使用rails生成器。在这个项目中,反向方法显然是可行的。谢谢你的帮助!