Module Sinatra::Reloader
In: lib/sinatra/reloader.rb

Sinatra::Reloader

Extension to reload modified files. Useful during development, since it will automatically require files defining routes, filters, error handlers and inline templates, with every incoming request, but only if they have been updated.

Usage

Classic Application

To enable the reloader in a classic application all you need to do is require it:

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

    # Your classic application code goes here...

Modular Application

To enable the reloader in a modular application all you need to do is require it, and then, register it:

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

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

      # Your modular application code goes here...
    end

Using the Reloader in Other Environments

By default, the reloader is only enabled for the development environment. Similar to registering the reloader in a modular application, a classic application requires manually enabling the extension for it to be available in a non-development environment.

     require "sinatra"
     require "sinatra/reloader"

     configure :production do
       enable :reloader
     end

Changing the Reloading Policy

You can refine the reloading policy with also_reload and dont_reload, to customize which files should, and should not, be reloaded, respectively.

Classic Application

Simply call the methods:

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

    also_reload '/path/to/some/file'
    dont_reload '/path/to/other/file'

    # Your classic application code goes here...

Modular Application

Call the methods inside the configure block:

    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'
      end

      # Your modular application code goes here...
    end

Methods

Classes and Modules

Module Sinatra::Reloader::BaseMethods
Module Sinatra::Reloader::ExtensionMethods
Class Sinatra::Reloader::Watcher

Constants

MUTEX_FOR_PERFORM = Mutex.new

Public Class methods

Reloads the modified files, adding, updating and removing the needed elements.

When the extension is registered it extends the Sinatra application klass with the modules BaseMethods and ExtensionMethods and defines a before filter to perform the reload of the modified files.

[Validate]