代码之家  ›  专栏  ›  技术社区  ›  Alistra

Ruby on rails,在serverstart 2.3上运行一个方法

  •  3
  • Alistra  · 技术社区  · 15 年前

    我想在rails服务器启动时运行一个方法。这是一种模型方法。

    我试过使用配置/初始化器/我的文件.rb,但该方法是在迁移过程中调用的,因此它是从不存在的表中选择的。

    尝试环境.rb而且,该类还不存在(可能在迁移时也会遇到同样的问题)

    4 回复  |  直到 15 年前
        1
  •  3
  •   Pete    15 年前

    你可以做一些事情来改善这一点。问题是,当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
    
        2
  •  2
  •   abdollar    15 年前

        3
  •  1
  •   AndrewKS    15 年前

        4
  •  1
  •   patrick    15 年前

    我发现这很管用:

    它还检测“rails生成..”