guard-webrick 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ == 0.1.0 (Mar 19, 2011)
2
+
3
+ Initial release.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in guard-webrick.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,10 @@
1
+ guard 'bundler' do
2
+ watch(/^Gemfile/)
3
+ watch(/^.+\.gemspec/)
4
+ end
5
+
6
+ guard 'rspec', :version => 2 do
7
+ watch(/^spec\/.*_spec\.rb/)
8
+ watch(/^lib\/(.*)\.rb/) { |m| "spec/#{m[1]}_spec.rb" }
9
+ watch(/^spec\/spec_helper\.rb/) { "spec" }
10
+ end
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Fletcher Nichol
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,60 @@
1
+ = Guard::WEBrick
2
+
3
+ Guard::WEBrick automatically starts and restarts WEBrick when needed. Useful when you are working on a static site but want to benefit from {Guard::LiveReload}[http://github.com/guard/guard-livereload].
4
+
5
+ - Tested on Ruby 1.8.7, 1.9.2, Ruby Enterprise Edition, and JRuby
6
+
7
+ == Install
8
+
9
+ Please be sure to have {Guard}[http://github.com/guard/guard] installed before continue.
10
+
11
+ Install the gem:
12
+
13
+ gem install guard-webrick
14
+
15
+ Add it to your Gemfile (inside test group):
16
+
17
+ gem 'guard-webrick'
18
+
19
+ Add guard definition to your Guardfile by running this command:
20
+
21
+ guard init webrick
22
+
23
+ == Usage
24
+
25
+ Please read {Guard usage doc}[http://github.com/guard/guard#readme]
26
+
27
+ == Guardfile
28
+
29
+ You can adapt your 'view' files like you want.
30
+ Please read {Guard doc}[http://github.com/guard/guard#readme] for more info about Guardfile DSL.
31
+
32
+ guard 'webrick' do
33
+ end
34
+
35
+ == Options
36
+
37
+ The WEBrick guard has 3 options that you can set like this:
38
+
39
+ guard 'webrick', :host => '127.0.0.1', :port => '35728', :docroot => 'public' do
40
+ ...
41
+ end
42
+
43
+ Available options:
44
+
45
+ :host => '127.3.3.1' # default '0.0.0.0'
46
+ :port => '12345' # default '3000'
47
+ :docroot => 'public' # default current working directory
48
+ :launchy => false # default true
49
+
50
+ == Development
51
+
52
+ - Source hosted at {GitHub}[http://github.com/fnichol/guard-webrick]
53
+ - Report issues/Questions/Feature requests on {GitHub Issues}[http://github.com/fnichol/guard-webrick/issues]
54
+
55
+ Pull requests are very welcome! Make sure your patches are well tested. Please create a topic branch for every separate change
56
+ you make.
57
+
58
+ == Authors
59
+
60
+ {Fletcher Nichol}[http://github.com/fnichol]
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+ task :default => :spec
7
+
8
+ namespace(:spec) do
9
+ desc "Run all specs on multiple ruby versions (requires rvm)"
10
+ task(:portability) do
11
+ rubies = if ENV['RUBIES']
12
+ ENV['RUBIES'].split(' ')
13
+ else
14
+ %w[1.8.7 1.9.2 ree jruby]
15
+ end
16
+ rubies.each do |version|
17
+ rvm_ruby = if ENV['GEMSET']
18
+ "#{version}@#{ENV['GEMSET']}"
19
+ else
20
+ version
21
+ end
22
+ system <<-BASH
23
+ bash -c '
24
+ source ~/.rvm/scripts/rvm;
25
+ rvm #{rvm_ruby};
26
+ echo "--------- version #{rvm_ruby} ----------\n";
27
+ bundle install;
28
+ rake spec'
29
+ BASH
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "guard/webrick/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "guard-webrick"
7
+ s.version = Guard::WEBrickVersion::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Fletcher Nichol']
10
+ s.email = ['fnichol@nichol.ca']
11
+ s.homepage = 'http://rubygems.org/gems/guard-webrick'
12
+ s.summary = %q{Guard gem for WEBrick}
13
+ s.description = %q{Guard::WEBrick automatically starts and restarts WEBrick when needed.}
14
+
15
+ s.required_rubygems_version = '>= 1.3.6'
16
+ s.rubyforge_project = "guard-webrick"
17
+
18
+ s.add_dependency 'guard', '~> 0.3'
19
+ s.add_dependency 'ffi', '~> 1.0.7'
20
+ s.add_dependency 'spoon', '~> 0.0.1'
21
+
22
+ s.add_development_dependency 'bundler', '~> 1.0.10'
23
+ s.add_development_dependency 'rspec', '~> 2.5.0'
24
+ s.add_development_dependency 'guard-rspec', '~> 0.2.0'
25
+ s.add_development_dependency 'guard-bundler', '~> 0.1.1'
26
+
27
+ s.files = `git ls-files`.split("\n")
28
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
29
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
30
+ s.require_paths = ["lib"]
31
+ end
@@ -0,0 +1,114 @@
1
+ require 'guard'
2
+ require 'guard/guard'
3
+ require 'spoon'
4
+ require 'launchy'
5
+ require 'socket'
6
+ require 'timeout'
7
+
8
+ module Guard
9
+ class WEBrick < Guard
10
+
11
+ attr_accessor :pid
12
+
13
+ def initialize(watchers=[], options={})
14
+ super
15
+ @options = {
16
+ :host => '0.0.0.0',
17
+ :port => 3000,
18
+ :docroot => Dir::pwd,
19
+ :launchy => true
20
+ }.update(options)
21
+ end
22
+
23
+ # =================
24
+ # = Guard methods =
25
+ # =================
26
+
27
+ # Call once when guard starts
28
+ def start
29
+ UI.info "Starting up WEBrick..."
30
+ if running?
31
+ UI.error "Another instance of WEBrick::HTTPServer is running."
32
+ false
33
+ else
34
+ @pid = Spoon.spawnp('ruby',
35
+ File.expand_path(File.join(File.dirname(__FILE__), %w{webrick server.rb})),
36
+ @options[:host],
37
+ @options[:port].to_s,
38
+ @options[:docroot]
39
+ )
40
+ wait_for_port
41
+ if @options[:launchy]
42
+ Launchy.open("http://#{@options[:host]}:#{@options[:port]}")
43
+ @options[:launchy] = false # only run once
44
+ end
45
+ @pid
46
+ end
47
+ end
48
+
49
+ # Call with Ctrl-C signal (when Guard quit)
50
+ def stop
51
+ UI.info "Shutting down WEBrick..."
52
+ Process.kill("TERM", @pid)
53
+ Process.wait(@pid)
54
+ @pid = nil
55
+ true
56
+ end
57
+
58
+ # Call with Ctrl-Z signal
59
+ def reload
60
+ restart
61
+ end
62
+
63
+ # Call on file(s) modifications
64
+ def run_on_change(paths = {})
65
+ restart
66
+ end
67
+
68
+ private
69
+
70
+ def restart
71
+ UI.info "Restarting WEBrick..."
72
+ stop
73
+ start
74
+ end
75
+
76
+ def running?
77
+ begin
78
+ if @pid
79
+ Process.getpgid @pid
80
+ true
81
+ else
82
+ false
83
+ end
84
+ rescue Errno::ESRCH
85
+ false
86
+ end
87
+ end
88
+
89
+ def wait_for_port
90
+ while true do
91
+ sleep 0.2
92
+ port_open?(@options[:host], @options[:port]) and return
93
+ end
94
+ end
95
+
96
+ # thanks to: http://bit.ly/bVN5AQ
97
+ def port_open?(addr, port)
98
+ begin
99
+ Timeout::timeout(1) do
100
+ begin
101
+ s = TCPSocket.new(addr, port)
102
+ s.close
103
+ return true
104
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
105
+ return false
106
+ end
107
+ end
108
+ rescue Timeout::Error
109
+ end
110
+
111
+ return false
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,34 @@
1
+ require 'webrick'
2
+
3
+ module Guard
4
+ class WEBrick
5
+ class Server
6
+
7
+ attr_reader :server
8
+
9
+ def initialize(options = {})
10
+ @server = ::WEBrick::HTTPServer.new(
11
+ :BindAddress => options[:host],
12
+ :Port => options[:port],
13
+ :DocumentRoot => File.expand_path(options[:docroot])
14
+ )
15
+ end
16
+
17
+ def start
18
+ %w{TERM HUP}.each { |signal| trap(signal){ server.shutdown } }
19
+ # ignore signals for guard
20
+ %w{INT TSTP QUIT}.each { |signal| trap(signal) {} }
21
+ @server.start
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ if __FILE__ == $0
28
+ host, port, docroot = ARGV
29
+ Guard::WEBrick::Server.new(
30
+ :host => host,
31
+ :port => port,
32
+ :docroot => docroot
33
+ ).start
34
+ end
@@ -0,0 +1,2 @@
1
+ guard 'webrick' do
2
+ end
@@ -0,0 +1,5 @@
1
+ module Guard
2
+ module WEBrickVersion
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+ require 'guard/webrick/server'
3
+
4
+ describe Guard::WEBrick::Server do
5
+
6
+ describe "initialize" do
7
+
8
+ it "should create a WEBrick::HTTPServer instance" do
9
+ ::WEBrick::HTTPServer.should_receive(:new).with(
10
+ :BindAddress => '0.0.0.0',
11
+ :Port => 3000,
12
+ :DocumentRoot => Dir::pwd
13
+ )
14
+ new_server
15
+ end
16
+
17
+ it "should expand the docroot path" do
18
+ ::WEBrick::HTTPServer.should_receive(:new).with(
19
+ :BindAddress => '0.0.0.0',
20
+ :Port => 3000,
21
+ :DocumentRoot => File.expand_path(File.join(Dir::pwd, 'public'))
22
+ )
23
+ new_server(:docroot => 'public')
24
+ end
25
+ end
26
+
27
+ describe "start" do
28
+
29
+ subject { new_server }
30
+
31
+ it "should start the WEBrick::HTTPServer instance" do
32
+ ::WEBrick::HTTPServer.stub(:new).and_return(mock_http_server)
33
+ subject.server.should_receive(:start)
34
+ subject.start
35
+ end
36
+ end
37
+ end
38
+
39
+ def new_server(options = {})
40
+ Guard::WEBrick::Server.new({
41
+ :host => '0.0.0.0',
42
+ :port => 3000,
43
+ :docroot => Dir::pwd
44
+ }.update(options))
45
+ end
46
+
47
+ def mock_http_server
48
+ @mock_http_server ||= mock(::WEBrick::HTTPServer).as_null_object
49
+ end
@@ -0,0 +1,183 @@
1
+ require 'spec_helper'
2
+
3
+ describe Guard::WEBrick do
4
+ subject { Guard::WEBrick.new }
5
+
6
+ before(:each) do
7
+ Launchy.stub(:open)
8
+ end
9
+
10
+ describe "options" do
11
+
12
+ describe "host" do
13
+
14
+ it "should be '0.0.0.0' by default" do
15
+ subject = Guard::WEBrick.new([])
16
+ subject.options[:host].should == '0.0.0.0'
17
+ end
18
+
19
+ it "should be set to '127.0.0.5'" do
20
+ subject = Guard::WEBrick.new([], { :host => '127.0.0.5' })
21
+ subject.options[:host].should == '127.0.0.5'
22
+ end
23
+ end
24
+
25
+ describe "port" do
26
+
27
+ it "should be 3000 by default" do
28
+ subject = Guard::WEBrick.new([])
29
+ subject.options[:port].should == 3000
30
+ end
31
+
32
+ it "should be set to 8080" do
33
+ subject = Guard::WEBrick.new([], { :port => 8080 })
34
+ subject.options[:port].should == 8080
35
+ end
36
+ end
37
+
38
+ describe "docroot" do
39
+
40
+ it "should be Dir::pwd by default" do
41
+ subject = Guard::WEBrick.new([])
42
+ subject.options[:docroot].should == Dir::pwd
43
+ end
44
+
45
+ it "should be set to #{File.join(Dir::pwd, 'public')}" do
46
+ subject = Guard::WEBrick.new([], { :docroot => File.join(Dir::pwd, 'public') })
47
+ subject.options[:docroot].should == File.join(Dir::pwd, 'public')
48
+ end
49
+ end
50
+
51
+ describe "launchy" do
52
+
53
+ it "should be true by default" do
54
+ subject = Guard::WEBrick.new([])
55
+ subject.options[:launchy].should == true
56
+ end
57
+
58
+ it "should be set to false" do
59
+ subject = Guard::WEBrick.new([], { :launchy => false })
60
+ subject.options[:launchy].should == false
61
+ end
62
+ end
63
+ end
64
+
65
+ describe "start" do
66
+
67
+ before(:each) do
68
+ Spoon.stub(:spawnp).and_return(123456)
69
+ subject.stub(:wait_for_port)
70
+ end
71
+
72
+ it "should spawn the server instance" do
73
+ subject = Guard::WEBrick.new([], { :host => '127.0.2.5', :port => 8080,
74
+ :docroot => '/tmp' })
75
+ subject.stub(:wait_for_port)
76
+ Spoon.should_receive(:spawnp).with( 'ruby',
77
+ File.expand_path(File.join(File.dirname(__FILE__),
78
+ %w{.. .. lib guard webrick server.rb})),
79
+ '127.0.2.5', '8080', '/tmp'
80
+ )
81
+ subject.start
82
+ end
83
+
84
+ it "should pass startup options to the server instance" do
85
+ Spoon.should_receive(:spawnp).with( 'ruby',
86
+ File.expand_path(File.join(File.dirname(__FILE__),
87
+ %w{.. .. lib guard webrick server.rb})),
88
+ '0.0.0.0', '3000', Dir::pwd
89
+ )
90
+ subject.start
91
+ end
92
+
93
+ it "should set the pid" do
94
+ subject.start
95
+ subject.pid.should == 123456
96
+ end
97
+
98
+ it "should return true" do
99
+ subject.start.should be_true
100
+ end
101
+
102
+ it "should warn when server instance is already running" do
103
+ subject.start
104
+ Process.stub(:getpgid).and_return(true)
105
+ Guard::UI.should_receive(:error).with(
106
+ "Another instance of WEBrick::HTTPServer is running.")
107
+ subject.start
108
+ end
109
+
110
+ it "should open a web browser page" do
111
+ Launchy.should_receive(:open).with("http://0.0.0.0:3000")
112
+ subject.start
113
+ end
114
+
115
+ it "should not open a web browser if disabled" do
116
+ subject = Guard::WEBrick.new([], { :launchy => false })
117
+ subject.stub(:wait_for_port)
118
+ Launchy.should_not_receive(:open)
119
+ subject.start
120
+ end
121
+ end
122
+
123
+ describe "stop" do
124
+
125
+ before(:each) do
126
+ Spoon.stub(:spawnp).and_return(123456)
127
+ Process.stub(:wait)
128
+ Process.stub(:kill)
129
+ subject.stub(:wait_for_port)
130
+ subject.start
131
+ end
132
+
133
+ it "should kill the server instance" do
134
+ Process.should_receive(:kill).with("TERM", 123456)
135
+ subject.stop
136
+ end
137
+
138
+ it "should wait for the child process to exit" do
139
+ Process.should_receive(:wait).with(123456)
140
+ subject.stop
141
+ end
142
+
143
+ it "should set pid to nil" do
144
+ subject.stop
145
+ subject.pid.should be_nil
146
+ end
147
+
148
+ it "should return true" do
149
+ subject.stop.should be_true
150
+ end
151
+ end
152
+
153
+ %w{reload run_on_change}.each do |method|
154
+ describe method do
155
+
156
+ before(:each) do
157
+ Spoon.stub(:spawnp).and_return(123456)
158
+ Process.stub(:wait)
159
+ Process.stub(:kill)
160
+ subject.stub(:wait_for_port)
161
+ subject.start
162
+ end
163
+
164
+ it "should restart the server" do
165
+ subject.should_receive(:stop).ordered
166
+ subject.should_receive(:start).ordered
167
+ subject.send(method)
168
+ end
169
+
170
+ it "should return true" do
171
+ subject.send(method).should be_true
172
+ end
173
+
174
+ it "should only open a web browser the first time" do
175
+ subject = Guard::WEBrick.new([], { :launchy => true })
176
+ subject.stub(:wait_for_port)
177
+ Launchy.should_receive(:open).once
178
+ subject.start
179
+ subject.send(method)
180
+ end
181
+ end
182
+ end
183
+ end
@@ -0,0 +1,10 @@
1
+ require 'rspec'
2
+ require 'guard/webrick'
3
+
4
+ ENV["GUARD_ENV"] = 'test'
5
+
6
+ RSpec.configure do |config|
7
+ config.color_enabled = true
8
+ config.filter_run :focus => true
9
+ config.run_all_when_everything_filtered = true
10
+ end
metadata ADDED
@@ -0,0 +1,196 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-webrick
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Fletcher Nichol
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-03-19 00:00:00 -06:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: guard
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 13
30
+ segments:
31
+ - 0
32
+ - 3
33
+ version: "0.3"
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: ffi
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 25
45
+ segments:
46
+ - 1
47
+ - 0
48
+ - 7
49
+ version: 1.0.7
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: spoon
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ hash: 29
61
+ segments:
62
+ - 0
63
+ - 0
64
+ - 1
65
+ version: 0.0.1
66
+ type: :runtime
67
+ version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
69
+ name: bundler
70
+ prerelease: false
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 1
79
+ - 0
80
+ - 10
81
+ version: 1.0.10
82
+ type: :development
83
+ version_requirements: *id004
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec
86
+ prerelease: false
87
+ requirement: &id005 !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ~>
91
+ - !ruby/object:Gem::Version
92
+ hash: 27
93
+ segments:
94
+ - 2
95
+ - 5
96
+ - 0
97
+ version: 2.5.0
98
+ type: :development
99
+ version_requirements: *id005
100
+ - !ruby/object:Gem::Dependency
101
+ name: guard-rspec
102
+ prerelease: false
103
+ requirement: &id006 !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ~>
107
+ - !ruby/object:Gem::Version
108
+ hash: 23
109
+ segments:
110
+ - 0
111
+ - 2
112
+ - 0
113
+ version: 0.2.0
114
+ type: :development
115
+ version_requirements: *id006
116
+ - !ruby/object:Gem::Dependency
117
+ name: guard-bundler
118
+ prerelease: false
119
+ requirement: &id007 !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ hash: 25
125
+ segments:
126
+ - 0
127
+ - 1
128
+ - 1
129
+ version: 0.1.1
130
+ type: :development
131
+ version_requirements: *id007
132
+ description: Guard::WEBrick automatically starts and restarts WEBrick when needed.
133
+ email:
134
+ - fnichol@nichol.ca
135
+ executables: []
136
+
137
+ extensions: []
138
+
139
+ extra_rdoc_files: []
140
+
141
+ files:
142
+ - .gitignore
143
+ - CHANGELOG.rdoc
144
+ - Gemfile
145
+ - Guardfile
146
+ - LICENSE
147
+ - README.rdoc
148
+ - Rakefile
149
+ - guard-webrick.gemspec
150
+ - lib/guard/webrick.rb
151
+ - lib/guard/webrick/server.rb
152
+ - lib/guard/webrick/templates/Guardfile
153
+ - lib/guard/webrick/version.rb
154
+ - spec/guard/webrick/server_spec.rb
155
+ - spec/guard/webrick_spec.rb
156
+ - spec/spec_helper.rb
157
+ has_rdoc: true
158
+ homepage: http://rubygems.org/gems/guard-webrick
159
+ licenses: []
160
+
161
+ post_install_message:
162
+ rdoc_options: []
163
+
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ hash: 3
172
+ segments:
173
+ - 0
174
+ version: "0"
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ none: false
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ hash: 23
181
+ segments:
182
+ - 1
183
+ - 3
184
+ - 6
185
+ version: 1.3.6
186
+ requirements: []
187
+
188
+ rubyforge_project: guard-webrick
189
+ rubygems_version: 1.6.2
190
+ signing_key:
191
+ specification_version: 3
192
+ summary: Guard gem for WEBrick
193
+ test_files:
194
+ - spec/guard/webrick/server_spec.rb
195
+ - spec/guard/webrick_spec.rb
196
+ - spec/spec_helper.rb