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

确定脚本/服务器是否正在启动

  •  2
  • reto  · 技术社区  · 16 年前

    在Rails中,在initializer/environment.rb中,如果webapp本身正在加载(脚本/服务器),那么使用什么样的方式来确定。

    所有初始化器都是为迁移脚本/控制台和其他rails任务加载的,但在我的例子中,只有在服务器本身初始化时才需要加载一些东西。

    我的想法:0美元

    谢谢 雷托

    2 回复  |  直到 16 年前
        1
  •  3
  •   mislav Telemachus    16 年前

    因为有多个应用服务器,每个应用服务器都有自己的初始化策略,所以我推荐可靠地连接到服务器引导过程的唯一方法: ActionController::Dispatcher .

    调度器有一些回调;即:

    • prepare_dispatch (加上 to_prepare )
    • before_dispatch
    • after_dispatch

    “准备”回调在开发模式下的每个请求之前运行,在生产模式下的第一个请求之前运行。Rails配置对象允许您通过自己的配置添加此类回调 方法:

    Rails::Initializer.run do |config|
      config.to_prepare do
        # do your special initialization stuff
      end
    end
    

    Dispatcher.run_prepare_callbacks 不管我们是使用服务器还是脚本/控制台甚至是rake任务启动。您希望避免这种情况,因此可以在您的环境中尝试。rb:

    Rails::Initializer.run do |config|
      # your normal stuff
    end
    
    if defined? ActionController::Dispatcher
      ActionController::Dispatcher.to_prepare do
        # your special stuff
      end
    end
    

    现在,您的“特殊材料”将只在生产模式中的第一个请求之前执行,但在 每一个 if 陈述 load 或 require . 这个

        2
  •  0
  •   hernan43    16 年前

    也许有更好的方法可以做到这一点,但由于我不知道有这样的方法,我可能会修改script/server来设置某种环境变量。

    然后让我的初始值设定项检查环境变量。