rack-livereload/README.md

61 lines
1.9 KiB
Markdown

Hey, you've got [LiveReload](http://www.livereload.com/) in my [Rack](http://rack.rubyforge.org/)!
No need for browser extensions anymore! Just plug it in your middleware stack and go!
Use this with [guard-livereload](http://github.com/guard/guard-livereload) for maximum fun!
## Install
`gem install rack-livereload`
## Using in...
### Rails
In `config/environments/development.rb`:
``` ruby
MyApp::Application.configure do
config.middleware.insert_before(Rack::Lock, Rack::LiveReload)
# ...or, change some options...
config.middleware.insert_before(
Rack::Lock, Rack::LiveReload,
:min_delay => 500,
:max_delay => 10000,
:port => 56789,
:host => 'myhost.cool.wow'
)
end
```
### config.ru/Sinatra
``` ruby
require 'rack-livereload'
use Rack::LiveReload
# ...or...
use Rack::LiveReload, :min_delay => 500, ...
```
## How it works
The necessary `script` tag to bring in a copy of [livereload.js](https://github.com/livereload/livereload-js) is
injected right before the closing `head` tag in any `text/html` pages that come through. The `script` tag is built in
such a way that the `HTTP_HOST` is used as the LiveReload host, so you can connect from external machines (say, to
`mycomputer:3000` instead of `localhost:3000`) and as long as the LiveReload port is accessible from the external machine,
you'll connect and be LiveReloading away!
### Which LiveReload script does it use?
* If you've got a LiveReload watcher running on the same machine as the app that responds
to `http://localhost:35729/livereload.js`, that gets used, with the hostname being changed when
injected into the HTML page.
* If you don't, the copy vendored with rack-livereload is used.
* You can force the use of either one (and save on the cost of checking to see if that file
is available) with the middleware option `:source => :vendored` or `:source => :livereload`.
As usual, super-alpha!