shamrock 0.0.5 → 0.0.6
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/README.md +4 -4
- data/lib/shamrock/service.rb +11 -10
- data/lib/shamrock/version.rb +1 -1
- data/spec/shamrock/service_spec.rb +11 -1
- metadata +11 -31
data/README.md
CHANGED
@@ -22,13 +22,13 @@ You can then easily start the stub service either for the spec examples that nee
|
|
22
22
|
globally in your spec_helper file. You can replace the Proc below with any Rack application.
|
23
23
|
In some cases, we use Sinatra for stub services.
|
24
24
|
|
25
|
-
my_rack_app = proc {|env| [200, {"Content-Type" => "text/html"}, ["Hello Rack!"]]}
|
26
|
-
@service = Shamrock::Service.new(my_rack_app)
|
27
|
-
@service.start
|
25
|
+
my_rack_app = proc {|env| [200, {"Content-Type" => "text/html"}, ["Hello Rack!"]]}
|
26
|
+
@service = Shamrock::Service.new(my_rack_app)
|
27
|
+
@service.start
|
28
28
|
|
29
29
|
After you are done with the service:
|
30
30
|
|
31
|
-
@service.stop
|
31
|
+
@service.stop
|
32
32
|
|
33
33
|
## Credits
|
34
34
|
|
data/lib/shamrock/service.rb
CHANGED
@@ -3,8 +3,6 @@ module Shamrock
|
|
3
3
|
|
4
4
|
attr_reader :port, :url
|
5
5
|
|
6
|
-
PORT_RANGE = 9220..9260
|
7
|
-
|
8
6
|
DEFAULT_OPTIONS = {
|
9
7
|
handler: Rack::Handler::WEBrick,
|
10
8
|
monitor: Shamrock::Monitor
|
@@ -13,18 +11,18 @@ module Shamrock
|
|
13
11
|
def initialize(rack_app, options = {})
|
14
12
|
@rack_app = rack_app
|
15
13
|
|
16
|
-
options
|
14
|
+
@options = DEFAULT_OPTIONS.merge(options)
|
17
15
|
|
18
|
-
@handler = options
|
16
|
+
@handler = @options.delete(:handler)
|
19
17
|
|
20
|
-
@port = options
|
18
|
+
@port = @options.delete(:port) || find_available_port
|
21
19
|
@url = "http://localhost:#{port}"
|
22
|
-
@monitor = options
|
20
|
+
@monitor = @options.delete(:monitor).new(Http.new(url))
|
23
21
|
end
|
24
22
|
|
25
23
|
def start
|
26
24
|
@thread = Thread.new do
|
27
|
-
@handler.run(@rack_app, Port: port)
|
25
|
+
@handler.run(@rack_app, @options.merge(Port: port))
|
28
26
|
end
|
29
27
|
|
30
28
|
@monitor.wait_until_ready
|
@@ -36,12 +34,15 @@ module Shamrock
|
|
36
34
|
|
37
35
|
private
|
38
36
|
|
39
|
-
def
|
40
|
-
|
37
|
+
def find_available_port
|
38
|
+
server = TCPServer.new('127.0.0.1', 0)
|
39
|
+
server.addr[1]
|
40
|
+
ensure
|
41
|
+
server.close if server
|
41
42
|
end
|
42
43
|
|
43
44
|
def server_name
|
44
45
|
@rack_app.class.name
|
45
46
|
end
|
46
47
|
end
|
47
|
-
end
|
48
|
+
end
|
data/lib/shamrock/version.rb
CHANGED
@@ -11,7 +11,7 @@ describe Shamrock::Service do
|
|
11
11
|
service.port.should == 8080
|
12
12
|
end
|
13
13
|
|
14
|
-
it "should assign
|
14
|
+
it "should assign an available port if none is given to initializer" do
|
15
15
|
service = Shamrock::Service.new(@rack_app)
|
16
16
|
service.port.should_not be_nil
|
17
17
|
end
|
@@ -28,6 +28,16 @@ describe Shamrock::Service do
|
|
28
28
|
service.start
|
29
29
|
end
|
30
30
|
|
31
|
+
it "should start the server with custom handler options" do
|
32
|
+
monitor = mock('monitor', wait_until_ready: true)
|
33
|
+
monitor_class = mock('monitor class', new: monitor)
|
34
|
+
|
35
|
+
handler = mock('handler')
|
36
|
+
service = Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class, foo: 'bar')
|
37
|
+
handler.should_receive(:run).with(@rack_app, Port: service.port, foo: 'bar')
|
38
|
+
service.start
|
39
|
+
end
|
40
|
+
|
31
41
|
it "should wait for the server to become available" do
|
32
42
|
monitor = mock('monitor')
|
33
43
|
monitor_class = mock('monitor class', new: monitor)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shamrock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70120244957380 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
24
|
+
version_requirements: *70120244957380
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: rake
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70120244956820 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ~>
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: 0.9.2.2
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 0.9.2.2
|
35
|
+
version_requirements: *70120244956820
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: rspec
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70120244956220 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ~>
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: 2.10.0
|
54
44
|
type: :development
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 2.10.0
|
46
|
+
version_requirements: *70120244956220
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: simplecov
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70120244955700 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ~>
|
@@ -69,12 +54,7 @@ dependencies:
|
|
69
54
|
version: 0.6.4
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 0.6.4
|
57
|
+
version_requirements: *70120244955700
|
78
58
|
description: Shamrock helps you to use stub services in your application by starting
|
79
59
|
a rack service in a Thread
|
80
60
|
email:
|
@@ -121,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
101
|
version: '0'
|
122
102
|
requirements: []
|
123
103
|
rubyforge_project:
|
124
|
-
rubygems_version: 1.8.
|
104
|
+
rubygems_version: 1.8.17
|
125
105
|
signing_key:
|
126
106
|
specification_version: 3
|
127
107
|
summary: Facilitates setting up stub services in your application
|