trinidad 0.8.3 → 0.9.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/History.txt +8 -0
- data/README.rdoc +4 -2
- data/VERSION +1 -1
- data/bin/trinidad +2 -2
- data/lib/trinidad.rb +1 -0
- data/lib/trinidad/command_line_parser.rb +40 -15
- data/lib/trinidad/extensions.rb +1 -1
- data/lib/trinidad/rackup_web.xml +17 -0
- data/lib/trinidad/rackup_web_app.rb +3 -1
- data/lib/trinidad/rails_web.xml +17 -0
- data/lib/trinidad/rails_web_app.rb +2 -0
- data/lib/trinidad/server.rb +18 -9
- data/lib/trinidad/web_app.rb +14 -25
- data/spec/trinidad/command_line_parser_spec.rb +61 -41
- data/spec/trinidad/fakeapp.rb +24 -0
- data/spec/trinidad/server_spec.rb +12 -4
- data/spec/trinidad/web_app_spec.rb +35 -15
- metadata +22 -7
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
== 0.9.0 (2010-04-28)
|
2
|
+
|
3
|
+
* Tomcat updated to version 6.0.26, added constant to get its version.
|
4
|
+
* Jars cleaned, 300kb less to load :)
|
5
|
+
* Default configuration file name moved from tomcat.yml to trinidad.yml
|
6
|
+
* Fixes bug merging configuration files
|
7
|
+
* Configuring application through web.xml to avoid weird lifecycle problems
|
8
|
+
|
1
9
|
== 0.8.3 (2010-04-17)
|
2
10
|
|
3
11
|
* Extensions improvements:
|
data/README.rdoc
CHANGED
@@ -26,7 +26,7 @@ Trinidad allows you to configure some parameters when the server is started from
|
|
26
26
|
* --rackup [RACKUP_FILE] => run a provided rackup file instead of a rails application, by default it's config.ru.
|
27
27
|
* --public PUBLIC_DIR => specify the public directory for your application, by default it's 'public'.
|
28
28
|
* -t, --threadsafe => shortcut to work in threadsafe mode. Setting jruby_min_runtimes and jruby_max_runtimes to 1 in the configuration file the server behaves as the same way.
|
29
|
-
* -l, --load
|
29
|
+
* -l, --load EXTENSION_NAME => loads an extension to use its command line options.
|
30
30
|
|
31
31
|
The server can also be configured from a yaml file. If a file is not especified, the server tries to load the file <em>config/tomcat.yml</em>. Within this file you can add other options like jruby.min.runtimes(:jruby_min_runtimes) or jruby.max.runtimes(:jruby_max_runtimes).
|
32
32
|
|
@@ -42,8 +42,10 @@ Other advanced options can be found in the wiki: http://wiki.github.com/calavera
|
|
42
42
|
From the version 0.8.0 Trinidad allows to extend the server with more Tomcat features, here there is a list with the current available extensions:
|
43
43
|
|
44
44
|
* Database connection pooling: http://github.com/calavera/trinidad-dbpool
|
45
|
+
* Daemon, run Trinidad as a daemon: http://github.com/calavera/trinidad_daemon_extension
|
46
|
+
* Hot deploy, do hot deploys monitorizing a temporal file, ala Passenger: http://github.com/calavera/trinidad_hotdeploy_extension
|
45
47
|
|
46
|
-
You can find further information on how to write your
|
48
|
+
You can find further information on how to write your own extension in the wiki: http://wiki.github.com/calavera/trinidad/extensions
|
47
49
|
|
48
50
|
== Copyright
|
49
51
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9.0
|
data/bin/trinidad
CHANGED
data/lib/trinidad.rb
CHANGED
@@ -1,22 +1,44 @@
|
|
1
1
|
module Trinidad
|
2
2
|
require 'optparse'
|
3
3
|
require 'yaml'
|
4
|
-
|
4
|
+
|
5
5
|
class CommandLineParser
|
6
|
+
attr_reader :default_options
|
7
|
+
|
8
|
+
def self.parse(argv)
|
9
|
+
CommandLineParser.new.parse!(argv)
|
10
|
+
end
|
6
11
|
|
7
|
-
def
|
8
|
-
default_options = {
|
12
|
+
def initialize
|
13
|
+
@default_options = {
|
9
14
|
:port => 3000,
|
10
15
|
:environment => 'development',
|
11
16
|
:context_path => '/',
|
12
17
|
:libs_dir => 'lib',
|
13
18
|
:classes_dir => 'classes',
|
14
|
-
:config => 'config/tomcat.yml',
|
15
19
|
:ssl_port => 8443,
|
16
20
|
:ajp_port => 8009
|
17
21
|
}
|
18
|
-
|
19
|
-
|
22
|
+
end
|
23
|
+
|
24
|
+
def parse!(argv)
|
25
|
+
begin
|
26
|
+
options_parser.parse!(argv)
|
27
|
+
rescue OptionParser::InvalidOption => e
|
28
|
+
p e, options_parser
|
29
|
+
exit(1)
|
30
|
+
end
|
31
|
+
|
32
|
+
if default_options.has_key?(:config)
|
33
|
+
config_options = YAML.load_file(default_options[:config])
|
34
|
+
default_options.deep_merge!(config_options.symbolize!)
|
35
|
+
end
|
36
|
+
|
37
|
+
default_options
|
38
|
+
end
|
39
|
+
|
40
|
+
def options_parser
|
41
|
+
@parser ||= OptionParser.new do |opts|
|
20
42
|
opts.banner = 'Trinidad server default options:'
|
21
43
|
opts.separator ''
|
22
44
|
|
@@ -43,7 +65,7 @@ module Trinidad
|
|
43
65
|
opts.on('--classes', '--classes CLASSES_DIR', 'Directory containing classes used by the application',
|
44
66
|
"default: #{default_options[:classes_dir]}") do |v|
|
45
67
|
default_options[:classes_dir] = v
|
46
|
-
end
|
68
|
+
end
|
47
69
|
|
48
70
|
opts.on('-s', '--ssl [SSL_PORT]', 'Enable secure socket layout',
|
49
71
|
"default port: #{default_options[:ssl_port]}") do |v|
|
@@ -58,14 +80,21 @@ module Trinidad
|
|
58
80
|
end
|
59
81
|
|
60
82
|
opts.on('-f', '--config [CONFIG_FILE]', 'Configuration file',
|
61
|
-
"default: #{default_options[:config]}") do |
|
62
|
-
default_options[:config] =
|
63
|
-
|
83
|
+
"default: #{default_options[:config]}") do |file|
|
84
|
+
default_options[:config] = 'config/trinidad.yml'
|
85
|
+
|
86
|
+
if file
|
87
|
+
default_options[:config] = file
|
88
|
+
elsif File.exist?('config/tomcat.yml') && !File.exist?(default_options[:config])
|
89
|
+
puts "[WARNING] Default configuration file name has been moved to trinidad.yml, tomcat.yml will not be supported in future versions."
|
90
|
+
puts "\tYou still can use tomcat.yml passing it as the file name to this option: -f config/tomcat.yml"
|
91
|
+
default_options[:config] = 'config/tomcat.yml'
|
92
|
+
end
|
64
93
|
end
|
65
94
|
|
66
95
|
opts.on('-r', '--rackup [RACKUP_FILE]', 'Rackup configuration file',
|
67
96
|
'default: config.ru') do |v|
|
68
|
-
default_options[:rackup] = v || 'config.ru'
|
97
|
+
default_options[:rackup] = v || 'config.ru'
|
69
98
|
end
|
70
99
|
|
71
100
|
opts.on('--public', '--public DIRECTORY', 'Public directory', 'default: public') do |v|
|
@@ -90,11 +119,7 @@ module Trinidad
|
|
90
119
|
puts opts
|
91
120
|
exit
|
92
121
|
end
|
93
|
-
|
94
|
-
opts.parse!(ARGV)
|
95
122
|
end
|
96
|
-
|
97
|
-
default_options
|
98
123
|
end
|
99
124
|
end
|
100
125
|
end
|
data/lib/trinidad/extensions.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<web-app>
|
3
|
+
<servlet>
|
4
|
+
<servlet-name>RackServlet</servlet-name>
|
5
|
+
<servlet-class>org.jruby.rack.RackServlet</servlet-class>
|
6
|
+
</servlet>
|
7
|
+
|
8
|
+
<servlet-mapping>
|
9
|
+
<servlet-name>RackServlet</servlet-name>
|
10
|
+
<url-pattern>/*</url-pattern>
|
11
|
+
</servlet-mapping>
|
12
|
+
|
13
|
+
<listener>
|
14
|
+
<listener-class>org.jruby.rack.RackServletContextListener</listener-class>
|
15
|
+
</listener>
|
16
|
+
|
17
|
+
</web-app>
|
@@ -4,7 +4,7 @@ module Trinidad
|
|
4
4
|
def add_init_params
|
5
5
|
super
|
6
6
|
add_parameter_unless_exist('rackup', rackup_script)
|
7
|
-
end
|
7
|
+
end
|
8
8
|
|
9
9
|
def context_listener
|
10
10
|
'org.jruby.rack.RackServletContextListener'
|
@@ -13,5 +13,7 @@ module Trinidad
|
|
13
13
|
def rackup_script
|
14
14
|
IO.read(File.join(@app[:web_app_dir], @app[:rackup]))
|
15
15
|
end
|
16
|
+
|
17
|
+
def provided_web_xml; 'rackup_web.xml'; end
|
16
18
|
end
|
17
19
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<web-app>
|
3
|
+
<servlet>
|
4
|
+
<servlet-name>RackServlet</servlet-name>
|
5
|
+
<servlet-class>org.jruby.rack.RackServlet</servlet-class>
|
6
|
+
</servlet>
|
7
|
+
|
8
|
+
<servlet-mapping>
|
9
|
+
<servlet-name>RackServlet</servlet-name>
|
10
|
+
<url-pattern>/*</url-pattern>
|
11
|
+
</servlet-mapping>
|
12
|
+
|
13
|
+
<listener>
|
14
|
+
<listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
|
15
|
+
</listener>
|
16
|
+
|
17
|
+
</web-app>
|
data/lib/trinidad/server.rb
CHANGED
@@ -31,8 +31,9 @@ module Trinidad
|
|
31
31
|
|
32
32
|
def load_tomcat_server
|
33
33
|
@tomcat = Trinidad::Tomcat::Tomcat.new
|
34
|
-
@tomcat.
|
35
|
-
@tomcat.
|
34
|
+
@tomcat.port = @config[:port].to_i
|
35
|
+
@tomcat.base_dir = Dir.pwd
|
36
|
+
@tomcat.host.app_base = Dir.pwd
|
36
37
|
enable_naming
|
37
38
|
|
38
39
|
add_ssl_connector if ssl_enabled?
|
@@ -42,20 +43,20 @@ module Trinidad
|
|
42
43
|
end
|
43
44
|
|
44
45
|
def create_web_apps
|
45
|
-
@config[:web_apps].each do |name,
|
46
|
-
|
47
|
-
|
46
|
+
@config[:web_apps].each do |name, app_config|
|
47
|
+
app_config[:context_path] ||= (name.to_s == 'default' ? '/' : "/#{name.to_s}")
|
48
|
+
app_config[:web_app_dir] ||= Dir.pwd
|
48
49
|
|
49
|
-
|
50
|
+
app_context = @tomcat.addWebapp(app_config[:context_path], app_config[:web_app_dir])
|
51
|
+
remove_defaults(app_context)
|
50
52
|
|
51
|
-
web_app = WebApp.create(
|
53
|
+
web_app = WebApp.create(app_context, @config, app_config)
|
52
54
|
|
53
55
|
web_app.load_default_web_xml
|
54
|
-
web_app.
|
56
|
+
web_app.configure_rack
|
55
57
|
web_app.configure_extensions(@tomcat)
|
56
58
|
web_app.add_context_loader
|
57
59
|
web_app.add_init_params
|
58
|
-
web_app.add_web_dir_resources
|
59
60
|
|
60
61
|
web_app.add_rack_context_listener
|
61
62
|
end
|
@@ -158,5 +159,13 @@ module Trinidad
|
|
158
159
|
JSystem.setProperty(JContext.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory")
|
159
160
|
end
|
160
161
|
end
|
162
|
+
|
163
|
+
def remove_defaults(app_context)
|
164
|
+
default_servlet = app_context.find_child('default')
|
165
|
+
app_context.remove_child(default_servlet) if default_servlet
|
166
|
+
|
167
|
+
jsp_servlet = app_context.find_child('jsp')
|
168
|
+
app_context.remove_child(jsp_servlet) if jsp_servlet
|
169
|
+
end
|
161
170
|
end
|
162
171
|
end
|
data/lib/trinidad/web_app.rb
CHANGED
@@ -14,18 +14,14 @@ module Trinidad
|
|
14
14
|
@class_loader = org.jruby.util.JRubyClassLoader.new(JRuby.runtime.jruby_class_loader)
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
unless
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
filter_map.addURLPattern('/*')
|
26
|
-
|
27
|
-
@context.addFilterDef(filter_def)
|
28
|
-
@context.addFilterMap(filter_map)
|
17
|
+
def configure_rack(servlet_class = 'org.jruby.rack.RackServlet', servlet_name = 'RackServlet')
|
18
|
+
unless rack_configured?
|
19
|
+
wrapper = @context.createWrapper()
|
20
|
+
wrapper.setServletClass(servlet_class)
|
21
|
+
wrapper.setName(servlet_name)
|
22
|
+
|
23
|
+
@context.addChild(wrapper)
|
24
|
+
@context.addServletMapping('/*', servlet_name)
|
29
25
|
end
|
30
26
|
end
|
31
27
|
|
@@ -46,11 +42,6 @@ module Trinidad
|
|
46
42
|
add_parameter_unless_exist('public.root', File.join('/', public_root))
|
47
43
|
end
|
48
44
|
|
49
|
-
def add_web_dir_resources
|
50
|
-
doc_base = File.join(@app[:web_app_dir], public_root)
|
51
|
-
@context.setDocBase(doc_base) if File.exist?(doc_base)
|
52
|
-
end
|
53
|
-
|
54
45
|
def add_rack_context_listener
|
55
46
|
unless rack_listener_configured?
|
56
47
|
@context.addApplicationListener(context_listener)
|
@@ -72,19 +63,17 @@ module Trinidad
|
|
72
63
|
|
73
64
|
def load_default_web_xml
|
74
65
|
file = File.expand_path(File.join(@app[:web_app_dir], default_web_xml))
|
66
|
+
file = File.expand_path("../#{provided_web_xml}", __FILE__) unless File.exist?(file)
|
75
67
|
|
76
|
-
|
77
|
-
@context.setDefaultWebXml(file)
|
78
|
-
@context.setDefaultContextXml(file)
|
68
|
+
@context.setDefaultWebXml(file)
|
79
69
|
|
80
|
-
|
81
|
-
|
70
|
+
context_config = Trinidad::Tomcat::ContextConfig.new
|
71
|
+
context_config.setDefaultWebXml(file)
|
82
72
|
|
83
|
-
|
84
|
-
end
|
73
|
+
@context.addLifecycleListener(context_config)
|
85
74
|
end
|
86
75
|
|
87
|
-
def
|
76
|
+
def rack_configured?
|
88
77
|
return false if @context.getDefaultWebXml().nil?
|
89
78
|
|
90
79
|
web_xml = IO.read(@context.getDefaultWebXml()).gsub(/\s+/, '')
|
@@ -1,99 +1,119 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + '/fakeapp'
|
3
|
+
|
4
|
+
include FakeApp
|
2
5
|
|
3
6
|
describe Trinidad::CommandLineParser do
|
4
|
-
|
5
|
-
|
7
|
+
subject { Trinidad::CommandLineParser }
|
8
|
+
|
9
|
+
it "overrides classes option" do
|
10
|
+
args = "--classes my_classes".split
|
6
11
|
|
7
|
-
options =
|
12
|
+
options = subject.parse(args)
|
8
13
|
options[:classes_dir].should == 'my_classes'
|
9
14
|
end
|
10
15
|
|
11
|
-
it "
|
12
|
-
|
16
|
+
it "overrides libs option with lib option" do
|
17
|
+
args = "--lib my_libs".split
|
13
18
|
|
14
|
-
options =
|
19
|
+
options = subject.parse(args)
|
15
20
|
options[:libs_dir].should == 'my_libs'
|
16
21
|
end
|
17
22
|
|
18
|
-
it "
|
19
|
-
|
23
|
+
it "overrides libs option with jar option" do
|
24
|
+
args = "--jars my_jars".split
|
20
25
|
|
21
|
-
options =
|
26
|
+
options = subject.parse(args)
|
22
27
|
options[:libs_dir].should == 'my_jars'
|
23
28
|
end
|
24
29
|
|
25
|
-
it "
|
26
|
-
|
30
|
+
it "uses config/trinidad.yml as the default configuration file name" do
|
31
|
+
FakeFS do
|
32
|
+
create_default_config_file
|
33
|
+
options = subject.parse(['-f'])
|
34
|
+
|
35
|
+
options[:config].should == 'config/trinidad.yml'
|
36
|
+
options[:port].should == 8080
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "overrides the config file when it's especified" do
|
41
|
+
FakeFS do
|
42
|
+
create_custom_config_file
|
43
|
+
args = "-f config/tomcat.yml".split
|
27
44
|
|
28
|
-
|
29
|
-
|
45
|
+
options = subject.parse(args)
|
46
|
+
options[:environment].should == 'production'
|
47
|
+
end
|
30
48
|
end
|
31
49
|
|
32
|
-
it "
|
33
|
-
|
50
|
+
it "adds default ssl port to options" do
|
51
|
+
args = '--ssl'.split
|
34
52
|
|
35
|
-
options =
|
53
|
+
options = subject.parse(args)
|
36
54
|
options[:ssl].should == {:port => 8443}
|
37
55
|
end
|
38
56
|
|
39
|
-
it "
|
40
|
-
|
57
|
+
it "adds custom ssl port to options" do
|
58
|
+
args = '--ssl 8843'.split
|
41
59
|
|
42
|
-
options =
|
60
|
+
options = subject.parse(args)
|
43
61
|
options[:ssl].should == {:port => 8843}
|
44
62
|
end
|
45
63
|
|
46
|
-
it "
|
47
|
-
|
64
|
+
it "adds ajp connection with default port to options" do
|
65
|
+
args = '--ajp'.split
|
48
66
|
|
49
|
-
options =
|
67
|
+
options = subject.parse(args)
|
50
68
|
options[:ajp].should == {:port => 8009}
|
51
69
|
end
|
52
70
|
|
53
|
-
it "
|
54
|
-
|
71
|
+
it "adds ajp connection with coustom port to options" do
|
72
|
+
args = '--ajp 8099'.split
|
55
73
|
|
56
|
-
options =
|
74
|
+
options = subject.parse(args)
|
57
75
|
options[:ajp].should == {:port => 8099}
|
58
76
|
end
|
59
77
|
|
60
|
-
it "
|
61
|
-
|
78
|
+
it "merges ajp options from the config file" do
|
79
|
+
FakeFS do
|
80
|
+
create_custom_config_file
|
81
|
+
args = "--ajp 8099 -f config/tomcat.yml".split
|
62
82
|
|
63
|
-
|
64
|
-
|
65
|
-
|
83
|
+
options = subject.parse(args)
|
84
|
+
options[:ajp][:port].should == 8099
|
85
|
+
options[:ajp][:secure].should == true
|
86
|
+
end
|
66
87
|
end
|
67
88
|
|
68
89
|
it "uses default rackup file to configure the server" do
|
69
|
-
|
70
|
-
options =
|
90
|
+
args = "--rackup".split
|
91
|
+
options = subject.parse(args)
|
71
92
|
options[:rackup].should == 'config.ru'
|
72
93
|
end
|
73
94
|
|
74
95
|
it "uses a custom rackup file if it's provided" do
|
75
|
-
|
76
|
-
options =
|
96
|
+
args = "--rackup custom_config.ru".split
|
97
|
+
options = subject.parse(args)
|
77
98
|
options[:rackup].should == 'custom_config.ru'
|
78
99
|
end
|
79
100
|
|
80
101
|
it "uses a custom public directory" do
|
81
|
-
|
82
|
-
options =
|
102
|
+
args = "--public web".split
|
103
|
+
options = subject.parse(args)
|
83
104
|
options[:public].should == 'web'
|
84
105
|
end
|
85
106
|
|
86
107
|
it "works on threadsafe mode using the shortcut" do
|
87
|
-
|
88
|
-
options =
|
108
|
+
args = '--threadsafe'.split
|
109
|
+
options = subject.parse(args)
|
89
110
|
options[:jruby_min_runtimes].should == 1
|
90
111
|
options[:jruby_max_runtimes].should == 1
|
91
112
|
end
|
92
113
|
|
93
114
|
it "loads a given extension to add its options to the parser" do
|
94
|
-
|
95
|
-
options =
|
115
|
+
args = "--load foo --foo".split
|
116
|
+
options = subject.parse(args)
|
96
117
|
options.has_key?(:bar).should be_true
|
97
|
-
|
98
118
|
end
|
99
119
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'fakefs/safe'
|
2
|
+
module FakeApp
|
3
|
+
def create_default_config_file
|
4
|
+
@default ||= config_file 'config/trinidad.yml', <<-EOF
|
5
|
+
---
|
6
|
+
port: 8080
|
7
|
+
EOF
|
8
|
+
end
|
9
|
+
|
10
|
+
def create_custom_config_file
|
11
|
+
@custom ||= config_file 'config/tomcat.yml', <<-EOF
|
12
|
+
---
|
13
|
+
environment: production
|
14
|
+
ajp:
|
15
|
+
port: 8099
|
16
|
+
secure: true
|
17
|
+
EOF
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
def config_file(path, options)
|
22
|
+
File.open(path, 'w') {|io| io.write(options) }
|
23
|
+
end
|
24
|
+
end
|
@@ -19,25 +19,25 @@ describe Trinidad::Server do
|
|
19
19
|
|
20
20
|
it "should have ssl disabled when config param is nil" do
|
21
21
|
server = Trinidad::Server.new
|
22
|
-
server.ssl_enabled?.should
|
22
|
+
server.ssl_enabled?.should be_false
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should have ajp disabled when config param is nil" do
|
26
26
|
server = Trinidad::Server.new
|
27
|
-
server.ajp_enabled?.should
|
27
|
+
server.ajp_enabled?.should be_false
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should have ssl enabled when config param is a number" do
|
31
31
|
server = Trinidad::Server.new({:ssl => {:port => 8443},
|
32
32
|
:web_app_dir => MOCK_WEB_APP_DIR})
|
33
33
|
|
34
|
-
server.ssl_enabled?.should
|
34
|
+
server.ssl_enabled?.should be_true
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should have ajp enabled when config param is a number" do
|
38
38
|
server = Trinidad::Server.new({:ajp => {:port => 8009}})
|
39
39
|
|
40
|
-
server.ajp_enabled?.should
|
40
|
+
server.ajp_enabled?.should be_true
|
41
41
|
end
|
42
42
|
|
43
43
|
it "should have a connector with https scheme" do
|
@@ -96,6 +96,14 @@ describe Trinidad::Server do
|
|
96
96
|
context.findParameter('rackup').gsub(/\s+/, ' ').should == "require 'rubygems' require 'sinatra'"
|
97
97
|
end
|
98
98
|
|
99
|
+
it "removes default servlets from the application" do
|
100
|
+
server = Trinidad::Server.new({:web_app_dir => MOCK_WEB_APP_DIR})
|
101
|
+
app = server.tomcat.host.find_child('/')
|
102
|
+
|
103
|
+
app.find_child('default').should be_nil
|
104
|
+
app.find_child('jsp').should be_nil
|
105
|
+
end
|
106
|
+
|
99
107
|
def default_context_should_be_loaded(children)
|
100
108
|
children.should have(1).web_apps
|
101
109
|
children[0].getDocBase().should == MOCK_WEB_APP_DIR
|
@@ -3,7 +3,9 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
3
3
|
describe Trinidad::WebApp do
|
4
4
|
before do
|
5
5
|
@tomcat = Trinidad::Tomcat::Tomcat.new
|
6
|
+
@tomcat.host.app_base = Dir.pwd
|
6
7
|
@tomcat_web_app = @tomcat.addWebapp('/', File.dirname(__FILE__) + '/../../')
|
8
|
+
|
7
9
|
@app = {
|
8
10
|
:web_app_dir => MOCK_WEB_APP_DIR,
|
9
11
|
:context_path => '/'
|
@@ -22,13 +24,15 @@ describe Trinidad::WebApp do
|
|
22
24
|
end
|
23
25
|
|
24
26
|
it "creates a RailsWebApp if rackup option is not present" do
|
25
|
-
Trinidad::WebApp.create(@tomcat_web_app, @config, @app)
|
27
|
+
app = Trinidad::WebApp.create(@tomcat_web_app, @config, @app)
|
28
|
+
app.should be_an_instance_of(Trinidad::RailsWebApp)
|
26
29
|
end
|
27
30
|
|
28
31
|
it "creates a RackupWebApp if rackup option is present" do
|
29
32
|
rackup_app = {:rackup => 'config.ru'}
|
30
33
|
@config.deep_merge({:web_apps => {:default => rackup_app}})
|
31
|
-
Trinidad::WebApp.create(@tomcat_web_app, @config, rackup_app)
|
34
|
+
app = Trinidad::WebApp.create(@tomcat_web_app, @config, rackup_app)
|
35
|
+
app.should be_an_instance_of(Trinidad::RackupWebApp)
|
32
36
|
end
|
33
37
|
|
34
38
|
it "should load custom jars" do
|
@@ -36,7 +40,7 @@ describe Trinidad::WebApp do
|
|
36
40
|
@web_app.add_application_libs(class_loader)
|
37
41
|
|
38
42
|
resource = class_loader.find_class('org.ho.yaml.Yaml')
|
39
|
-
resource.should_not
|
43
|
+
resource.should_not be_nil
|
40
44
|
end
|
41
45
|
|
42
46
|
it "should load custom classes" do
|
@@ -44,7 +48,7 @@ describe Trinidad::WebApp do
|
|
44
48
|
@web_app.add_application_classes(class_loader)
|
45
49
|
|
46
50
|
resource = class_loader.find_class('HelloTomcat')
|
47
|
-
resource.should_not
|
51
|
+
resource.should_not be_nil
|
48
52
|
end
|
49
53
|
|
50
54
|
it "should start application context without errors" do
|
@@ -80,32 +84,49 @@ describe Trinidad::WebApp do
|
|
80
84
|
web_app.context.findParameter('jruby.max.runtimes').should == '8'
|
81
85
|
end
|
82
86
|
|
83
|
-
it "
|
84
|
-
@web_app.
|
85
|
-
@web_app.context.
|
87
|
+
it "configures rack handler" do
|
88
|
+
@web_app.configure_rack
|
89
|
+
@web_app.context.findChild('RackServlet').should_not be_nil
|
86
90
|
end
|
87
91
|
|
88
|
-
it "
|
92
|
+
it "configures rack listener" do
|
89
93
|
@web_app.add_rack_context_listener
|
90
94
|
@web_app.context.findApplicationListeners().should have(1).listeners
|
91
95
|
end
|
92
96
|
|
93
|
-
it "
|
97
|
+
it "has rack handler already configured when web.xml includes it" do
|
94
98
|
@web_app.load_default_web_xml
|
95
|
-
@web_app.
|
99
|
+
@web_app.rack_configured?().should be_true
|
96
100
|
|
97
|
-
@web_app.
|
98
|
-
@web_app.context.
|
101
|
+
@web_app.configure_rack
|
102
|
+
@web_app.context.findChild('RackServlet').should be_nil
|
99
103
|
end
|
100
104
|
|
101
|
-
it "
|
105
|
+
it "has rack listener already configured when web.xml includes it" do
|
102
106
|
@web_app.load_default_web_xml
|
103
|
-
@web_app.rack_listener_configured?().should
|
107
|
+
@web_app.rack_listener_configured?().should be_true
|
104
108
|
|
105
109
|
@web_app.add_rack_context_listener
|
106
110
|
@web_app.context.findApplicationListeners().should have(0).listeners
|
107
111
|
end
|
108
112
|
|
113
|
+
it "loads the provided web.xml for rails applications" do
|
114
|
+
@config[:default_web_xml] = 'config/foo.xml'
|
115
|
+
app = Trinidad::WebApp.create(@tomcat_web_app, @config, @app)
|
116
|
+
|
117
|
+
app.load_default_web_xml
|
118
|
+
app.context.default_web_xml.should =~ /rails_web.xml$/
|
119
|
+
end
|
120
|
+
|
121
|
+
it "loads the provided web.xml for rack applications" do
|
122
|
+
@config[:default_web_xml] = 'config/foo.xml'
|
123
|
+
@app[:rackup] = 'config.ru'
|
124
|
+
|
125
|
+
app = Trinidad::WebApp.create(@tomcat_web_app, @config, @app)
|
126
|
+
app.load_default_web_xml
|
127
|
+
app.context.default_web_xml.should =~ /rackup_web.xml$/
|
128
|
+
end
|
129
|
+
|
109
130
|
def start_context_with_web_xml
|
110
131
|
@web_app.load_default_web_xml
|
111
132
|
start_context
|
@@ -120,5 +141,4 @@ describe Trinidad::WebApp do
|
|
120
141
|
@web_app.config[:libs_dir] = File.join(File.dirname(__FILE__), '..', '..', 'tomcat-libs')
|
121
142
|
@web_app.add_context_loader
|
122
143
|
end
|
123
|
-
|
124
144
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 9
|
8
|
+
- 0
|
9
|
+
version: 0.9.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Calavera
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-28 00:00:00 +02:00
|
18
18
|
default_executable: trinidad
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -51,9 +51,9 @@ dependencies:
|
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
segments:
|
53
53
|
- 0
|
54
|
-
-
|
55
|
-
-
|
56
|
-
version: 0.
|
54
|
+
- 2
|
55
|
+
- 0
|
56
|
+
version: 0.2.0
|
57
57
|
type: :runtime
|
58
58
|
version_requirements: *id003
|
59
59
|
- !ruby/object:Gem::Dependency
|
@@ -80,6 +80,18 @@ dependencies:
|
|
80
80
|
version: "0"
|
81
81
|
type: :development
|
82
82
|
version_requirements: *id005
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: fakefs
|
85
|
+
prerelease: false
|
86
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
version: "0"
|
93
|
+
type: :development
|
94
|
+
version_requirements: *id006
|
83
95
|
description:
|
84
96
|
email: calavera@apache.org
|
85
97
|
executables:
|
@@ -99,7 +111,9 @@ files:
|
|
99
111
|
- lib/trinidad/command_line_parser.rb
|
100
112
|
- lib/trinidad/core_ext.rb
|
101
113
|
- lib/trinidad/extensions.rb
|
114
|
+
- lib/trinidad/rackup_web.xml
|
102
115
|
- lib/trinidad/rackup_web_app.rb
|
116
|
+
- lib/trinidad/rails_web.xml
|
103
117
|
- lib/trinidad/rails_web_app.rb
|
104
118
|
- lib/trinidad/server.rb
|
105
119
|
- lib/trinidad/web_app.rb
|
@@ -139,5 +153,6 @@ test_files:
|
|
139
153
|
- spec/spec_helper.rb
|
140
154
|
- spec/trinidad/command_line_parser_spec.rb
|
141
155
|
- spec/trinidad/extensions_spec.rb
|
156
|
+
- spec/trinidad/fakeapp.rb
|
142
157
|
- spec/trinidad/server_spec.rb
|
143
158
|
- spec/trinidad/web_app_spec.rb
|