Giter VIP home page Giter VIP logo

shotgun's Introduction

Shotgun

This is an automatic reloading version of the rackup command that's shipped with Rack. It can be used as an alternative to the complex reloading logic provided by web frameworks or in environments that don't support application reloading.

The shotgun command starts one of Rack's supported servers (e.g., mongrel, thin, webrick) and listens for requests but does not load any part of the actual application. Each time a request is received, it forks, loads the application in the child process, processes the request, and exits the child process. The result is clean, application-wide reloading of all source files and templates on each request.

Usage

Installation:

  gem install shotgun

Starting a server with a rackup file:

  shotgun config.ru

Using Thin and starting on port 6000 instead of 9393 (default):

  shotgun --server=thin --port=6000 config.ru

Running Sinatra apps:

  shotgun hello.rb

See 'shotgun --help' for more advanced usage.

Compatibility

Because of the underlying technique used, Shotgun is only compatible with systems that support fork(2) (probably just MRI on POSIX systems).

Caveats

  • For performance reasons, Shotgun automatically includes middleware to serve static files (similar to Rack::Static). If you rely on Rack serving static assets, then do include Rack::Static yourself.

  • If you use Sinatra, you may need to set the session secret manually.

  • Similar to a Rackup file (config.ru), you can't use require_relative in your preload files (shotgun.rb).

Links

Shotgun

Rack

Sinatra

The reloading system in Ian Bicking's webware framework served as inspiration for the approach taken in Shotgun. Ian lays down the pros and cons of this approach in the following article:

http://ianbicking.org/docs/Webware_reload.html

shotgun's People

Contributors

rtomayko avatar djanowski avatar adammck avatar josh avatar anatol avatar edzhelyov avatar jamster avatar macournoyer avatar schneems avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.