Ruby on rails,在服务器启动2.3上运行一个方法
我想在rails服务器启动时运行一个方法。 这是一种模型方法。
我尝试使用config / initializers / myfile.rb,但是在迁移期间调用了该方法,因此它从一个不存在的表中选择。
尝试环境.rb,但该类尚不存在(并且可能会有与迁移相同的问题)
我不知道将该方法放在何处,因此它只能在服务器启动时运行,而不能在迁移期间运行。
你可以采取一些措施来实际改善这一点。 问题是您在rake加载环境时运行此代码,但实际上您只想在Web服务器实例加载环境时运行此代码。 解决此问题的一种方法是在rake加载环境时设置一个值,并在设置该值时,不执行初始化程序代码。 你可以这样做:
task :environment => :disable_initializer task :disable_initializer do ENV['DISABLE_INITIALIZER_FROM_RAKE'] = 'true' end #In your initializer: ENV['DISABLE_INITIALIZER_FROM_RAKE'] || MyModel.method_call
从我的理解中无法避免这种情况。 您可以将依赖于新表的初始化程序代码放在一个急救块中,以便安静下来,以便其他人可以运行迁移。
尝试在Rails :: initializer调用之后的run方法中将方法调用放在boot.rb中。 我现在没有在我面前使用rails,因为我正在工作,但我认为整个环境应该被加载,你可以在框架上运行方法。
我发现这很好用:
如果File.basename($ 0)==“rails”&& ARGV == []
它还检测到“rails generate …”