Compare commits

..

17 Commits

Author SHA1 Message Date
John Bintz 8cf0ebec60 deprecation notice 2018-04-04 08:29:05 -04:00
John Bintz c0c47cc83b Merge pull request #72 from johnbintz/middleware-ordering-update
Middleware ordering update
2016-03-16 07:24:14 -04:00
John Bintz 16c1ba76ed [middleware-ordering] Improve middlware docs, fixes #51 2016-03-16 07:21:22 -04:00
John Bintz f830396dbf [middleware-ordering] Switch from hashrockets -> new hash style 2016-03-16 07:21:00 -04:00
John Bintz 41bdc64bcb Bump version. 2015-07-03 12:33:50 -04:00
John Bintz 651d202dd2 Merge pull request #66 from johnbintz/travis-trimming
No one uses 1.8.7 or 1.9.2 anymore. Sorry, folks.
2015-07-03 12:33:29 -04:00
John Bintz ffa5d63ffc Trim a little more out of the tests. 2015-07-03 12:28:20 -04:00
John Bintz d06a756c8d RSpec modernization fixes. 2015-07-03 12:20:54 -04:00
John Bintz ef3895cbcf No one uses 1.8.7 or 1.9.2 anymore. Sorry, folks. 2015-07-03 09:31:46 -04:00
John Bintz 727296953b Merge pull request #64 from cpjk/cpjk-fix-readme
Fix link to livereload.com
2015-07-03 09:24:56 -04:00
John Bintz 618feb865c Merge pull request #50 from rjocoleman/ignore_fullpath
parse fullpath for ignore
2015-07-03 09:24:47 -04:00
John Bintz f5cbf07d21 Merge pull request #58 from pmoghaddam/fix_middleware_order
Update middleware order to resolve flash.keep issue and unnecessary logging
2015-07-03 09:21:33 -04:00
John Bintz 493aa6255d Merge pull request #53 from samcon/master
Set the protocol of the livereload source
2015-07-03 09:20:53 -04:00
Chris Kelly e7cbf825d9 Fix link to livereload.com 2015-02-10 14:29:15 -08:00
Payam Moghaddam 9a4316ce37 Update middleware order to resolve flash.keep issue and unnecessary logging 2014-10-11 22:09:22 -07:00
samcon 27063b7d20 Set the protocol of the livereload source
This will allow a user to serve livereload from HTTPS
(Also requires using the :source => :livereload option)
2014-03-21 01:26:44 +02:00
Robert Coleman 64449acbc9 parse fullpath for ignore 2013-11-26 13:35:21 +13:00
13 changed files with 47 additions and 68 deletions

View File

@ -1,19 +1,10 @@
rvm: rvm:
- 1.8.7
- 1.9.2
- 1.9.3 - 1.9.3
- 2.0.0 - 2.0.0
branches: branches:
only: only:
- master - master
gemfile: gemfile:
- gemfiles/rails30.gemfile
- gemfiles/rails31.gemfile
- gemfiles/rails32.gemfile - gemfiles/rails32.gemfile
- gemfiles/rails40.gemfile - gemfiles/rails40.gemfile
matrix:
exclude:
- rvm: 1.8.7
gemfile: gemfiles/rails40.gemfile
- rvm: 1.9.2
gemfile: gemfiles/rails40.gemfile

View File

@ -1,11 +1,3 @@
appraise 'rails30' do
gem 'rails', '~> 3.0.0'
end
appraise 'rails31' do
gem 'rails', '~> 3.1.0'
end
appraise 'rails32' do appraise 'rails32' do
gem 'rails', '~> 3.2.0' gem 'rails', '~> 3.2.0'
end end

View File

@ -1,9 +1,11 @@
# Rack::LiveReload # Rack::LiveReload
_This fork is deprecated: Go check out https://github.com/onesupercoder/rack-livereload instead._
<a href="http://travis-ci.org/johnbintz/rack-livereload"><img src="https://secure.travis-ci.org/johnbintz/rack-livereload.png" /></a> <a href="http://travis-ci.org/johnbintz/rack-livereload"><img src="https://secure.travis-ci.org/johnbintz/rack-livereload.png" /></a>
[![Code Climate](https://codeclimate.com/github/johnbintz/rack-livereload.png)](https://codeclimate.com/github/johnbintz/rack-livereload) [![Code Climate](https://codeclimate.com/github/johnbintz/rack-livereload.png)](https://codeclimate.com/github/johnbintz/rack-livereload)
Hey, you've got [LiveReload](http://www.livereload.com/) in my [Rack](http://rack.rubyforge.org/)! Hey, you've got [LiveReload](http://livereload.com/) in my [Rack](http://rack.rubyforge.org/)!
No need for browser extensions anymore! Just plug it in your middleware stack and go! No need for browser extensions anymore! Just plug it in your middleware stack and go!
Even supports browsers without WebSockets! Even supports browsers without WebSockets!
@ -16,7 +18,7 @@ Use this with [guard-livereload](http://github.com/guard/guard-livereload) for m
Add the gem to your Gemfile. Add the gem to your Gemfile.
```ruby ```ruby
gem "rack-livereload", :group => :development gem "rack-livereload", group: :development
``` ```
Then add the middleware to your Rails middleware stack by editing your `config/environments/development.rb`. Then add the middleware to your Rails middleware stack by editing your `config/environments/development.rb`.
@ -25,9 +27,12 @@ Then add the middleware to your Rails middleware stack by editing your `config/e
# config/environments/development.rb # config/environments/development.rb
MyApp::Application.configure do MyApp::Application.configure do
# Add Rack::LiveReload to the bottom of the middleware stack with the default options. # Add Rack::LiveReload to the bottom of the middleware stack with the default options:
config.middleware.use Rack::LiveReload config.middleware.insert_after ActionDispatch::Static, Rack::LiveReload
# or, if you're using better_errors:
config.middleware.insert_before Rack::Lock, Rack::LiveReload
# ... # ...
end end
``` ```
@ -37,15 +42,19 @@ end
```ruby ```ruby
# Specifying Rack::LiveReload options. # Specifying Rack::LiveReload options.
config.middleware.use(Rack::LiveReload, config.middleware.use(Rack::LiveReload,
:min_delay => 500, # default 1000 min_delay : 500, # default 1000
:max_delay => 10_000, # default 60_000 max_delay : 10_000, # default 60_000
:live_reload_port => 56789, # default 35729 live_reload_port : 56789, # default 35729
:host => 'myhost.cool.wow', host : 'myhost.cool.wow',
:ignore => [ %r{dont/modify\.html$} ] ignore : [ %r{dont/modify\.html$} ]
) )
``` ```
In addition, Rack::LiveReload's position within middleware stack can be specified by inserting it relative to an exsiting middleware via `insert_before` or `insert_after`. See the [Rails on Rack: Adding a Middleware](http://guides.rubyonrails.org/rails_on_rack.html#adding-a-middleware) section for more detail. In addition, Rack::LiveReload's position within middleware stack can be
specified by inserting it relative to an exsiting middleware via
`insert_before` or `insert_after`. See the [Rails on Rack: Adding a
Middleware](http://guides.rubyonrails.org/rails_on_rack.html#adding-a-middleware)
section for more detail.
### Sinatra / config.ru ### Sinatra / config.ru
@ -54,7 +63,7 @@ require 'rack-livereload'
use Rack::LiveReload use Rack::LiveReload
# ...or... # ...or...
use Rack::LiveReload, :min_delay => 500, ... use Rack::LiveReload, min_delay: 500, ...
``` ```
## How it works ## How it works
@ -82,13 +91,13 @@ your browser doesn't need it. The SWF WebSocket implementor won't be loaded unle
WebSockets support or if you force it in the middleware stack: WebSockets support or if you force it in the middleware stack:
``` ruby ``` ruby
use Rack::LiveReload, :force_swf => true use Rack::LiveReload, force_swf: true
``` ```
If you don't want any of the web-sockets-js code included at all, use the `no_swf` option: If you don't want any of the web-sockets-js code included at all, use the `no_swf` option:
``` ruby ``` ruby
use Rack::LiveReload, :no_swf => true use Rack::LiveReload, no_swf: true
``` ```
Once more browsers support WebSockets than don't, this option will be reversed and you'll have Once more browsers support WebSockets than don't, this option will be reversed and you'll have

View File

@ -1,7 +0,0 @@
# This file was generated by Appraisal
source "http://rubygems.org"
gem "rails", "~> 3.0.0"
gemspec :path=>"../"

View File

@ -1,7 +0,0 @@
# This file was generated by Appraisal
source "http://rubygems.org"
gem "rails", "~> 3.1.0"
gemspec :path=>"../"

View File

@ -1,6 +1,6 @@
require "rack/livereload" require "rack/livereload"
class Rack::LiveReload class Rack::LiveReload
VERSION = '0.3.15' VERSION = '0.3.16'
end end

View File

@ -9,8 +9,12 @@ module Rack
attr_reader :content_length, :new_body, :livereload_added attr_reader :content_length, :new_body, :livereload_added
def protocol
@options[:protocol] || "http"
end
def livereload_local_uri def livereload_local_uri
"http://localhost:#{@options[:live_reload_port]}/livereload.js" "#{protocol}://localhost:#{@options[:live_reload_port]}/livereload.js"
end end
def initialize(body, options) def initialize(body, options)
@ -71,7 +75,7 @@ module Rack
@new_body.each do |line| @new_body.each do |line|
if !@livereload_added && line['<head'] if !@livereload_added && line['<head']
line.sub!(HEAD_TAG_REGEX) { |match| %{#{match}#{template.result(binding)}} } line.gsub!(HEAD_TAG_REGEX) { |match| %{#{match}#{template.result(binding)}} }
@livereload_added = true @livereload_added = true
end end
@ -109,3 +113,4 @@ module Rack
end end
end end
end end

View File

@ -28,7 +28,8 @@ module Rack
end end
def ignored? def ignored?
@options[:ignore] and @options[:ignore].any? { |filter| @env['PATH_INFO'][filter] } path = @env['QUERY_STRING'].empty? ? @env['PATH_INFO'] : "#{@env['PATH_INFO']}?#{@env['QUERY_STRING']}"
@options[:ignore] and @options[:ignore].any? { |filter| path[filter] }
end end
def bad_browser? def bad_browser?

View File

@ -21,7 +21,6 @@ Gem::Specification.new do |s|
# specify any dependencies here; for example: # specify any dependencies here; for example:
s.add_development_dependency "rspec" s.add_development_dependency "rspec"
s.add_development_dependency "rspec-its"
s.add_development_dependency "cucumber" s.add_development_dependency "cucumber"
s.add_development_dependency "httparty" s.add_development_dependency "httparty"
s.add_development_dependency "sinatra" s.add_development_dependency "sinatra"

View File

@ -143,14 +143,6 @@ describe Rack::LiveReload::BodyProcessor do
end end
end end
context 'in document with more than one reference to a head tag' do
let(:page_html) { "<head><head><!-- <head></head> -->" }
it 'should not add the livereload js' do
processed_body.should include == "<!-- <head></head> -->"
end
end
context 'not vendored' do context 'not vendored' do
before do before do
processor.stubs(:use_vendored?).returns(false) processor.stubs(:use_vendored?).returns(false)

View File

@ -22,13 +22,13 @@ describe Rack::LiveReload::ProcessingSkipAnalyzer do
let(:options) { { :ignore => [ %r{file} ] } } let(:options) { { :ignore => [ %r{file} ] } }
context 'path contains ignore pattern' do context 'path contains ignore pattern' do
let(:env) { { 'PATH_INFO' => '/this/file' } } let(:env) { { 'PATH_INFO' => '/this/file', 'QUERY_STRING' => '' } }
it { should be_ignored } it { should be_ignored }
end end
context 'root path' do context 'root path' do
let(:env) { { 'PATH_INFO' => '/' } } let(:env) { { 'PATH_INFO' => '/', 'QUERY_STRING' => '' } }
it { should_not be_ignored } it { should_not be_ignored }
end end
@ -56,7 +56,8 @@ describe Rack::LiveReload::ProcessingSkipAnalyzer do
describe '#ignored?' do describe '#ignored?' do
let(:path_info) { 'path info' } let(:path_info) { 'path info' }
let(:env) { { 'PATH_INFO' => path_info } } let(:query_string) { 'query_string' }
let(:env) { { 'PATH_INFO' => path_info, 'QUERY_STRING' => query_string } }
context 'no ignore set' do context 'no ignore set' do
it { should_not be_ignored } it { should_not be_ignored }
@ -67,6 +68,12 @@ describe Rack::LiveReload::ProcessingSkipAnalyzer do
it { should be_ignored } it { should be_ignored }
end end
context 'ignore set including query_string' do
let(:options) { { :ignore => [ %r{#{path_info}\?#{query_string}} ] } }
it { should be_ignored }
end
end end
describe '#bad_browser?' do describe '#bad_browser?' do

View File

@ -7,7 +7,9 @@ describe Rack::LiveReload do
subject { middleware } subject { middleware }
its(:app) { should == app } it 'should be an app' do
middleware.app.should be == app
end
let(:env) { {} } let(:env) { {} }
let(:options) { {} } let(:options) { {} }

View File

@ -1,14 +1,9 @@
require 'mocha/api' require 'mocha/api'
require 'webmock/rspec' require 'webmock/rspec'
require 'rspec/its'
require 'rack-livereload' require 'rack-livereload'
RSpec.configure do |c| RSpec.configure do |c|
c.expect_with :rspec do |config|
config.syntax = :should
end
c.mock_with :mocha c.mock_with :mocha
end end