【问题标题】:rails 5 run script only after server startrails 5 仅在服务器启动后运行脚本
【发布时间】:2017-12-20 06:24:32
【问题描述】:

我只想在服务器启动时运行 ftp 侦听器类,而不是在控制台、生成器、dbconsole、test、destroy、runner 和 rake 命令运行时运行。

我发现有些人使用 defined? Rails::Generators 之类的检查对 rails 3 和 4 做同样的事情,但我无法让它在 rails 5 中工作,我没有通过定义的检查获得任何回报。

【问题讨论】:

    标签: ruby-on-rails-5.1


    【解决方案1】:

    config.ru 文件仅由 Web 服务器使用,不会由控制台脚本、rake 任务甚至您的测试套件加载。你放在那里的内容只有在服务器实例启动时才会执行。

    Web 服务器本身也有办法做到这一点。例如,当您使用 Puma 时,有像 on_worker_bootafter_worker_boot 这样的钩子可能会有所帮助(http://www.rubydoc.info/github/puma/puma/Puma/Configuration/DSL)。

    但是,我建议将其集成到您部署的服务器环境中,并在 Rails 应用程序之外。

    【讨论】:

    • 感谢@Christoph 的回复,您能解释一下为什么您认为集成在服务器环境中而不是在rails 服务器中会更好
    • 关注点分离,我想说的是最重要的。您已经描述了 Rails 应用程序同时执行这两种操作时遇到的问题。根据您的部署,应用服务器可能会在 5 个工作人员上运行。这意味着您还有 5 个 FTP 侦听器正在运行。从长远来看,您可能希望扩展您的应用程序,将应用程序服务器移动到与 FTP 侦听器不同的服务器实例上。
    猜你喜欢
    • 2013-09-03
    • 2021-05-17
    • 2021-03-24
    • 2021-10-19
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多