此扩展是 Sinatra::Contrib 项目的一部分。运行 gem install sinatra-contrib 使其可用。

Sinatra::Reloader

<b>已弃用:<b> 请考虑使用其他替代方案,例如 rerunrack-unreloader

扩展以重新加载修改后的文件。在开发过程中很有用,因为它会自动要求定义路由、过滤器、错误处理程序和内联模板的文件,并在每个传入请求时进行,但前提是它们已更新。

用法

经典应用程序

要在经典应用程序中启用重新加载器,您只需要求它即可

require "sinatra"
require "sinatra/reloader" if development?

# Your classic application code goes here...

模块化应用程序

要在模块化应用程序中启用重新加载器,您只需要求它,然后注册它即可

require "sinatra/base"
require "sinatra/reloader"

class MyApp < Sinatra::Base
  configure :development do
    register Sinatra::Reloader
  end

  # Your modular application code goes here...
end

在其他环境中使用重新加载器

默认情况下,重新加载器仅在开发环境中启用。与在模块化应用程序中注册重新加载器类似,经典应用程序需要手动启用扩展才能在非开发环境中使用。

require "sinatra"
require "sinatra/reloader"

configure :production do
  enable :reloader
end

更改重新加载策略

您可以使用 also_reloaddont_reload 来细化重新加载策略,分别自定义哪些文件应该重新加载和不应该重新加载。您还可以使用 after_reload 在任何文件被重新加载后执行一个块。

经典应用程序

只需调用这些方法即可

require "sinatra"
require "sinatra/reloader" if development?

also_reload '/path/to/some/file'
dont_reload '/path/to/other/file'
after_reload do
  puts 'reloaded'
end

# Your classic application code goes here...

模块化应用程序

configure 块中调用这些方法

require "sinatra/base"
require "sinatra/reloader"

class MyApp < Sinatra::Base
  configure :development do
    register Sinatra::Reloader
    also_reload '/path/to/some/file'
    dont_reload '/path/to/other/file'
    after_reload do
      puts 'reloaded'
    end
  end

  # Your modular application code goes here...
end