shamrock 0.0.3 → 0.0.4

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/.travis.yml ADDED
@@ -0,0 +1,2 @@
1
+ rvm:
2
+ - 1.9.3
@@ -1,22 +1,33 @@
1
+ require 'logger'
2
+
1
3
  module Shamrock
2
4
  class Service
3
5
 
4
6
  attr_reader :port, :url
5
7
 
6
- def initialize(rack_app,
7
- handler = Rack::Handler::WEBrick,
8
- monitor = Shamrock::Monitor)
8
+ PORT_RANGE = 9220..9260
9
+
10
+ DEFAULT_OPTIONS = {
11
+ handler: Rack::Handler::WEBrick,
12
+ monitor: Shamrock::Monitor
13
+ }
9
14
 
15
+ def initialize(rack_app, options = {})
10
16
  @rack_app = rack_app
11
- @handler = handler
12
- @port = Port.new
13
- @url = "http://localhost:#{port.number}"
14
- @monitor = monitor.new(Shamrock::Http.new(url))
17
+
18
+ options = DEFAULT_OPTIONS.merge(options)
19
+
20
+ @handler = options[:handler]
21
+ @logger = logger
22
+
23
+ @port = options[:port] || random_port
24
+ @url = "http://localhost:#{port}"
25
+ @monitor = options[:monitor].new(Http.new(url))
15
26
  end
16
27
 
17
28
  def start
18
29
  @thread = Thread.new do
19
- @handler.run(@rack_app, Port: port.number)
30
+ @handler.run(@rack_app, Port: port, Logger: @logger)
20
31
  end
21
32
 
22
33
  @monitor.wait_until_ready
@@ -28,6 +39,14 @@ module Shamrock
28
39
 
29
40
  private
30
41
 
42
+ def logger
43
+ defined? Rails ? Rails.logger : Logger.new(STDOUT)
44
+ end
45
+
46
+ def random_port
47
+ Random.rand(PORT_RANGE)
48
+ end
49
+
31
50
  def server_name
32
51
  @rack_app.class.name
33
52
  end
@@ -1,3 +1,3 @@
1
1
  module Shamrock
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/shamrock.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'rack'
2
2
 
3
3
  require 'shamrock/version'
4
- require 'shamrock/port'
5
- require 'shamrock/service'
6
4
  require 'shamrock/monitor'
5
+ require 'shamrock/service'
7
6
  require 'shamrock/http'
@@ -5,20 +5,33 @@ describe Shamrock::Service do
5
5
  @rack_app = proc {|env| [200, {"Content-Type" => "text/html"}, "Hello Rack!"]}
6
6
  end
7
7
 
8
- class Shamrock::Service::Thread
9
- def initialize(&block)
10
- yield
8
+ describe "initialization" do
9
+ it "should use a specific port if one is given in the initializer" do
10
+ service = Shamrock::Service.new(@rack_app, port: 8080)
11
+ service.port.should == 8080
12
+ end
13
+
14
+ it "should assign a random port of none is given to initializer" do
15
+ service = Shamrock::Service.new(@rack_app)
16
+ service.port.should_not be_nil
11
17
  end
12
18
  end
13
19
 
14
20
  describe "#start" do
21
+ # In-line the service startup for this test
22
+ class Shamrock::Service::Thread
23
+ def initialize(&block)
24
+ yield
25
+ end
26
+ end
27
+
15
28
  it "should start the server" do
16
29
  monitor = mock('monitor', wait_until_ready: true)
17
30
  monitor_class = mock('monitor class', new: monitor)
18
31
 
19
32
  handler = mock('handler')
20
- service = Shamrock::Service.new(@rack_app, handler, monitor_class)
21
- handler.should_receive(:run).with(@rack_app, Port: service.port.number)
33
+ service = Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class)
34
+ handler.should_receive(:run).with(@rack_app, Port: service.port, Logger: anything)
22
35
  service.start
23
36
  end
24
37
 
@@ -29,7 +42,7 @@ describe Shamrock::Service do
29
42
  monitor.should_receive(:wait_until_ready).once
30
43
 
31
44
  handler = mock('handler', run: true)
32
- Shamrock::Service.new(@rack_app, handler, monitor_class).start
45
+ Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class).start
33
46
  end
34
47
  end
35
48
  end
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.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -85,6 +85,7 @@ extra_rdoc_files: []
85
85
  files:
86
86
  - .gitignore
87
87
  - .rspec
88
+ - .travis.yml
88
89
  - Gemfile
89
90
  - LICENSE
90
91
  - README.md
@@ -92,13 +93,11 @@ files:
92
93
  - lib/shamrock.rb
93
94
  - lib/shamrock/http.rb
94
95
  - lib/shamrock/monitor.rb
95
- - lib/shamrock/port.rb
96
96
  - lib/shamrock/service.rb
97
97
  - lib/shamrock/version.rb
98
98
  - shamrock.gemspec
99
99
  - spec/shamrock/http_spec.rb
100
100
  - spec/shamrock/monitor_spec.rb
101
- - spec/shamrock/port_spec.rb
102
101
  - spec/shamrock/service_spec.rb
103
102
  - spec/spec_helper.rb
104
103
  homepage: http://github.com/jsl/shamrock
@@ -128,6 +127,5 @@ summary: Facilitates setting up stub services in your application
128
127
  test_files:
129
128
  - spec/shamrock/http_spec.rb
130
129
  - spec/shamrock/monitor_spec.rb
131
- - spec/shamrock/port_spec.rb
132
130
  - spec/shamrock/service_spec.rb
133
131
  - spec/spec_helper.rb
data/lib/shamrock/port.rb DELETED
@@ -1,9 +0,0 @@
1
- module Shamrock
2
- class Port
3
- attr_reader :number
4
-
5
- def initialize
6
- @number = Random.rand(9220...9239)
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shamrock::Port do
4
- describe "initialization" do
5
- it "should set a number" do
6
- subject.number.should be_a(Integer)
7
- end
8
- end
9
- end