【问题标题】:Can I do Sinatra program without restart server?我可以在不重新启动服务器的情况下执行 Sinatra 程序吗?
【发布时间】:2025-02-26 22:25:01
【问题描述】:

当我修改代码并且必须重新启动服务器才能看到结果时。有什么办法吗?

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

    有几个选项,在Sinatra FAQ 中有详细说明。最简单的似乎是使用shotgun,您可以按如下方式安装和调用它:

    $ sudo gem install shotgun
    $ shotgun myapp.rb
    

    或者,如果您使用从 Sinatra::Base 继承来定义您的应用并使用 config.ru 文件:

    $ shotgun config.ru -p 4567
    

    【讨论】:

    • 如果你从项目目录执行shotgun,它会自动找到config.ru
    • 请注意,shotgun 会自动重新启动应用程序。应该明确区分自动考虑更改与重新启动应用程序之间的区别。 +1 虽然。
    【解决方案2】:

    如果您使用 Phusion Passenger,您可以将此文件放在应用程序的根文件夹中

    tmp/always_restart.txt

    它会在每次请求时重新启动。

    http://www.modrails.com/documentation/Users%20guide%20Apache.html(第 8.7 节)

    【讨论】:

    【解决方案3】:

    更好的方法是使用来自 sinatra-contrib gem(也来自 Sinatra FAQ)的重新加载器:首先安装 sinatra-contrib gem,然后确保您的应用程序 .rb 文件以这些行开头:

    require 'sinatra'
    require 'sinatra/reloader' if development?
    

    然后任何修改过的配置文件都会被重新加载(无需重启服务器!)

    【讨论】:

    • 如果您以模块化方式运行 Sinatra,我认为这不起作用...?
    最近更新 更多