shamrock 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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