jetty-rails 0.5 → 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.
@@ -52,6 +52,23 @@ describe "binary executable with no command line arguments" do
52
52
  load File.dirname(__FILE__) + '/../bin/jetty_merb'
53
53
  end
54
54
 
55
+ it "should not set classes dir by default" do
56
+ runner = mock("runner", :null_object => true)
57
+ JettyRails::Runner.should_receive(:new) do |config|
58
+ config.should_not have_key(:classes_dir)
59
+ runner
60
+ end
61
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
62
+ end
63
+
64
+ it "should not set lib dir by default" do
65
+ runner = mock("runner", :null_object => true)
66
+ JettyRails::Runner.should_receive(:new) do |config|
67
+ config.should_not have_key(:lib_dir)
68
+ runner
69
+ end
70
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
71
+ end
55
72
  end
56
73
 
57
74
  describe "binary executable with command line arguments" do
@@ -139,4 +156,40 @@ describe "binary executable with command line arguments" do
139
156
  load File.dirname(__FILE__) + '/../bin/jetty_merb'
140
157
  end
141
158
 
159
+ it "should take --classes command line option as custom classes dir" do
160
+ ARGV[0] = '--classes'
161
+ ARGV[1] = 'build/java/classes'
162
+ runner = mock("runner", :null_object => true)
163
+ JettyRails::Runner.should_receive(:new) do |config|
164
+ config.should have_key(:classes_dir)
165
+ config[:classes_dir].should == 'build/java/classes'
166
+ runner
167
+ end
168
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
169
+ end
170
+
171
+ it "should take --lib command line option as custom jars dir" do
172
+ ARGV[0] = '--lib'
173
+ ARGV[1] = 'java/jars'
174
+ runner = mock("runner", :null_object => true)
175
+ JettyRails::Runner.should_receive(:new) do |config|
176
+ config.should have_key(:lib_dir)
177
+ config[:lib_dir].should == 'java/jars'
178
+ runner
179
+ end
180
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
181
+ end
182
+
183
+ it "should take --jars command line option as custom jars dir" do
184
+ ARGV[0] = '--jars'
185
+ ARGV[1] = 'java/jars'
186
+ runner = mock("runner", :null_object => true)
187
+ JettyRails::Runner.should_receive(:new) do |config|
188
+ config.should have_key(:lib_dir)
189
+ config[:lib_dir].should == 'java/jars'
190
+ runner
191
+ end
192
+ load File.dirname(__FILE__) + '/../bin/jetty_merb'
193
+ end
194
+
142
195
  end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe JettyRails::Runner, "with config file containing several servers and apps" do
4
+ before do
5
+ @yaml_config = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'config.yml'))
6
+ end
7
+
8
+ it "should instantiate runner with config.yml and setup servers" do
9
+ runner = JettyRails::Runner.new(@yaml_config)
10
+ runner.servers.size.should == 3
11
+ runner.servers[4000].should_not == nil
12
+ runner.servers[3000].should_not == nil
13
+ server = runner.servers[8080]
14
+ server.should_not == nil
15
+ server.app_contexts.size.should == 2
16
+ end
17
+
18
+ it "should setup correct context_paths" do
19
+ runner = JettyRails::Runner.new(@yaml_config)
20
+ runner.servers[4000].config[:context_path].should == "/testB"
21
+ runner.servers[3000].config[:context_path].should == "/testA"
22
+
23
+ runner.servers[8080].config[:context_path].should == "/"
24
+ runner.servers[8080].app_contexts[0].context_path.should == "/testC"
25
+ runner.servers[8080].app_contexts[1].context_path.should == "/testD"
26
+ end
27
+
28
+ it "should setup correct adapters" do
29
+ runner = JettyRails::Runner.new(@yaml_config)
30
+ runner.servers[4000].config[:adapter].should == :merb
31
+ runner.servers[3000].config[:adapter].should == :rails
32
+
33
+ runner.servers[8080].config[:adapter].should == :rails # default
34
+ runner.servers[8080].app_contexts[0].config[:adapter].should == :merb
35
+ runner.servers[8080].app_contexts[1].config[:adapter].should == :rails
36
+ end
37
+
38
+ it "should inherit environment" do
39
+ runner = JettyRails::Runner.new(@yaml_config)
40
+ runner.servers[4000].config[:environment].should == "production"
41
+ runner.servers[3000].config[:environment].should == "development"
42
+
43
+ runner.servers[8080].config[:environment].should == "production"
44
+ runner.servers[8080].app_contexts[0].config[:environment].should =="test"
45
+ runner.servers[8080].app_contexts[1].config[:environment].should =="production"
46
+ end
47
+
48
+ it "should setup jruby environment" do
49
+ runner = JettyRails::Runner.new(@yaml_config)
50
+ runner.servers[4000].app_contexts.first.adapter.init_params['jruby.min.runtimes'].should == '1'
51
+ runner.servers[4000].app_contexts.first.adapter.init_params['jruby.max.runtimes'].should == '2'
52
+
53
+ runner.servers[3000].app_contexts.first.adapter.init_params['jruby.min.runtimes'].should == '2'
54
+ runner.servers[3000].app_contexts.first.adapter.init_params['jruby.max.runtimes'].should == '2'
55
+ end
56
+
57
+ it "should setup the server thread pool" do
58
+ runner = JettyRails::Runner.new(@yaml_config)
59
+ runner.servers[4000].server.thread_pool.max_threads.should == 40
60
+ runner.servers[4000].server.thread_pool.min_threads.should == 1
61
+ end
62
+
63
+ it "should setup the server acceptors" do
64
+ runner = JettyRails::Runner.new(@yaml_config)
65
+ runner.servers[3000].server.connectors[0].acceptors.should == 20
66
+ end
67
+
68
+ end
@@ -7,83 +7,88 @@ describe JettyRails::Runner, "with no extra configuration (rails adapter)" do
7
7
 
8
8
  it "should receive basedir configuration" do
9
9
  runner = JettyRails::Runner.new :base => '/any/app/dir'
10
- runner.config.should have_key(:base)
11
- runner.config[:base].should == '/any/app/dir'
10
+ runner.servers[8080].config.should have_key(:base)
11
+ runner.servers[8080].config[:base].should == '/any/app/dir'
12
12
  end
13
13
 
14
14
  it "should default to development environment" do
15
15
  runner = JettyRails::Runner.new :base => Dir.pwd
16
- runner.config.should have_key(:environment)
17
- runner.config[:environment].should == 'development'
18
- runner.app_context.init_params['rails.env'].should == 'development'
16
+ runner.servers[8080].config.should have_key(:environment)
17
+ runner.servers[8080].config[:environment].should == 'development'
18
+ runner.servers[8080].app_contexts.first.init_params['rails.env'].should == 'development'
19
19
  end
20
20
 
21
21
  it "should default to the root context path" do
22
22
  runner = JettyRails::Runner.new :base => Dir.pwd
23
- runner.config.should have_key(:context_path)
24
- runner.config[:context_path].should == '/'
25
- runner.app_context.context_path.should == '/'
23
+ runner.servers[8080].config.should have_key(:context_path)
24
+ runner.servers[8080].config[:context_path].should == '/'
25
+ runner.servers[8080].app_contexts.first.context_path.should == '/'
26
26
  end
27
27
 
28
28
  it "should set server default port to 8080" do
29
29
  runner = JettyRails::Runner.new :base => Dir.pwd
30
- runner.config.should have_key(:port)
31
- runner.config[:port].should == 8080
30
+ runner.servers[8080].config.should have_key(:port)
31
+ runner.servers[8080].config[:port].should == 8080
32
32
  end
33
33
 
34
34
  it "should default lib_dir to lib/*.jar" do
35
35
  runner = JettyRails::Runner.new :base => Dir.pwd
36
- runner.config.should have_key(:lib_dir)
37
- runner.config[:lib_dir].should == 'lib/**/*.jar'
36
+ runner.servers[8080].config.should have_key(:lib_dir)
37
+ runner.servers[8080].config[:lib_dir].should == 'lib/**/*.jar'
38
38
  end
39
39
 
40
40
  it "should set rails root" do
41
41
  runner = JettyRails::Runner.new :base => Dir.pwd
42
- runner.app_context.init_params['rails.root'].should == '/'
42
+ runner.servers[8080].app_contexts.first.init_params['rails.root'].should == '/'
43
43
  end
44
44
 
45
45
  it "should set public root" do
46
46
  runner = JettyRails::Runner.new :base => Dir.pwd
47
- runner.app_context.init_params['public.root'].should == '/public'
47
+ runner.servers[8080].app_contexts.first.init_params['public.root'].should == '/public'
48
48
  end
49
49
 
50
50
  it "should set gem path" do
51
- runner = JettyRails::Runner.new :base => Dir.pwd
52
- runner.app_context.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
51
+ original = ENV['GEM_PATH']
52
+ ENV['GEM_PATH'] = nil
53
+ begin
54
+ runner = JettyRails::Runner.new :base => Dir.pwd
55
+ runner.servers[8080].app_contexts.first.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
56
+ ensure
57
+ ENV['GEM_PATH'] = original
58
+ end
53
59
  end
54
60
 
61
+ it "should set gem path from environment" do
62
+ original = ENV['GEM_PATH']
63
+ ENV['GEM_PATH'] = "/usr/lib/ruby/gems/1.8/gems"
64
+ begin
65
+ runner = JettyRails::Runner.new :base => Dir.pwd
66
+ runner.servers[8080].app_contexts.first.init_params['gem.path'].should == ENV['GEM_PATH']
67
+ ensure
68
+ ENV['GEM_PATH'] = original
69
+ end
70
+ end
71
+
72
+
55
73
  it "should install RailsServletContextListener" do
56
74
  runner = JettyRails::Runner.new :base => Dir.pwd
57
- listeners = runner.app_context.event_listeners
75
+ listeners = runner.servers[8080].app_contexts.first.event_listeners
58
76
  listeners.size.should == 1
59
77
  listeners[0].should be_kind_of(JettyRails::Rack::RailsServletContextListener)
60
78
  end
61
-
62
- it "should install RackFilter" do
63
- context = mock("web application context", :null_object => true)
64
- server = JettyRails::Jetty::Server.new
65
- context.stub!(:getServer).and_return(server)
66
- JettyRails::Jetty::Handler::WebAppContext.should_receive(:new).and_return(context)
67
- context.should_receive(:add_filter).once do |filter_holder, url_pattern, dispatches|
68
- filter_holder.filter.should be_kind_of(JettyRails::Rack::RackFilter)
69
- url_pattern.should == '/*'
70
- dispatches.should == JettyRails::Jetty::Context::DEFAULT
71
- end
72
- runner = JettyRails::Runner.new :base => Dir.pwd
73
- end
74
-
79
+
75
80
  it "should have handlers for static and dynamic content" do
76
81
  runner = JettyRails::Runner.new :base => Dir.pwd
77
- runner.server.handlers.size.should == 2
78
- resource_handlers = runner.server.getChildHandlersByClass(JettyRails::Jetty::Handler::ResourceHandler)
82
+ runner.servers[8080].server.handlers.size.should == 2
83
+ resource_handlers = runner.servers[8080].server.getChildHandlersByClass(JettyRails::Jetty::Handler::ResourceHandler)
79
84
  resource_handlers.size.should == 1
80
- webapp_handlers = runner.server.getChildHandlersByClass(JettyRails::Jetty::Handler::WebAppContext)
85
+ webapp_handlers = runner.servers[8080].server.getChildHandlersByClass(JettyRails::Jetty::Handler::WebAppContext)
81
86
  webapp_handlers.size.should == 1
82
87
  end
83
88
 
84
89
  it "should delegate to rails handler if requested dir has no welcome file" do
85
90
  runner = JettyRails::Runner.new :base => Dir.pwd
86
- delegate_handler = runner.server.handlers[0]
91
+ delegate_handler = runner.servers[8080].server.handlers[0]
87
92
  delegate_handler.should be_kind_of(JettyRails::Handler::DelegateOnErrorsHandler)
88
93
  end
89
94
 
@@ -93,28 +98,28 @@ describe JettyRails::Runner, "with custom configuration" do
93
98
 
94
99
  it "should allow to override the environment" do
95
100
  runner = JettyRails::Runner.new :base => Dir.pwd, :environment => 'production'
96
- runner.config.should have_key(:environment)
97
- runner.config[:environment].should == 'production'
98
- runner.app_context.init_params['rails.env'].should == 'production'
101
+ runner.servers[8080].config.should have_key(:environment)
102
+ runner.servers[8080].config[:environment].should == 'production'
103
+ runner.servers[8080].app_contexts.first.init_params['rails.env'].should == 'production'
99
104
  end
100
105
 
101
106
  it "should allow to override the context path" do
102
107
  runner = JettyRails::Runner.new :base => Dir.pwd, :context_path => "/myapp"
103
- runner.config.should have_key(:context_path)
104
- runner.config[:context_path].should == '/myapp'
105
- runner.app_context.context_path.should == '/myapp'
108
+ runner.servers[8080].config.should have_key(:context_path)
109
+ runner.servers[8080].config[:context_path].should == '/myapp'
110
+ runner.servers[8080].app_contexts.first.context_path.should == '/myapp'
106
111
  end
107
112
 
108
113
  it "should allow to override the server port" do
109
114
  runner = JettyRails::Runner.new :base => Dir.pwd, :port => 8585
110
- runner.config.should have_key(:port)
111
- runner.config[:port].should == 8585
112
- runner.server.connectors[0].port.should == 8585
115
+ runner.servers[8585].config.should have_key(:port)
116
+ runner.servers[8585].config[:port].should == 8585
117
+ runner.servers[8585].server.connectors[0].port.should == 8585
113
118
  end
114
119
 
115
120
  it "should handle custom context paths for static and dynamic content" do
116
121
  runner = JettyRails::Runner.new :base => Dir.pwd, :context_path => "/myapp"
117
- context_handlers = runner.server.getChildHandlersByClass(JettyRails::Jetty::Handler::ContextHandler)
122
+ context_handlers = runner.servers[8080].server.getChildHandlersByClass(JettyRails::Jetty::Handler::ContextHandler)
118
123
  context_handlers.size.should == 2 # one for static, one for dynamic
119
124
  end
120
125
  end
@@ -123,30 +128,35 @@ describe JettyRails::Runner, "with merb adapter" do
123
128
 
124
129
  it "should set merb root" do
125
130
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
126
- runner.app_context.init_params['merb.root'].should == '/'
131
+ runner.servers[8080].app_contexts.first.init_params['merb.root'].should == '/'
127
132
  end
128
133
 
129
134
  it "should set public root" do
130
135
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
131
- runner.app_context.init_params['public.root'].should == '/public'
136
+ runner.servers[8080].app_contexts.first.init_params['public.root'].should == '/public'
132
137
  end
133
138
 
134
139
  it "should set gem path" do
135
- runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
136
- runner.app_context.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
140
+ original = ENV['GEM_PATH']
141
+ ENV['GEM_PATH'] = nil
142
+ begin
143
+ runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
144
+ runner.servers[8080].app_contexts.first.init_params['gem.path'].should == 'tmp/war/WEB-INF/gems'
145
+ ensure
146
+ ENV['GEM_PATH'] = original
147
+ end
137
148
  end
138
149
 
139
150
  it "should set merb environment to development" do
140
151
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
141
- runner.app_context.init_params['merb.environment'].should == 'development'
152
+ runner.servers[8080].app_contexts.first.init_params['merb.environment'].should == 'development'
142
153
  end
143
154
 
144
155
  it "should install MerbServletContextListener and SignalHandler" do
145
156
  runner = JettyRails::Runner.new :adapter => :merb, :base => Dir.pwd
146
- listeners = runner.app_context.event_listeners
157
+ listeners = runner.servers[8080].app_contexts.first.event_listeners
147
158
  listeners.size.should == 2
148
159
  listeners[0].should be_kind_of(JettyRails::Rack::MerbServletContextListener)
149
160
  listeners[1].should be_kind_of(JettyRails::Adapters::MerbAdapter::SignalHandler)
150
161
  end
151
162
  end
152
-
@@ -0,0 +1,13 @@
1
+ ---
2
+ :servers:
3
+ - :context_path: /testB
4
+ :adapter: :rails
5
+ :base: jetty_rails_proj
6
+ :environment: development
7
+ :port: 3000
8
+ :environment: production
9
+ :jruby_min_runtimes: 1
10
+ :jruby_max_runtimes: 2
11
+ :thread_pool_max: 40
12
+ :thread_pool_min: 1
13
+ :acceptor_size: 20
@@ -0,0 +1,28 @@
1
+ ---
2
+ :servers:
3
+ - :context_path: /testA
4
+ :base: jetty_rails_proj_2
5
+ :adapter: :rails
6
+ :environment: development
7
+ :port: 2000
8
+ - :context_path: /testB
9
+ :adapter: :rails
10
+ :base: jetty_rails_proj
11
+ :environment: production
12
+ :port: 3000
13
+ - :port: 4000
14
+ :apps:
15
+ - :context_path: /testB
16
+ :adapter: :rails
17
+ :base: jetty_rails_proj
18
+ :environment: development
19
+ - :context_path: /testA
20
+ :adapter: :rails
21
+ :base: jetty_rails_proj_2
22
+ :environment: production
23
+ :environment: production
24
+ :jruby_min_runtimes: 1
25
+ :jruby_max_runtimes: 2
26
+ :thread_pool_max: 40
27
+ :thread_pool_min: 1
28
+ :acceptor_size: 20
@@ -52,6 +52,23 @@ describe "binary executable with no command line arguments" do
52
52
  load File.dirname(__FILE__) + '/../bin/jetty_rails'
53
53
  end
54
54
 
55
+ it "should not set classes dir by default" do
56
+ runner = mock("runner", :null_object => true)
57
+ JettyRails::Runner.should_receive(:new) do |config|
58
+ config.should_not have_key(:classes_dir)
59
+ runner
60
+ end
61
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
62
+ end
63
+
64
+ it "should not set lib dir by default" do
65
+ runner = mock("runner", :null_object => true)
66
+ JettyRails::Runner.should_receive(:new) do |config|
67
+ config.should_not have_key(:lib_dir)
68
+ runner
69
+ end
70
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
71
+ end
55
72
  end
56
73
 
57
74
  describe "binary executable with command line arguments" do
@@ -139,4 +156,40 @@ describe "binary executable with command line arguments" do
139
156
  load File.dirname(__FILE__) + '/../bin/jetty_rails'
140
157
  end
141
158
 
159
+ it "should take --classes command line option as custom classes dir" do
160
+ ARGV[0] = '--classes'
161
+ ARGV[1] = 'build/java/classes'
162
+ runner = mock("runner", :null_object => true)
163
+ JettyRails::Runner.should_receive(:new) do |config|
164
+ config.should have_key(:classes_dir)
165
+ config[:classes_dir].should == 'build/java/classes'
166
+ runner
167
+ end
168
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
169
+ end
170
+
171
+ it "should take --lib command line option as custom jars dir" do
172
+ ARGV[0] = '--lib'
173
+ ARGV[1] = 'java/jars'
174
+ runner = mock("runner", :null_object => true)
175
+ JettyRails::Runner.should_receive(:new) do |config|
176
+ config.should have_key(:lib_dir)
177
+ config[:lib_dir].should == 'java/jars'
178
+ runner
179
+ end
180
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
181
+ end
182
+
183
+ it "should take --jars command line option as custom jars dir" do
184
+ ARGV[0] = '--jars'
185
+ ARGV[1] = 'java/jars'
186
+ runner = mock("runner", :null_object => true)
187
+ JettyRails::Runner.should_receive(:new) do |config|
188
+ config.should have_key(:lib_dir)
189
+ config[:lib_dir].should == 'java/jars'
190
+ runner
191
+ end
192
+ load File.dirname(__FILE__) + '/../bin/jetty_rails'
193
+ end
194
+
142
195
  end
@@ -1 +1,2 @@
1
- --colour
1
+ --colour
2
+ --format specdoc