我想在 Rails 服务器启动时运行一个方法。这是一个模型方法。
我尝试使用 config/initializers/myfile.rb,但该方法是在迁移期间调用的,因此它是从一个不存在的表中选择的。
也尝试了 environment.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
关于ruby-on-rails - Ruby on Rails,在服务器启动 2.3 上运行一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3790867/