trinidad 1.4.5 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4324c8a8dacc58bba855257ddfc1296159002490
4
+ data.tar.gz: 4bbedc68ed6ac2515163b9a43d200f1f61de181d
5
+ SHA512:
6
+ metadata.gz: 34e0a3221d65521854cd6dc9d51b05b3b22ec1591f920f130ea15da93d4a1903b598826567921d390224d424a6542d54e45785a335661a4f2ffa80496b766386
7
+ data.tar.gz: 79466df8eb49615db97e4381d7b185501001edce145d6eb122366444380da3073bcb6dcdff8ebd2103cef46824f3b3fd18ba18f8bb682f97e5eaeb101bc99561
data/Gemfile CHANGED
@@ -16,7 +16,7 @@ end
16
16
  gem 'sinatra', :require => nil, :group => :test
17
17
 
18
18
  group :integration do
19
- gem "rails", "~> 3.2.11"
20
- gem "jruby-openssl"
21
- #eval(File.read("spec/integration/rails32/Gemfile"), binding)
19
+ gem "rails", "~> 3.2.16"
20
+ gem "jruby-openssl" if JRUBY_VERSION < '1.7.0'
21
+ # eval(File.read("spec/integration/rails32/Gemfile"), binding)
22
22
  end
data/History.md CHANGED
@@ -1,3 +1,28 @@
1
+ ## trinidad 1.4.6 (2013-12-28)
2
+
3
+ * default :port for SSL is now (a more Ruby-sh) 3443
4
+ * better handling of port/address for connectors when only one configured
5
+ e.g. in case users want https:// but not http://
6
+ * make sure we keep localhost for tomcat.server's address if not specified
7
+ * only generate 'dummy' SSL keystore if not done already (#117)
8
+ * getting more "strict" about jruby-rack and trinidad_jars gem versions
9
+ * use a custom context manager to have "truly" lazy (java) sessions (#123)
10
+ * improve thread-safe rails (4.0) auto-detection from environment files
11
+ * allow symlinks in assets FS e.g. public/assets might be linked (#120)
12
+ * do not default to 'localhost' (default host) but use :address as name (#119)
13
+
14
+ with (latest) JRuby-Rack 1.1.13 works on JRuby 1.6.x (even < 1.6.7) as well
15
+
16
+ ## trinidad_jars 1.3.0 (2013-12-28)
17
+
18
+ * Tomcat 7.0.47 http://tomcat.apache.org/tomcat-7.0-doc/changelog.html
19
+ * re-invent the MessageFormatter in Java
20
+ * introduce Jerry - Tomcat's little companion
21
+
22
+ ## trinidad_jars 1.2.5 (2013-11-14)
23
+
24
+ * Tomcat 7.0.42 http://tomcat.apache.org/tomcat-7.0-doc/changelog.html
25
+
1
26
  ## trinidad 1.4.5 (2013-06-14)
2
27
 
3
28
  * server should set up AJP only (if HTTP not explicitly configured) (#113)
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  == Trinidad
2
2
 
3
- Copyright (c) 2012 Team Trinidad and contributors http://github.com/trinidad
3
+ Copyright (c) 2013 Team Trinidad and contributors http://github.com/trinidad
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
@@ -23,6 +23,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
23
 
24
24
  == Tomcat
25
25
 
26
- Apache Tomcat (Copyright 1999-2012 The Apache Software Foundation)
26
+ Apache Tomcat (Copyright 1999-2013 The Apache Software Foundation)
27
27
  is licensed under the Apache License, Version 2.0.
28
28
  See http://www.apache.org/licenses/LICENSE-2.0 for details.
@@ -8,9 +8,9 @@ module Trinidad
8
8
  def self.load(options = {})
9
9
  CommandLineParser.new.load!(options)
10
10
  end
11
-
11
+
12
12
  attr_reader :default_options
13
-
13
+
14
14
  def initialize
15
15
  @default_options = {}
16
16
  end
@@ -46,7 +46,7 @@ module Trinidad
46
46
  alias_method :load_configuration, :load!
47
47
 
48
48
  DEFAULT_CONFIG_FILE = 'config/trinidad.{yml,rb}'
49
-
49
+
50
50
  def config_file(base_dir = nil)
51
51
  base_dir ||= Dir.pwd
52
52
  if @config_file.nil? # false means do not use no config file
@@ -55,9 +55,9 @@ module Trinidad
55
55
  @config_file && File.expand_path(@config_file, base_dir)
56
56
  end
57
57
  end
58
-
58
+
59
59
  attr_writer :config_file
60
-
60
+
61
61
  def options_parser
62
62
  require 'optparse'
63
63
  @parser ||= OptionParser.new do |opts|
@@ -69,61 +69,61 @@ module Trinidad
69
69
  default_options[:root_dir] = dir
70
70
  end
71
71
 
72
- opts.on('-e', '--env ENVIRONMENT', 'rack (rails) environment',
72
+ opts.on('-e', '--env ENVIRONMENT', 'rack (rails) environment',
73
73
  "default: #{default(:environment)}") do |env|
74
74
  default_options[:environment] = env
75
75
  end
76
-
76
+
77
77
  opts.on('-r', '--rackup [RACKUP_FILE]', 'rackup configuration file',
78
78
  "default: config.ru") do |rackup|
79
79
  default_options[:rackup] = rackup || 'config.ru'
80
80
  end
81
81
 
82
- opts.on('--public', '--public PUBLIC_DIR', 'web application public root',
82
+ opts.on('--public', '--public PUBLIC_DIR', 'web application public root',
83
83
  "default: #{default(:public)}") do |public|
84
84
  default_options[:public] = public
85
85
  end
86
-
86
+
87
87
  opts.on('-c', '--context CONTEXT_PATH', 'application context path',
88
88
  "default: #{default(:context_path)}") do |path|
89
89
  default_options[:context_path] = path
90
90
  end
91
-
92
- opts.on('--monitor', '--monitor MONITOR_FILE', 'monitor for application re-deploys',
91
+
92
+ opts.on('--monitor', '--monitor MONITOR_FILE', 'monitor for application re-deploys',
93
93
  "default: tmp/restart.txt") do |monitor|
94
94
  default_options[:monitor] = monitor
95
95
  end
96
-
96
+
97
97
  opts.on('-t', '--threadsafe', 'force thread-safe mode (use single runtime)') do
98
98
  default_options[:jruby_min_runtimes] = 1
99
99
  default_options[:jruby_max_runtimes] = 1
100
100
  end
101
-
102
- opts.on('--runtimes MIN:MAX', 'use given number of min/max jruby runtimes',
103
- "default: #{default(:jruby_min_runtimes)}:#{default(:jruby_max_runtimes)}") do
101
+
102
+ opts.on('--runtimes MIN:MAX', 'use given number of min/max jruby runtimes',
103
+ "default: #{default(:jruby_min_runtimes)}:#{default(:jruby_max_runtimes)}") do
104
104
  |min_max| min, max = min_max.split(':')
105
105
  default_options[:jruby_min_runtimes] = min.to_i if min
106
106
  default_options[:jruby_max_runtimes] = max.to_i if max
107
107
  end
108
-
108
+
109
109
  opts.on('-f', '--config [CONFIG_FILE]', 'configuration file',
110
110
  "default: #{DEFAULT_CONFIG_FILE}") do |file|
111
111
  self.config_file = file
112
112
  end
113
-
114
- opts.on('--address', '--address ADDRESS', 'host address',
113
+
114
+ opts.on('--address', '--address ADDRESS', 'host address',
115
115
  "default: #{default(:address)}") do |address|
116
116
  default_options[:address] = address
117
117
  end
118
-
119
- opts.on('-p', '--port PORT', 'port to bind to',
120
- "default: #{default(:port)}") do |port|
118
+
119
+ opts.on('-p', '--port PORT', 'port to bind to',
120
+ "default: #{default(:port)}") do |port|
121
121
  default_options[:port] = port
122
122
  end
123
123
 
124
124
  opts.on('-s', '--ssl [SSL_PORT]', 'enable secure socket layout',
125
- "default port: 8443") do |port|
126
- default_options[:ssl] = { :port => (port || 8443).to_i }
125
+ "default port: 3443") do |port|
126
+ default_options[:ssl] = { :port => (port || 3443).to_i }
127
127
  end
128
128
 
129
129
  opts.on('-a', '--ajp [AJP_PORT]', 'enable the AJP web protocol',
@@ -131,13 +131,13 @@ module Trinidad
131
131
  default_options[:ajp] = { :port => (port || 8009).to_i }
132
132
  end
133
133
 
134
- opts.on('--java_lib LIB_DIR', '--lib LIB_DIR (deprecated use --java_lib)',
134
+ opts.on('--java_lib LIB_DIR', '--lib LIB_DIR (deprecated use --java_lib)',
135
135
  'contains .jar files used by the app',
136
136
  "default: #{default(:java_lib)}") do |lib|
137
137
  default_options[:java_lib] = lib
138
138
  end
139
139
 
140
- opts.on('--java_classes CLASSES_DIR', '--classes CLASSES_DIR (deprecated use --java_classes)',
140
+ opts.on('--java_classes CLASSES_DIR', '--classes CLASSES_DIR (deprecated use --java_classes)',
141
141
  'contains java classes used by the app',
142
142
  "default: #{default_java_classes}") do |classes|
143
143
  default_options[:java_classes] = classes
@@ -149,37 +149,37 @@ module Trinidad
149
149
  end
150
150
  end
151
151
 
152
- opts.on('--apps_base APPS_BASE_DIR', '--apps APPS_BASE_DIR (deprecated use --apps_base)',
152
+ opts.on('--apps_base APPS_BASE_DIR', '--apps APPS_BASE_DIR (deprecated use --apps_base)',
153
153
  'set applications base directory') do |apps_base|
154
154
  default_options[:apps_base] = apps_base
155
155
  end
156
-
156
+
157
157
  opts.on('-g', '--log LEVEL', 'set logging level') do |log|
158
158
  default_options[:log] = log
159
159
  end
160
-
160
+
161
161
  opts.on('-v', '--version', 'show server version') do
162
162
  puts "Trinidad #{Trinidad::VERSION} (Tomcat #{Trinidad::TOMCAT_VERSION})"
163
163
  exit
164
164
  end
165
-
165
+
166
166
  opts.on('-h', '--help', 'display this help') do
167
167
  puts opts
168
168
  exit
169
169
  end
170
170
  end
171
171
  end
172
-
172
+
173
173
  private
174
-
174
+
175
175
  def default(key)
176
176
  default_options[key] || Configuration::DEFAULTS[key]
177
177
  end
178
-
178
+
179
179
  def default_java_classes
180
- default(:java_classes) ||
180
+ default(:java_classes) ||
181
181
  ( default(:java_lib) && File.join(default(:java_lib), 'classes') )
182
182
  end
183
-
183
+
184
184
  end
185
185
  end
@@ -3,7 +3,7 @@ module Trinidad
3
3
  attr_accessor :configuration
4
4
  end
5
5
 
6
- # Creates a new global configuration (unless already exists) and
6
+ # Creates a new global configuration (unless already exists) and
7
7
  # (deep) merges the current values using the provided options.
8
8
  def self.configure(*args)
9
9
  config = ( self.configuration ||= Configuration.new )
@@ -16,7 +16,7 @@ module Trinidad
16
16
  end
17
17
  config.update!(options)
18
18
  end
19
-
19
+
20
20
  yield config if block_given?
21
21
  config
22
22
  end
@@ -26,34 +26,34 @@ module Trinidad
26
26
  self.configuration = Configuration.new
27
27
  configure(*args, &block)
28
28
  end
29
-
29
+
30
30
  # Trinidad's (global) configuration instance.
31
- # Use Trinidad#configure to update and obtain the global instance or access
31
+ # Use Trinidad#configure to update and obtain the global instance or access
32
32
  # the instance using Trinidad#configuration
33
33
  class Configuration
34
-
34
+
35
35
  DEFAULTS = {
36
- :port => 3000,
36
+ # :port => 3000, HTTP (depends on connector used)
37
37
  :address => 'localhost',
38
38
  :environment => 'development',
39
39
  :context_path => '/',
40
40
  :public => 'public',
41
41
  :java_lib => 'lib/java',
42
42
  :default_web_xml => 'config/web.xml',
43
- :jruby_min_runtimes =>
43
+ :jruby_min_runtimes =>
44
44
  java.lang.System.getProperty('jruby.min.runtimes') || 1,
45
- :jruby_max_runtimes =>
45
+ :jruby_max_runtimes =>
46
46
  java.lang.System.getProperty('jruby.max.runtimes') || 5,
47
47
  :log => 'INFO',
48
48
  :trap => true
49
49
  }
50
-
50
+
51
51
  def initialize(options = {})
52
52
  @config = DEFAULTS.clone
53
53
  update!(options)
54
54
  end
55
55
 
56
- def [](name)
56
+ def [](name)
57
57
  @config[name.to_sym]
58
58
  end
59
59
 
@@ -65,37 +65,37 @@ module Trinidad
65
65
  @config.has_key?(name.to_sym)
66
66
  end
67
67
  alias_method :key?, :has_key?
68
-
68
+
69
69
  def keys
70
70
  @config.keys
71
71
  end
72
-
72
+
73
73
  def each(&block)
74
74
  @config.each(&block)
75
75
  end
76
-
76
+
77
77
  def update!(options)
78
78
  options.each do |key, value|
79
79
  self[key] = value.respond_to?(:strip) ? value.strip : value
80
80
  end
81
81
  end
82
-
82
+
83
83
  %w{ port address environment context_path
84
84
  java_lib libs_dir java_classes classes_dir default_web_xml
85
85
  jruby_min_runtimes jruby_max_runtimes jruby_compat_version
86
86
  rackup servlet rack_servlet default_servlet public hosts
87
- http ajp ssl extensions
87
+ http ajp ssl https extensions
88
88
  apps_base web_apps web_app_dir
89
89
  monitor reload_strategy log trap }.each do |method|
90
90
  class_eval "def #{method}; self[:'#{method}']; end"
91
91
  class_eval "def #{method}=(value); self[:'#{method}'] = value; end"
92
92
  end
93
93
  # TODO #deprecate libs_dir classes_dir servlet
94
-
94
+
95
95
  # a Hash like #symbolize helper
96
96
  def self.symbolize_options(options, deep = true)
97
97
  new_options = options.class.new
98
- options.each do |key, value|
98
+ options.each do |key, value|
99
99
  if deep && value.is_a?(Array) # YAML::Omap is an Array
100
100
  array = new_options[key.to_sym] = value.class.new
101
101
  value.each do |v|
@@ -109,13 +109,13 @@ module Trinidad
109
109
  end
110
110
  new_options
111
111
  end
112
-
112
+
113
113
  # a Hash like deep_merge helper
114
114
  def self.merge_options(target, current, deep = true)
115
115
  return target unless current
116
116
  target_dup = target.dup
117
117
  current.keys.each do |key|
118
- target_dup[key] =
118
+ target_dup[key] =
119
119
  if deep && options_like?(target[key]) && options_like?(current[key])
120
120
  merge_options(target[key], current[key], deep)
121
121
  else
@@ -124,12 +124,12 @@ module Trinidad
124
124
  end
125
125
  target_dup
126
126
  end
127
-
127
+
128
128
  private
129
129
  def self.options_like?(object)
130
- object.is_a?(Hash) ||
130
+ object.is_a?(Hash) ||
131
131
  ( object.respond_to?(:keys) && object.respond_to?(:'[]') )
132
132
  end
133
-
133
+
134
134
  end
135
135
  end
@@ -1,7 +1,7 @@
1
1
  module Trinidad
2
2
  module Lifecycle
3
3
  module WebApp
4
- # Shared web application lifecycle hook,
4
+ # Shared web application lifecycle hook,
5
5
  # does #configure before the context starts.
6
6
  module Shared
7
7
 
@@ -23,7 +23,7 @@ module Trinidad
23
23
  super
24
24
  configure(event.lifecycle)
25
25
  end
26
-
26
+
27
27
  # Configure the web application before it's started.
28
28
  def configure(context)
29
29
  adjust_context(context)
@@ -34,7 +34,7 @@ module Trinidad
34
34
  end
35
35
 
36
36
  protected
37
-
37
+
38
38
  def adjust_context(context)
39
39
  context_name = web_app.context_name
40
40
  # on (rolling) reloads the name may have been set already :
@@ -45,7 +45,8 @@ module Trinidad
45
45
  context.doc_base = web_app.doc_base if web_app.doc_base
46
46
  context.work_dir = web_app.work_dir if web_app.work_dir
47
47
  context.aliases = web_app.aliases if web_app.aliases
48
-
48
+ context.allow_linking = web_app.allow_linking
49
+
49
50
  context.caching_allowed = web_app.caching_allowed?
50
51
  context.cache_ttl = web_app.cache_ttl if web_app.cache_ttl
51
52
  if max_size = web_app.cache_max_size
@@ -54,26 +55,30 @@ module Trinidad
54
55
  if object_max_size = web_app.cache_object_max_size
55
56
  context.cache_object_max_size = object_max_size
56
57
  end
58
+
59
+ if manager = web_app.context_manager
60
+ context.manager = manager # replace "standard" (session) manager
61
+ end
57
62
  end
58
-
63
+
59
64
  def configure_default_servlet(context)
60
- configure_builtin_servlet(context,
65
+ configure_builtin_servlet(context,
61
66
  web_app.default_servlet, Trinidad::WebApp::DEFAULT_SERVLET_NAME
62
67
  )
63
68
  end
64
-
69
+
65
70
  def configure_jsp_servlet(context)
66
- wrapper = configure_builtin_servlet(context,
71
+ wrapper = configure_builtin_servlet(context,
67
72
  web_app.jsp_servlet, Trinidad::WebApp::JSP_SERVLET_NAME
68
73
  )
69
74
  context.process_tlds = false if wrapper == false # jsp servlet removed
70
75
  wrapper
71
76
  end
72
-
77
+
73
78
  def configure_logging(context)
74
79
  Trinidad::Logging.configure_web_app(web_app, context)
75
80
  end
76
-
81
+
77
82
  private
78
83
 
79
84
  def configure_builtin_servlet(context, servlet_config, name)
@@ -98,7 +103,7 @@ module Trinidad
98
103
  wrapper.servlet_class = servlet_class
99
104
  end
100
105
  # do not remove wrapper but only "update" the default :
101
- wrapper.load_on_startup = ( servlet_config[:load_on_startup] ||
106
+ wrapper.load_on_startup = ( servlet_config[:load_on_startup] ||
102
107
  name_wrapper.load_on_startup ).to_i
103
108
  add_init_params(wrapper, servlet_config[:init_params])
104
109
  if mapping = servlet_config[:mapping]
@@ -110,13 +115,13 @@ module Trinidad
110
115
  wrapper
111
116
  end
112
117
  end
113
-
118
+
114
119
  def remove_defaults(context)
115
120
  context.remove_welcome_file('index.htm')
116
121
  context.remove_welcome_file('index.html')
117
122
  context.remove_welcome_file('index.jsp')
118
123
  end
119
-
124
+
120
125
  def add_init_params(wrapper, params)
121
126
  return unless params
122
127
  params.each do |param, value|
@@ -124,22 +129,22 @@ module Trinidad
124
129
  wrapper.add_init_parameter(param.to_s, val)
125
130
  end
126
131
  end
127
-
132
+
128
133
  def add_servlet_mapping(context, mapping, name)
129
- if mapping.is_a?(String) || mapping.is_a?(Symbol)
134
+ if mapping.is_a?(String) || mapping.is_a?(Symbol)
130
135
  context.add_servlet_mapping(mapping.to_s, name)
131
136
  else
132
137
  mapping.each { |m| add_servlet_mapping(context, m, name) }
133
138
  end
134
139
  end
135
-
140
+
136
141
  # Remove all servlet mappings for given (servlet) name.
137
142
  def remove_servlet_mapping(context, name)
138
143
  find_servlet_mapping(context, name).each do
139
144
  |pattern| context.remove_servlet_mapping(pattern)
140
145
  end
141
146
  end
142
-
147
+
143
148
  # Find all servlet mappings for given (servlet) name.
144
149
  def find_servlet_mapping(context, name)
145
150
  name_mapping = []
@@ -149,12 +154,12 @@ module Trinidad
149
154
  end
150
155
  name_mapping
151
156
  end
152
-
157
+
153
158
  def logger
154
159
  @logger ||= Trinidad::Logging::LogFactory.
155
160
  getLog('org.apache.catalina.core.StandardContext')
156
161
  end
157
-
162
+
158
163
  end
159
164
  end
160
165
  end
@@ -6,7 +6,7 @@ module Trinidad
6
6
  module WebApp
7
7
  class War < Base
8
8
  include Shared
9
-
9
+
10
10
  def before_init(event)
11
11
  # NOTE: esp. important for .war applications that the name matches the path
12
12
  # to work-around ProxyDirContext constructor's `contextPath = contextName;`
@@ -15,21 +15,21 @@ module Trinidad
15
15
  context.name = context.path if context.name
16
16
  super
17
17
  end
18
-
18
+
19
19
  def configure(context)
20
20
  super # Shared#configure
21
21
  configure_class_loader(context)
22
22
  end
23
-
23
+
24
24
  protected
25
-
25
+
26
26
  def adjust_context(context)
27
27
  name = context.name
28
28
  super
29
29
  ensure # @see {#before_init}
30
30
  context.name = name
31
- # NOTE: mimics HostConfig#deploWAR and should be removed
32
- # once Lifecycle::Host inherits func from HostConfig ...
31
+ # NOTE: mimics HostConfig#deployWAR and might/should be removed
32
+ # once Lifecycle::Host inherits functionality from HostConfig ...
33
33
  # context_name = Trinidad::Tomcat::ContextName.new(name)
34
34
  # context.setName context_name.getName()
35
35
  # context.setPath context_name.getPath()
@@ -47,7 +47,7 @@ module Trinidad
47
47
  def remove_defaults(context = nil)
48
48
  # NOTE: do not remove defaults (welcome files)
49
49
  end
50
-
50
+
51
51
  end
52
52
  end
53
53
  War = Trinidad::Lifecycle::WebApp::War # backwards compatibility
@@ -188,30 +188,7 @@ module Trinidad
188
188
  end
189
189
 
190
190
  # A message formatter only prints the log message (and the thrown value).
191
- class MessageFormatter < JUL::Formatter # :nodoc:
192
-
193
- def format(record)
194
- msg = formatMessage(record)
195
- msg << formatThrown(record).to_s
196
- # since we're going to print Rails.logger logs and they tend
197
- # to already have the ending "\n" handle such cases nicely :
198
- if context_name(record.getLoggerName)
199
- (lns = LINE_SEP) == msg[-1, 1] ? msg : msg << lns
200
- else
201
- msg << LINE_SEP
202
- end
203
- end
204
-
205
- # e.g. org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/foo]
206
- # or org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[default]
207
- WEB_APP_LOGGER_NAME = /^org\.apache\.catalina\.core\.ContainerBase.*?\[(.*?)\]$/
208
-
209
- private
210
- def context_name(name)
211
- ( match = (name || '').match(WEB_APP_LOGGER_NAME) ) && match[1]
212
- end
213
-
214
- end
191
+ MessageFormatter = Java::RbTrinidadLogging::MessageFormatter
215
192
 
216
193
  DefaultFormatter = Java::RbTrinidadLogging::DefaultFormatter
217
194
 
@@ -10,7 +10,7 @@ module Trinidad
10
10
  end
11
11
 
12
12
  def configure(config = Trinidad.configuration)
13
- configure_logging config[:log]
13
+ configure_logging config[:logging] || config[:log]
14
14
  @config = config.freeze
15
15
  end
16
16
  # @deprecated replaced with {#configure}
@@ -39,11 +39,14 @@ module Trinidad
39
39
 
40
40
  def ssl_enabled?
41
41
  if ! defined?(@ssl_enabled) || @ssl_enabled.nil?
42
- @ssl_enabled = ( !! @config[:ssl] && ! @config[:ssl].empty? )
42
+ ssl = @config.key?(:https) ? @config[:https] : @config[:ssl]
43
+ @ssl_enabled = ( !! ssl && ( ! ssl.respond_to?(:empty?) || ! ssl.empty? ) )
43
44
  end
44
45
  @ssl_enabled
45
46
  end
46
47
  attr_writer :ssl_enabled
48
+ alias_method :https_enabled?, :ssl_enabled?
49
+ alias_method :https_enabled=, :ssl_enabled=
47
50
 
48
51
  def ajp_enabled?
49
52
  if ! defined?(@ajp_enabled) || @ajp_enabled.nil?
@@ -61,37 +64,49 @@ module Trinidad
61
64
  end
62
65
  @http_configured
63
66
  end
64
- attr_writer :http_configured
67
+ # @deprecated
68
+ def http_configured=(flag); @http_configured = flag end
65
69
 
66
70
  def tomcat; @tomcat ||= initialize_tomcat; end
67
71
 
68
- LOCALHOST = 'localhost'.freeze # :nodoc:
69
-
70
72
  def initialize_tomcat
71
73
  set_system_properties
72
74
 
73
- tomcat = Trinidad::Tomcat::Tomcat.new
75
+ tomcat = Tomcat.new # @see Trinidad::Tomcat
74
76
  tomcat.base_dir = config[:base_dir] || Dir.pwd
75
- tomcat.hostname = config[:address] || LOCALHOST
76
- tomcat.server.address = config[:address]
77
- tomcat.port = config[:port].to_i
77
+ address = config[:address] if config.key?(:address)
78
+ tomcat.hostname = address || 'localhost'
79
+ tomcat.server.address = address || nil unless address.nil?
80
+ tomcat.port = config[:port].to_i if config.key?(:port)
78
81
  default_host(tomcat)
79
82
  create_hosts(tomcat)
80
83
  tomcat.enable_naming
81
84
 
82
- http_connector = http_configured? ||
83
- ( ! ajp_enabled? && config[:address] && config[:address] != LOCALHOST )
85
+ http_connector = http_configured? || ( ! ajp_enabled? && ! ssl_enabled? )
86
+
87
+ tomcat.connector = add_http_connector(config[:http], tomcat) if http_connector
84
88
 
85
- if http_connector
86
- tomcat.connector = add_http_connector(tomcat)
89
+ if ssl_enabled?
90
+ options = config.key?(:https) ? config[:https] : config[:ssl]
91
+ options = {} if options == true
92
+ unless options.key?(:port)
93
+ options[:port] = http_connector ? 3443 : config[:port] || 3443
94
+ end
95
+ connector = add_ssl_connector(options, tomcat)
96
+ tomcat.connector = connector unless http_connector
97
+ http_connector = true # tomcat.connector http: or https: or ajp:
87
98
  end
99
+
88
100
  if ajp_enabled?
89
- connector = add_ajp_connector(tomcat)
101
+ options = config[:ajp]; options = {} if options == true
102
+ unless options.key?(:port)
103
+ options[:port] = config[:port] || 8009 unless http_connector
104
+ end
105
+ connector = add_ajp_connector(options, tomcat)
90
106
  tomcat.connector = connector unless http_connector
91
107
  end
92
- add_ssl_connector(tomcat) if ssl_enabled?
93
108
 
94
- Trinidad::Extensions.configure_server_extensions(config[:extensions], tomcat)
109
+ Extensions.configure_server_extensions(config[:extensions], tomcat)
95
110
  end
96
111
  protected :initialize_tomcat
97
112
  # #deprecated renamed to {#initialize_tomcat}
@@ -99,65 +114,99 @@ module Trinidad
99
114
 
100
115
  def add_host_monitor(app_holders)
101
116
  for host in tomcat.engine.find_children
102
- host_apps = select_host_apps(app_holders, host)
103
- host.add_lifecycle_listener(Trinidad::Lifecycle::Host.new(self, *host_apps))
117
+ host_apps = select_host_apps(app_holders, host, tomcat)
118
+ host.add_lifecycle_listener(Lifecycle::Host.new(self, *host_apps))
104
119
  end
105
120
  end
106
121
  protected :add_host_monitor
107
122
  # @deprecated replaced with {#setup_host_monitor}
108
123
  def load_host_monitor(web_apps); add_host_monitor(web_apps); end
109
124
 
110
- def add_ajp_connector(tomcat = @tomcat)
111
- options = config[:ajp]
112
- options = {
113
- :address => @config[:address], :port => @config[:port]
114
- }.merge!( options.respond_to?(:[]) ? options : {} )
125
+ def add_ajp_connector(options = config[:ajp], tomcat = nil)
126
+ # backwards compatibility - single argument (tomcat = @tomcat)
127
+ if options && ! options.respond_to?(:[])
128
+ tomcat = options; options = config[:ajp]
129
+ else
130
+ tomcat = @tomcat
131
+ end if tomcat.nil?
132
+
133
+ options = options.respond_to?(:[]) ? options.dup : {}
134
+ options[:address] = config[:address] unless options.key?(:address)
115
135
 
116
- add_service_connector(options, options[:protocol_handler] || 'AJP/1.3', tomcat)
136
+ add_service_connector(options, 'AJP/1.3', tomcat)
117
137
  end
118
138
 
119
- def add_http_connector(tomcat = @tomcat)
120
- options = config[:http]
121
- options = {
122
- :address => @config[:address], :port => @config[:port]
123
- }.merge!( options.respond_to?(:[]) ? options : {} )
139
+ def add_http_connector(options = config[:http], tomcat = nil)
140
+ # backwards compatibility - single argument (tomcat = @tomcat)
141
+ if options && ! options.respond_to?(:[])
142
+ tomcat = options; options = config[:http]
143
+ else
144
+ tomcat = @tomcat
145
+ end if tomcat.nil?
146
+
147
+ options = options.respond_to?(:[]) ? options.dup : {}
148
+ options[:port] = config[:port] || 3000 unless options.key?(:port)
149
+ options[:address] = config[:address] unless options.key?(:address)
124
150
 
125
151
  if options.delete(:nio)
126
152
  options[:protocol_handler] ||= 'org.apache.coyote.http11.Http11NioProtocol'
127
153
  end
128
154
 
129
155
  if options.delete(:apr)
130
- tomcat.server.add_lifecycle_listener(Trinidad::Tomcat::AprLifecycleListener.new)
156
+ tomcat.server.add_lifecycle_listener(Tomcat::AprLifecycleListener.new)
131
157
  end
132
158
 
133
- add_service_connector(options, options[:protocol_handler] || 'HTTP/1.1', tomcat)
159
+ add_service_connector(options, 'HTTP/1.1', tomcat)
134
160
  end
135
161
 
136
- def add_ssl_connector(tomcat = @tomcat)
137
- options = config[:ssl]
138
- options = {
139
- :scheme => 'https', :secure => true, :SSLEnabled => 'true'
140
- }.merge!( options.respond_to?(:[]) ? options : {} )
162
+ # @private
163
+ DEFAULT_KEYSTORE_FILE = 'ssl/keystore' # TODO review default location
164
+
165
+ def add_ssl_connector(options = config[:ssl], tomcat = nil)
166
+ # backwards compatibility - single argument (tomcat = @tomcat)
167
+ if options && ! options.respond_to?(:[])
168
+ tomcat = options; options = config[:ssl]
169
+ else
170
+ tomcat = @tomcat
171
+ end if tomcat.nil?
141
172
 
142
- options[:keystoreFile] ||= options.delete(:keystore)
173
+ options = { :scheme => 'https', :secure => true }.merge!( options.respond_to?(:[]) ? options : {} )
174
+ options[:address] = config[:address] unless options.key?(:address)
175
+
176
+ if keystore_file = options.delete(:keystore) || options.delete(:keystore_file)
177
+ options[:keystoreFile] ||= keystore_file
178
+ end
179
+ options[:keystorePass] ||= options.delete(:keystore_pass) if options.key?(:keystore_pass)
180
+ # handle "custom" alternative SSL (casing) options :
181
+ options[:SSLEnabled] = options.delete(:ssl_enabled) || true # always true
182
+ options[:SSLCertificateFile] ||= options.delete(:ssl_certificate_file) if options.key?(:ssl_certificate_file)
183
+ options[:SSLCertificateKeyFile] ||= options.delete(:ssl_certificate_key_file) if options.key?(:ssl_certificate_key_file)
184
+ options[:SSLVerifyClient] ||= options.delete(:ssl_verify_client) if options.key?(:ssl_verify_client)
185
+ options[:SSLProtocol] ||= options.delete(:ssl_protocol) if options.key?(:ssl_protocol)
186
+ # NOTE: there's quite more SSL prefixed options with APR ...
143
187
 
144
188
  if ! options[:keystoreFile] && ! options[:SSLCertificateFile]
145
- options[:keystoreFile] ||= 'ssl/keystore'
146
- options[:keystorePass] ||= 'waduswadus42'
147
- generate_default_keystore(options)
189
+ # generate one for development/testing SSL :
190
+ options[:keystoreFile] = DEFAULT_KEYSTORE_FILE
191
+ options[:keystorePass] ||= 'waduswadus42' # NOTE change/ask for default
192
+ if File.exist?(DEFAULT_KEYSTORE_FILE)
193
+ logger.info "Using (default) keystore at #{DEFAULT_KEYSTORE_FILE.inspect}"
194
+ else
195
+ generate_default_keystore(options)
196
+ end
148
197
  end
149
198
 
150
- add_service_connector(options, nil, tomcat)
199
+ add_service_connector(options, 'HTTP/1.1', tomcat)
151
200
  end
152
201
 
153
202
  # NOTE: make sure to pass an options Hash that might be changed !
154
203
  def add_service_connector(options, protocol = nil, tomcat = @tomcat)
155
- connector = Trinidad::Tomcat::Connector.new(protocol)
156
- connector.scheme = options.delete(:scheme) if options[:scheme]
157
- connector.secure = options.delete(:secure) || false
204
+ connector = Tomcat::Connector.new(options.delete(:protocol) || protocol)
205
+ connector.scheme = options.delete(:scheme) if options.key?(:scheme)
206
+ connector.secure = options.key?(:secure) ? options.delete(:secure) : false
158
207
  connector.port = options.delete(:port).to_i if options[:port]
159
208
 
160
- if handler = options.delete(:protocol_handler)
209
+ if handler = options.delete(:protocol_handler) || options.delete(:protocol_handler_class_name)
161
210
  connector.protocol_handler_class_name = handler
162
211
  end
163
212
 
@@ -178,7 +227,7 @@ module Trinidad
178
227
  host.start_children = start unless start.nil?
179
228
  # public Context addWebapp(Host host, String url, String name, String docBase)
180
229
  tomcat.addWebapp(host, web_app.context_path, web_app.context_name, web_app.root_dir)
181
- rescue java.lang.IllegalArgumentException => e
230
+ rescue Java::JavaLang::IllegalArgumentException => e
182
231
  if e.message =~ /addChild\:/
183
232
  context_name = web_app.context_name
184
233
  logger.error "could not add application #{context_name.inspect} from #{web_app.root_dir}\n" <<
@@ -189,7 +238,7 @@ module Trinidad
189
238
  ensure
190
239
  host.start_children = prev_start unless start.nil?
191
240
  end
192
- Trinidad::Extensions.configure_webapp_extensions(web_app.extensions, tomcat, context)
241
+ Extensions.configure_webapp_extensions(web_app.extensions, tomcat, context)
193
242
  if lifecycle = web_app.define_lifecycle
194
243
  context.add_lifecycle_listener(lifecycle)
195
244
  end
@@ -197,7 +246,8 @@ module Trinidad
197
246
  end
198
247
 
199
248
  def deploy_web_apps(tomcat = self.tomcat)
200
- add_host_monitor web_apps = create_web_apps
249
+ web_apps = create_web_apps
250
+ add_host_monitor web_apps
201
251
  web_apps
202
252
  end
203
253
 
@@ -274,7 +324,7 @@ module Trinidad
274
324
  app_base_name = File.basename(app_root)
275
325
  deployed = apps.find do |app_holder|; web_app = app_holder.web_app
276
326
  web_app.root_dir == app_root ||
277
- web_app.context_path == Trinidad::Tomcat::ContextName.new(app_base_name).path
327
+ web_app.context_path == Tomcat::ContextName.new(app_base_name).path
278
328
  end
279
329
  if deployed
280
330
  logger.debug "Skipping auto-deploy from #{app_root} (already deployed)"
@@ -292,7 +342,7 @@ module Trinidad
292
342
  end
293
343
 
294
344
  def create_web_app(app_config)
295
- host_name = app_config[:host_name] || 'localhost'
345
+ host_name = app_config[:host_name] || tomcat.host.name
296
346
  host = tomcat.engine.find_child(host_name)
297
347
  app_config[:root_dir] = web_app_root_dir(app_config, host)
298
348
 
@@ -340,7 +390,7 @@ module Trinidad
340
390
  end
341
391
 
342
392
  def create_host(app_base, host_config, tomcat = @tomcat)
343
- host = Trinidad::Tomcat::StandardHost.new
393
+ host = Tomcat::StandardHost.new
344
394
  host.app_base = nil # reset default app_base
345
395
  host.deployXML = false # disabled by default
346
396
  setup_host(app_base, host_config, host)
@@ -382,8 +432,8 @@ module Trinidad
382
432
  # @deprecated renamed to {#set_system_properties}
383
433
  def load_default_system_properties; set_system_properties; end
384
434
 
385
- def configure_logging(log_level)
386
- Trinidad::Logging.configure(log_level)
435
+ def configure_logging(logging)
436
+ Trinidad::Logging.configure(logging)
387
437
  end
388
438
 
389
439
  def logger; @logger ||= self.class.logger; end
@@ -406,7 +456,8 @@ module Trinidad
406
456
  host
407
457
  end
408
458
 
409
- DEFAULT_HOST_APP_BASE = 'webapps' # :nodoc:
459
+ # @private
460
+ DEFAULT_HOST_APP_BASE = 'webapps'
410
461
 
411
462
  def default_host_base?(host)
412
463
  host.app_base.nil? || ( host.app_base == DEFAULT_HOST_APP_BASE && host.name == 'localhost' )
@@ -452,10 +503,10 @@ module Trinidad
452
503
  end
453
504
  end
454
505
 
455
- def select_host_apps(app_holders, host)
506
+ def select_host_apps(app_holders, host, tomcat = self.tomcat)
456
507
  app_holders.select do |app_holder|
457
508
  host_name = app_holder.web_app.host_name
458
- ( host_name || 'localhost' ) == host.name
509
+ host_name ? host_name == host.name : host == tomcat.host # default host
459
510
  end
460
511
  end
461
512
 
@@ -506,25 +557,28 @@ module Trinidad
506
557
  end
507
558
  end
508
559
 
509
- def generate_default_keystore(config)
510
- keystore_file = java.io.File.new(config[:keystoreFile])
511
-
512
- if ! keystore_file.parent_file.exists && ! keystore_file.parent_file.mkdir
513
- raise "Unable to create keystore folder: #{keystore_file.parent_file.canonical_path}"
560
+ def generate_default_keystore(file, pass = nil) # or (config)
561
+ file, pass = file[:keystoreFile], file[:keystorePass] if pass.nil?
562
+ file = Java::JavaIo::File.new(file)
563
+ keystore_dir = file.parent_file
564
+ if ! keystore_dir.exists && ! keystore_dir.mkdir
565
+ raise "Unable to create keystore folder: #{keystore_dir.canonical_path}"
514
566
  end
515
567
 
516
- key_tool_args = ["-genkey",
568
+ key_tool_args = [ "-genkey",
517
569
  "-alias", "localhost",
518
- "-dname", "CN=localhost, OU=Trinidad, O=Trinidad, C=ES",
570
+ "-dname", dname = "CN=localhost, OU=Trinidad, O=Trinidad, C=ES",
519
571
  "-keyalg", "RSA",
520
572
  "-validity", "365",
521
573
  "-storepass", "key",
522
- "-keystore", config[:keystoreFile],
523
- "-storepass", config[:keystorePass],
524
- "-keypass", config[:keystorePass]]
574
+ "-keystore", file.absolute_path,
575
+ "-storepass", pass,
576
+ "-keypass", pass ]
577
+
578
+ logger.info "Generating a (default) keystore for localhost #{dname.inspect} at " <<
579
+ "#{file.canonical_path} (password: '#{pass}')"
525
580
 
526
- key_tool = Java::SunSecurityTools::KeyTool
527
- key_tool.main key_tool_args.to_java(:string)
581
+ Java::SunSecurityTools::KeyTool.main key_tool_args.to_java(:string)
528
582
  end
529
583
 
530
584
  def trap_signals
@@ -1,3 +1,3 @@
1
1
  module Trinidad
2
- VERSION = '1.4.5'
2
+ VERSION = '1.4.6'
3
3
  end
@@ -3,7 +3,7 @@ require 'trinidad/configuration'
3
3
  module Trinidad
4
4
  class WebApp
5
5
 
6
- @@defaults = Trinidad::Configuration::DEFAULTS
6
+ @@defaults = Configuration::DEFAULTS
7
7
 
8
8
  attr_reader :config, :default_config
9
9
 
@@ -24,14 +24,18 @@ module Trinidad
24
24
  config.key?(key) ? config[key] : default_config[key]
25
25
  end
26
26
 
27
+ def []=(key, value)
28
+ config[key.to_sym] = value
29
+ end
30
+
27
31
  def key?(key, use_default = true)
28
32
  key = key.to_sym
29
33
  return true if config.has_key?(key)
30
34
  use_default ? default_config.key?(key) : false
31
35
  end
32
36
 
33
- %w{ root_dir rackup async_supported reload_strategy host_name }.each do |method|
34
- class_eval "def #{method}; self[:'#{method}']; end"
37
+ %w{ root_dir rackup async_supported reload_strategy host_name }.each do
38
+ |method| class_eval "def #{method}; self[:'#{method}']; end"
35
39
  end
36
40
 
37
41
  alias_method :web_app_dir, :root_dir # is getting deprecated soon
@@ -54,6 +58,8 @@ module Trinidad
54
58
  # JRuby-Rack correctly resolves relative paths for the context!
55
59
  def doc_base; self[:doc_base] || root_dir; end
56
60
 
61
+ def allow_linking; key?(:allow_linking) ? self[:allow_linking] : true; end
62
+
57
63
  def jruby_min_runtimes
58
64
  if min = config[:jruby_min_runtimes]
59
65
  return min.to_i # min specified overrides :threadsafe
@@ -173,6 +179,9 @@ module Trinidad
173
179
  end
174
180
  end
175
181
 
182
+ # TODO: internal API - should be configurable/adjustable with context.yml !
183
+ def context_manager; Java::RbTrinidadContext::DefaultManager.new end
184
+
176
185
  def logging
177
186
  @logging ||= begin
178
187
  defaults = {
@@ -185,7 +194,7 @@ module Trinidad
185
194
  :rotate => true
186
195
  }
187
196
  }
188
- Trinidad::Configuration.merge_options(defaults, self[:logging])
197
+ Configuration.merge_options(defaults, self[:logging])
189
198
  end
190
199
  end
191
200
 
@@ -271,7 +280,7 @@ module Trinidad
271
280
  def generate_class_loader; class_loader!; end
272
281
 
273
282
  def define_lifecycle
274
- Trinidad::Lifecycle::WebApp::Default.new(self)
283
+ Lifecycle::WebApp::Default.new(self)
275
284
  end
276
285
 
277
286
  # Reset the hold web application state so it gets re-initialized.
@@ -394,7 +403,7 @@ module Trinidad
394
403
  end
395
404
 
396
405
  def threadsafe?
397
- jruby_min_runtimes == 1 && jruby_max_runtimes == 1
406
+ jruby_min_runtimes == 1 && jruby_max_runtimes == 1 # handles [:threadsafe]
398
407
  end
399
408
 
400
409
  protected
@@ -509,7 +518,7 @@ module Trinidad
509
518
  end
510
519
 
511
520
  def logger
512
- @logger ||= Trinidad::Logging::LogFactory.getLog('')
521
+ @logger ||= Logging::LogFactory.getLog('')
513
522
  end
514
523
 
515
524
  protected
@@ -638,7 +647,7 @@ module Trinidad
638
647
  end
639
648
 
640
649
  # Rack web application (looks for a "rackup" *config.ru* file).
641
- class RackupWebApp < WebApp
650
+ class RackWebApp < WebApp
642
651
 
643
652
  def context_params
644
653
  add_context_param 'app.root', app_root
@@ -655,6 +664,7 @@ module Trinidad
655
664
  def web_xml_environment; web_xml_context_param('rack.env'); end
656
665
 
657
666
  end
667
+ RackupWebApp = RackWebApp
658
668
 
659
669
  # Rails web application specifics (supports same versions as JRuby-Rack).
660
670
  class RailsWebApp < WebApp
@@ -694,8 +704,8 @@ module Trinidad
694
704
  def self.threadsafe_match?(file)
695
705
  File.exist?(file) && (
696
706
  file_line_match?(file, /^[^#]*threadsafe!/) || ( # Rails 4.0
697
- file_line_match?(file, /^[^#]*config\.eager_load = true/) &&
698
- file_line_match?(file, /^[^#]*config\.cache_classes = true/)
707
+ file_line_match?(file, /^[^#]*config\.eager_load\s?*=\s?*true/) &&
708
+ file_line_match?(file, /^[^#]*config\.cache_classes\s?*=\s?*true/)
699
709
  )
700
710
  )
701
711
  end
@@ -715,7 +725,7 @@ module Trinidad
715
725
  def context_path
716
726
  @path ||= begin
717
727
  path = File.basename(super)
718
- context_name = Trinidad::Tomcat::ContextName.new(path)
728
+ context_name = Tomcat::ContextName.new(path)
719
729
  context_name.path # removes .war handles ## versioning
720
730
  end
721
731
  end
@@ -751,12 +761,14 @@ module Trinidad
751
761
  warbler? ? super : @context_params ||= {}
752
762
  end
753
763
 
764
+ def context_manager; nil end
765
+
754
766
  def layout_class
755
767
  'JRuby::Rack::WebInfLayout'
756
768
  end
757
769
 
758
770
  def define_lifecycle
759
- Trinidad::Lifecycle::WebApp::War.new(self)
771
+ Lifecycle::WebApp::War.new(self)
760
772
  end
761
773
 
762
774
  private
@@ -10,9 +10,10 @@ Gem::Specification.new do |gem|
10
10
  gem.description = "Trinidad allows you to run Rails or Rack applications within " <<
11
11
  "an embedded Apache Tomcat container. Serves your requests with the elegance of a cat !"
12
12
 
13
- gem.authors = ["David Calavera"]
13
+ gem.authors = ['David Calavera']
14
14
  gem.email = 'calavera@apache.org'
15
- gem.homepage = 'http://github.com/trinidad/trinidad'
15
+ gem.homepage = 'https://github.com/trinidad/trinidad'
16
+ gem.licenses = ['MIT', 'Apache-2.0']
16
17
 
17
18
  gem.require_paths = %w[lib]
18
19
  gem.executables = ["trinidad"]
@@ -21,11 +22,11 @@ Gem::Specification.new do |gem|
21
22
  gem.rdoc_options = ["--charset=UTF-8"]
22
23
  gem.extra_rdoc_files = %w[README.md LICENSE]
23
24
 
24
- gem.add_dependency('trinidad_jars', ">= 1.2.3")
25
- gem.add_dependency('jruby-rack', ">= 1.1.13")
25
+ gem.add_dependency('trinidad_jars', '>= 1.3.0', '< 1.5.0')
26
+ gem.add_dependency('jruby-rack', '~> 1.1.13')
26
27
 
27
28
  gem.add_development_dependency('rake')
28
- gem.add_development_dependency('rspec', '~> 2.12.0')
29
+ gem.add_development_dependency('rspec', '~> 2.14.1')
29
30
  gem.add_development_dependency('mocha', '~> 0.12.1')
30
31
  gem.add_development_dependency('fakefs', '>= 0.4.0')
31
32
 
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trinidad
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
5
- prerelease:
4
+ version: 1.4.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - David Calavera
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-14 00:00:00.000000000 Z
11
+ date: 2013-12-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: trinidad_jars
@@ -17,30 +16,32 @@ dependencies:
17
16
  requirements:
18
17
  - - '>='
19
18
  - !ruby/object:Gem::Version
20
- version: 1.2.3
21
- none: false
19
+ version: 1.3.0
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: 1.5.0
22
23
  requirement: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - '>='
25
26
  - !ruby/object:Gem::Version
26
- version: 1.2.3
27
- none: false
27
+ version: 1.3.0
28
+ - - <
29
+ - !ruby/object:Gem::Version
30
+ version: 1.5.0
28
31
  prerelease: false
29
32
  type: :runtime
30
33
  - !ruby/object:Gem::Dependency
31
34
  name: jruby-rack
32
35
  version_requirements: !ruby/object:Gem::Requirement
33
36
  requirements:
34
- - - '>='
37
+ - - ~>
35
38
  - !ruby/object:Gem::Version
36
39
  version: 1.1.13
37
- none: false
38
40
  requirement: !ruby/object:Gem::Requirement
39
41
  requirements:
40
- - - '>='
42
+ - - ~>
41
43
  - !ruby/object:Gem::Version
42
44
  version: 1.1.13
43
- none: false
44
45
  prerelease: false
45
46
  type: :runtime
46
47
  - !ruby/object:Gem::Dependency
@@ -50,13 +51,11 @@ dependencies:
50
51
  - - '>='
51
52
  - !ruby/object:Gem::Version
52
53
  version: '0'
53
- none: false
54
54
  requirement: !ruby/object:Gem::Requirement
55
55
  requirements:
56
56
  - - '>='
57
57
  - !ruby/object:Gem::Version
58
58
  version: '0'
59
- none: false
60
59
  prerelease: false
61
60
  type: :development
62
61
  - !ruby/object:Gem::Dependency
@@ -65,14 +64,12 @@ dependencies:
65
64
  requirements:
66
65
  - - ~>
67
66
  - !ruby/object:Gem::Version
68
- version: 2.12.0
69
- none: false
67
+ version: 2.14.1
70
68
  requirement: !ruby/object:Gem::Requirement
71
69
  requirements:
72
70
  - - ~>
73
71
  - !ruby/object:Gem::Version
74
- version: 2.12.0
75
- none: false
72
+ version: 2.14.1
76
73
  prerelease: false
77
74
  type: :development
78
75
  - !ruby/object:Gem::Dependency
@@ -82,13 +79,11 @@ dependencies:
82
79
  - - ~>
83
80
  - !ruby/object:Gem::Version
84
81
  version: 0.12.1
85
- none: false
86
82
  requirement: !ruby/object:Gem::Requirement
87
83
  requirements:
88
84
  - - ~>
89
85
  - !ruby/object:Gem::Version
90
86
  version: 0.12.1
91
- none: false
92
87
  prerelease: false
93
88
  type: :development
94
89
  - !ruby/object:Gem::Dependency
@@ -98,13 +93,11 @@ dependencies:
98
93
  - - '>='
99
94
  - !ruby/object:Gem::Version
100
95
  version: 0.4.0
101
- none: false
102
96
  requirement: !ruby/object:Gem::Requirement
103
97
  requirements:
104
98
  - - '>='
105
99
  - !ruby/object:Gem::Version
106
100
  version: 0.4.0
107
- none: false
108
101
  prerelease: false
109
102
  type: :development
110
103
  description: Trinidad allows you to run Rails or Rack applications within an embedded Apache Tomcat container. Serves your requests with the elegance of a cat !
@@ -141,8 +134,11 @@ files:
141
134
  - lib/trinidad/web_app.rb
142
135
  - rakelib/tomcat.rake
143
136
  - trinidad.gemspec
144
- homepage: http://github.com/trinidad/trinidad
145
- licenses: []
137
+ homepage: https://github.com/trinidad/trinidad
138
+ licenses:
139
+ - MIT
140
+ - Apache-2.0
141
+ metadata: {}
146
142
  post_install_message:
147
143
  rdoc_options:
148
144
  - --charset=UTF-8
@@ -152,24 +148,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
148
  requirements:
153
149
  - - '>='
154
150
  - !ruby/object:Gem::Version
155
- segments:
156
- - 0
157
151
  version: '0'
158
- hash: 2
159
- none: false
160
152
  required_rubygems_version: !ruby/object:Gem::Requirement
161
153
  requirements:
162
154
  - - '>='
163
155
  - !ruby/object:Gem::Version
164
- segments:
165
- - 0
166
156
  version: '0'
167
- hash: 2
168
- none: false
169
157
  requirements: []
170
158
  rubyforge_project:
171
- rubygems_version: 1.8.24
159
+ rubygems_version: 2.1.9
172
160
  signing_key:
173
- specification_version: 3
161
+ specification_version: 4
174
162
  summary: Web server for Rails/Rack applications built upon JRuby::Rack and Apache Tomcat
175
163
  test_files: []