trinidad 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +17 -0
- data/README.md +1 -1
- data/lib/trinidad/configuration.rb +5 -2
- data/lib/trinidad/logging.rb +45 -20
- data/lib/trinidad/server.rb +7 -3
- data/lib/trinidad/version.rb +1 -1
- data/lib/trinidad/web_app.rb +82 -10
- metadata +33 -27
data/History.txt
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
== Trinidad 1.4.4 (2012-10-19)
|
|
2
|
+
|
|
3
|
+
* make sure setting FileHandler's rotatable to false works (#82)
|
|
4
|
+
* first draft for web-app logging configuration to avoid use hacks e.g.
|
|
5
|
+
for disabling rotation (this feature is not yet official and might change)
|
|
6
|
+
* fix new lines (ala default Rails.logger) in console output
|
|
7
|
+
* set correct (JRuby-Rack) layout for web apps and use app.root
|
|
8
|
+
(besides rails.root)
|
|
9
|
+
* check whether (jruby.) params are specified in system properties (#92)
|
|
10
|
+
* fix JUL::ConsoleHandler - not setting up JRuby streams correctly (#88)
|
|
11
|
+
|
|
12
|
+
== Trinidad_jars 1.1.1 (2012-10-17)
|
|
13
|
+
|
|
14
|
+
* Tomcat 7.0.32 http://tomcat.apache.org/tomcat-7.0-doc/changelog.html
|
|
15
|
+
* avoid using the "global" (and redundant) TRINIDAD_LIBS constant
|
|
16
|
+
* load the .jar files instead of requiring them (no more $: polution)
|
|
17
|
+
|
|
1
18
|
== Trinidad 1.4.3 (2012-09-20)
|
|
2
19
|
|
|
3
20
|
* allow to keep (and configure) the jsp servlet (support for serving .jsp pages)
|
data/README.md
CHANGED
|
@@ -235,7 +235,7 @@ This monitor file can be customized with the `monitor` configuration option.
|
|
|
235
235
|
Since version **1.4.0** Trinidad supports 2 reload strategies :
|
|
236
236
|
|
|
237
237
|
* **restart** (default) synchronous reloading (exposed by Tomcat). This strategy
|
|
238
|
-
pauses incoming requests while it reloads the application and
|
|
238
|
+
pauses incoming requests while it reloads the application and then serves them
|
|
239
239
|
once ready (or timeouts if it takes too long). It has been chosen as the default
|
|
240
240
|
strategy since **1.4.0** due it's more predictable memory requirements.
|
|
241
241
|
|
|
@@ -40,8 +40,10 @@ module Trinidad
|
|
|
40
40
|
:public => 'public',
|
|
41
41
|
:java_lib => 'lib/java',
|
|
42
42
|
:default_web_xml => 'config/web.xml',
|
|
43
|
-
:jruby_min_runtimes =>
|
|
44
|
-
|
|
43
|
+
:jruby_min_runtimes =>
|
|
44
|
+
java.lang.System.getProperty('jruby.min.runtimes') || 1,
|
|
45
|
+
:jruby_max_runtimes =>
|
|
46
|
+
java.lang.System.getProperty('jruby.max.runtimes') || 5,
|
|
45
47
|
:log => 'INFO',
|
|
46
48
|
:trap => true
|
|
47
49
|
}
|
|
@@ -110,6 +112,7 @@ module Trinidad
|
|
|
110
112
|
|
|
111
113
|
# a Hash like deep_merge helper
|
|
112
114
|
def self.merge_options(target, current, deep = true)
|
|
115
|
+
return target unless current
|
|
113
116
|
target_dup = target.dup
|
|
114
117
|
current.keys.each do |key|
|
|
115
118
|
target_dup[key] =
|
data/lib/trinidad/logging.rb
CHANGED
|
@@ -15,13 +15,11 @@ module Trinidad
|
|
|
15
15
|
|
|
16
16
|
root_logger = JUL::Logger.getLogger('')
|
|
17
17
|
level = parse_log_level(log_level, :INFO)
|
|
18
|
-
|
|
19
|
-
out_handler
|
|
20
|
-
out_handler.setOutputStream JRuby.runtime.out
|
|
18
|
+
|
|
19
|
+
out_handler = new_console_handler JRuby.runtime.out
|
|
21
20
|
out_handler.formatter = console_formatter
|
|
22
21
|
|
|
23
|
-
err_handler
|
|
24
|
-
err_handler.setOutputStream JRuby.runtime.err
|
|
22
|
+
err_handler = new_console_handler JRuby.runtime.err
|
|
25
23
|
err_handler.formatter = console_formatter
|
|
26
24
|
err_handler.level = level.intValue > JUL::Level::WARNING.intValue ?
|
|
27
25
|
level : JUL::Level::WARNING # only >= WARNING on STDERR
|
|
@@ -69,16 +67,24 @@ module Trinidad
|
|
|
69
67
|
logger = JUL::Logger.getLogger(logger_name) # exclusive for web app
|
|
70
68
|
# avoid duplicate calls - do not configure our FileHandler twice :
|
|
71
69
|
return false if logger.handlers.find { |h| h.is_a?(FileHandler) }
|
|
72
|
-
|
|
73
|
-
logger.level = level
|
|
70
|
+
logging = web_app.logging
|
|
71
|
+
logger.level = parse_log_level(logging[:level], nil)
|
|
74
72
|
# delegate to root (console) output only in development mode :
|
|
75
|
-
logger.use_parent_handlers =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
logger.use_parent_handlers = logging[:use_parent_handlers]
|
|
74
|
+
# logging:
|
|
75
|
+
# file:
|
|
76
|
+
# dir: log # [RAILS_ROOT]/log
|
|
77
|
+
# prefix: production
|
|
78
|
+
# suffix: .log
|
|
79
|
+
if file = logging[:file]
|
|
80
|
+
prefix, suffix = file[:prefix], file[:suffix] # {prefix}{date}{suffix}
|
|
81
|
+
file_handler = FileHandler.new(file[:dir] || file[:directory], prefix, suffix)
|
|
82
|
+
file_handler.rotatable = file.key?(:rotatable) ? file[:rotatable] : file[:rotate]
|
|
83
|
+
file_handler.buffer_size = file[:buffer_size] if file[:buffer_size]
|
|
84
|
+
format = file.key?(:format) ? file[:format] : logging[:format]
|
|
85
|
+
file_handler.formatter = web_app_formatter(format) # nil uses default
|
|
86
|
+
logger.add_handler(file_handler)
|
|
87
|
+
end
|
|
82
88
|
logger
|
|
83
89
|
end
|
|
84
90
|
|
|
@@ -88,9 +94,9 @@ module Trinidad
|
|
|
88
94
|
MessageFormatter.new
|
|
89
95
|
end
|
|
90
96
|
|
|
91
|
-
def self.web_app_formatter
|
|
97
|
+
def self.web_app_formatter(format = nil)
|
|
92
98
|
# format used by Rails "2012-06-13 16:42:21 +0200"
|
|
93
|
-
DefaultFormatter.new(
|
|
99
|
+
DefaultFormatter.new(format.nil? ? 'yyyy-MM-dd HH:mm:ss Z' : format)
|
|
94
100
|
end
|
|
95
101
|
|
|
96
102
|
private
|
|
@@ -122,6 +128,24 @@ module Trinidad
|
|
|
122
128
|
context.find_parameter(name) || web_app.web_xml_context_param(name)
|
|
123
129
|
end
|
|
124
130
|
|
|
131
|
+
JUL::ConsoleHandler.class_eval do
|
|
132
|
+
field_accessor :sealed rescue nil
|
|
133
|
+
field_writer :writer rescue nil
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def self.new_console_handler(stream)
|
|
137
|
+
handler = JUL::ConsoleHandler.new # sets output stream to System.err
|
|
138
|
+
handler.writer = nil if handler.respond_to?(:writer=) # avoid writer.close
|
|
139
|
+
if handler.respond_to?(:sealed) && handler.sealed
|
|
140
|
+
handler.sealed = false # avoid manager security checks
|
|
141
|
+
handler.setOutputStream(stream) # closes previous writer if != null
|
|
142
|
+
handler.sealed = true
|
|
143
|
+
else
|
|
144
|
+
handler.setOutputStream(stream)
|
|
145
|
+
end
|
|
146
|
+
handler
|
|
147
|
+
end
|
|
148
|
+
|
|
125
149
|
# we'd achieve logging to a production.log file while rotating it (daily)
|
|
126
150
|
class FileHandler < Java::OrgApacheJuli::FileHandler # :nodoc
|
|
127
151
|
|
|
@@ -133,7 +157,7 @@ module Trinidad
|
|
|
133
157
|
|
|
134
158
|
def initialize(directory, prefix, suffix)
|
|
135
159
|
super(directory, prefix, suffix)
|
|
136
|
-
self._date =
|
|
160
|
+
self._date = nil # to openWriter on first #publish(record)
|
|
137
161
|
end
|
|
138
162
|
|
|
139
163
|
def openWriter
|
|
@@ -223,7 +247,7 @@ module Trinidad
|
|
|
223
247
|
msg << formatThrown(record).to_s
|
|
224
248
|
# since we're going to print Rails.logger logs and they tend
|
|
225
249
|
# to already have the ending "\n" handle such cases nicely :
|
|
226
|
-
if
|
|
250
|
+
if context_name(record.getLoggerName)
|
|
227
251
|
(lns = LINE_SEP) == msg[-1, 1] ? msg : msg << lns
|
|
228
252
|
else
|
|
229
253
|
msg << LINE_SEP
|
|
@@ -231,10 +255,11 @@ module Trinidad
|
|
|
231
255
|
end
|
|
232
256
|
|
|
233
257
|
# e.g. org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/foo]
|
|
234
|
-
|
|
258
|
+
# or org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[default]
|
|
259
|
+
WEB_APP_LOGGER_NAME = /^org\.apache\.catalina\.core\.ContainerBase.*?\[(.*?)\]$/
|
|
235
260
|
|
|
236
261
|
private
|
|
237
|
-
def
|
|
262
|
+
def context_name(name)
|
|
238
263
|
( match = (name || '').match(WEB_APP_LOGGER_NAME) ) && match[1]
|
|
239
264
|
end
|
|
240
265
|
|
data/lib/trinidad/server.rb
CHANGED
|
@@ -190,7 +190,7 @@ module Trinidad
|
|
|
190
190
|
# We must create them before creating the applications.
|
|
191
191
|
@config[:web_apps].each do |_, app_config|
|
|
192
192
|
if host_names = app_config.delete(:hosts)
|
|
193
|
-
dir = app_config
|
|
193
|
+
dir = web_app_root_dir(app_config)
|
|
194
194
|
apps_base = File.dirname(dir) == '.' ? dir : File.dirname(dir)
|
|
195
195
|
app_config[:host] = create_host(apps_base, host_names)
|
|
196
196
|
end
|
|
@@ -225,10 +225,10 @@ module Trinidad
|
|
|
225
225
|
private
|
|
226
226
|
|
|
227
227
|
def add_default_web_app!(config)
|
|
228
|
-
if !config[:web_apps] && !config[:apps_base] && !config[:hosts]
|
|
228
|
+
if ! config[:web_apps] && ! config[:apps_base] && ! config[:hosts]
|
|
229
229
|
default_app = {
|
|
230
230
|
:context_path => config[:context_path],
|
|
231
|
-
:
|
|
231
|
+
:root_dir => web_app_root_dir(config),
|
|
232
232
|
:log => config[:log]
|
|
233
233
|
}
|
|
234
234
|
default_app[:rackup] = config[:rackup] if config[:rackup]
|
|
@@ -237,6 +237,10 @@ module Trinidad
|
|
|
237
237
|
end
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
+
def web_app_root_dir(config, default = Dir.pwd)
|
|
241
|
+
config[:root_dir] || config[:web_app_dir] || default
|
|
242
|
+
end
|
|
243
|
+
|
|
240
244
|
def generate_default_keystore(config)
|
|
241
245
|
keystore_file = java.io.File.new(config[:keystoreFile])
|
|
242
246
|
|
data/lib/trinidad/version.rb
CHANGED
data/lib/trinidad/web_app.rb
CHANGED
|
@@ -30,12 +30,13 @@ module Trinidad
|
|
|
30
30
|
use_default ? default_config.key?(key) : false
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
%w{ root_dir
|
|
34
|
-
rackup log async_supported reload_strategy }.each do |method|
|
|
33
|
+
%w{ root_dir rackup log async_supported reload_strategy }.each do |method|
|
|
35
34
|
class_eval "def #{method}; self[:'#{method}']; end"
|
|
36
35
|
end
|
|
37
36
|
alias_method :web_app_dir, :root_dir # is getting deprecated soon
|
|
38
37
|
|
|
38
|
+
def app_root; root_dir; end
|
|
39
|
+
|
|
39
40
|
def context_path
|
|
40
41
|
path = self[:context_path] || self[:path]
|
|
41
42
|
path ? path.to_s : path
|
|
@@ -54,7 +55,7 @@ module Trinidad
|
|
|
54
55
|
if min = config[:jruby_min_runtimes]
|
|
55
56
|
return min.to_i # min specified overrides :threadsafe
|
|
56
57
|
else # but :threadsafe takes precendence over default :
|
|
57
|
-
self[:threadsafe] ? 1 :
|
|
58
|
+
self[:threadsafe] ? 1 : fetch_default_config_value(:jruby_min_runtimes)
|
|
58
59
|
end
|
|
59
60
|
end
|
|
60
61
|
|
|
@@ -62,12 +63,25 @@ module Trinidad
|
|
|
62
63
|
if max = config[:jruby_max_runtimes]
|
|
63
64
|
return max.to_i # max specified overrides :threadsafe
|
|
64
65
|
else # but :threadsafe takes precendence over default :
|
|
65
|
-
self[:threadsafe] ? 1 :
|
|
66
|
+
self[:threadsafe] ? 1 : fetch_default_config_value(:jruby_max_runtimes)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def jruby_initial_runtimes
|
|
71
|
+
if ini = config[:jruby_initial_runtimes]
|
|
72
|
+
return ini.to_i # min specified overrides :threadsafe
|
|
73
|
+
else # but :threadsafe takes precendence over default :
|
|
74
|
+
self[:threadsafe] ? 1 :
|
|
75
|
+
fetch_default_config_value(:jruby_initial_runtimes, jruby_min_runtimes)
|
|
66
76
|
end
|
|
67
77
|
end
|
|
68
78
|
|
|
69
79
|
def jruby_runtime_acquire_timeout
|
|
70
|
-
|
|
80
|
+
fetch_config_value(:jruby_runtime_acquire_timeout, 5.0) # default 10s seems too high
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def jruby_compat_version
|
|
84
|
+
fetch_config_value(:jruby_compat_version, RUBY_VERSION)
|
|
71
85
|
end
|
|
72
86
|
|
|
73
87
|
def environment; self[:environment] || @@defaults[:environment]; end # TODO check web.xml
|
|
@@ -125,10 +139,11 @@ module Trinidad
|
|
|
125
139
|
@context_params ||= {}
|
|
126
140
|
add_context_param 'jruby.min.runtimes', jruby_min_runtimes
|
|
127
141
|
add_context_param 'jruby.max.runtimes', jruby_max_runtimes
|
|
128
|
-
add_context_param 'jruby.initial.runtimes',
|
|
142
|
+
add_context_param 'jruby.initial.runtimes', jruby_initial_runtimes
|
|
129
143
|
add_context_param 'jruby.runtime.acquire.timeout', jruby_runtime_acquire_timeout
|
|
130
|
-
add_context_param 'jruby.compat.version', jruby_compat_version
|
|
131
|
-
add_context_param 'public.root',
|
|
144
|
+
add_context_param 'jruby.compat.version', jruby_compat_version
|
|
145
|
+
add_context_param 'public.root', public_root
|
|
146
|
+
add_context_param 'jruby.rack.layout_class', layout_class
|
|
132
147
|
@context_params
|
|
133
148
|
end
|
|
134
149
|
# @deprecated replaced with {#context_params}
|
|
@@ -141,6 +156,22 @@ module Trinidad
|
|
|
141
156
|
end
|
|
142
157
|
end
|
|
143
158
|
|
|
159
|
+
def logging
|
|
160
|
+
@logging ||= begin
|
|
161
|
+
defaults = {
|
|
162
|
+
:level => log, # backwards compatibility
|
|
163
|
+
:use_parent_handlers => environment == 'development',
|
|
164
|
+
:file => {
|
|
165
|
+
:dir => log_dir,
|
|
166
|
+
:prefix => environment,
|
|
167
|
+
:suffix => '.log',
|
|
168
|
+
:rotate => true
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
Trinidad::Configuration.merge_options(defaults, self[:logging])
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
144
175
|
def deployment_descriptor
|
|
145
176
|
return nil if @deployment_descriptor == false
|
|
146
177
|
@deployment_descriptor ||= expand_path(web_xml) || false
|
|
@@ -357,8 +388,25 @@ module Trinidad
|
|
|
357
388
|
raise NotImplementedError.new "context_listener expected to be redefined"
|
|
358
389
|
end
|
|
359
390
|
|
|
391
|
+
if Gem::Version.create(JRuby::Rack::VERSION) > Gem::Version.create('1.1.10')
|
|
392
|
+
def layout_class
|
|
393
|
+
'JRuby::Rack::FileSystemLayout' # handles Rails as well as Rack
|
|
394
|
+
end
|
|
395
|
+
else
|
|
396
|
+
def layout_class
|
|
397
|
+
# NOTE: we'll also need to do a GEM_PATH hack to avoid a bug :
|
|
398
|
+
if gem_path = ENV['GEM_PATH']
|
|
399
|
+
add_context_param 'gem.path', gem_path
|
|
400
|
+
# ENV['GEM_PATH'] will contain twice the same entry(ies) ...
|
|
401
|
+
end
|
|
402
|
+
add_context_param 'rails.root', app_root # still boots a rack app
|
|
403
|
+
'JRuby::Rack::RailsFilesystemLayout' # no plain FS layout defined !
|
|
404
|
+
end
|
|
405
|
+
end
|
|
406
|
+
|
|
360
407
|
def complete_config!
|
|
361
408
|
config[:root_dir] ||= self.class.root_dir(config, default_config)
|
|
409
|
+
config[:root_dir] = File.expand_path(config[:root_dir])
|
|
362
410
|
config[:context_path] = self.class.context_path(config, default_config)
|
|
363
411
|
end
|
|
364
412
|
|
|
@@ -439,6 +487,21 @@ module Trinidad
|
|
|
439
487
|
end
|
|
440
488
|
end
|
|
441
489
|
end
|
|
490
|
+
|
|
491
|
+
def fetch_config_value(name, default = nil)
|
|
492
|
+
value = config[name]
|
|
493
|
+
value.nil? ? fetch_default_config_value(name, default) : value
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
def fetch_default_config_value(name, default = nil)
|
|
497
|
+
value = default_config[name]
|
|
498
|
+
if value.nil?
|
|
499
|
+
# JRuby-Rack names: jruby_min_runtimes -> jruby.min.runtimes :
|
|
500
|
+
value = java.lang.System.getProperty(name.to_s.gsub('_', '.'))
|
|
501
|
+
value ||= default
|
|
502
|
+
end
|
|
503
|
+
value
|
|
504
|
+
end
|
|
442
505
|
|
|
443
506
|
def logger
|
|
444
507
|
@logger ||= Trinidad::Logging::LogFactory.getLog('')
|
|
@@ -570,6 +633,7 @@ module Trinidad
|
|
|
570
633
|
class RackupWebApp < WebApp
|
|
571
634
|
|
|
572
635
|
def context_params
|
|
636
|
+
add_context_param 'app.root', app_root
|
|
573
637
|
add_context_param 'rack.env', environment
|
|
574
638
|
if rackup = self.rackup
|
|
575
639
|
rackup = File.join(rackup, 'config.ru') if File.directory?(rackup)
|
|
@@ -586,8 +650,8 @@ module Trinidad
|
|
|
586
650
|
class RailsWebApp < WebApp
|
|
587
651
|
|
|
588
652
|
def context_params
|
|
653
|
+
add_context_param 'rails.root', app_root
|
|
589
654
|
add_context_param 'rails.env', environment
|
|
590
|
-
add_context_param 'rails.root', '/'
|
|
591
655
|
super
|
|
592
656
|
end
|
|
593
657
|
|
|
@@ -604,6 +668,10 @@ module Trinidad
|
|
|
604
668
|
end
|
|
605
669
|
end
|
|
606
670
|
|
|
671
|
+
#def layout_class
|
|
672
|
+
#'JRuby::Rack::RailsFileSystemLayout'
|
|
673
|
+
#end
|
|
674
|
+
|
|
607
675
|
private
|
|
608
676
|
|
|
609
677
|
def self.threadsafe?(app_base, environment)
|
|
@@ -623,7 +691,7 @@ module Trinidad
|
|
|
623
691
|
def context_path
|
|
624
692
|
super.gsub(/\.war$/, '')
|
|
625
693
|
end
|
|
626
|
-
|
|
694
|
+
|
|
627
695
|
def log_dir
|
|
628
696
|
@log_dir ||= self[:log_dir] || File.join(work_dir, 'log')
|
|
629
697
|
end
|
|
@@ -640,6 +708,10 @@ module Trinidad
|
|
|
640
708
|
Trinidad::Lifecycle::WebApp::War.new(self)
|
|
641
709
|
end
|
|
642
710
|
|
|
711
|
+
def layout_class
|
|
712
|
+
'JRuby::Rack::WebInfLayout'
|
|
713
|
+
end
|
|
714
|
+
|
|
643
715
|
end
|
|
644
716
|
|
|
645
717
|
end
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: trinidad
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 1.4.
|
|
5
|
+
version: 1.4.4
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- David Calavera
|
|
@@ -10,96 +10,96 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date: 2012-
|
|
13
|
+
date: 2012-10-19 00:00:00 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: trinidad_jars
|
|
17
|
-
|
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
17
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
|
19
18
|
none: false
|
|
20
19
|
requirements:
|
|
21
20
|
- - ">="
|
|
22
21
|
- !ruby/object:Gem::Version
|
|
23
22
|
version: 1.1.0
|
|
23
|
+
requirement: *id001
|
|
24
|
+
prerelease: false
|
|
24
25
|
type: :runtime
|
|
25
|
-
version_requirements: *id001
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: jruby-rack
|
|
28
|
-
|
|
29
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
|
28
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
|
30
29
|
none: false
|
|
31
30
|
requirements:
|
|
32
31
|
- - ">="
|
|
33
32
|
- !ruby/object:Gem::Version
|
|
34
33
|
version: 1.1.10
|
|
34
|
+
requirement: *id002
|
|
35
|
+
prerelease: false
|
|
35
36
|
type: :runtime
|
|
36
|
-
version_requirements: *id002
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
38
38
|
name: rack
|
|
39
|
-
|
|
40
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
|
39
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
|
41
40
|
none: false
|
|
42
41
|
requirements:
|
|
43
42
|
- - ">="
|
|
44
43
|
- !ruby/object:Gem::Version
|
|
45
44
|
version: "0"
|
|
45
|
+
requirement: *id003
|
|
46
|
+
prerelease: false
|
|
46
47
|
type: :development
|
|
47
|
-
version_requirements: *id003
|
|
48
48
|
- !ruby/object:Gem::Dependency
|
|
49
49
|
name: rake
|
|
50
|
-
|
|
51
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
|
50
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
|
52
51
|
none: false
|
|
53
52
|
requirements:
|
|
54
53
|
- - ">="
|
|
55
54
|
- !ruby/object:Gem::Version
|
|
56
55
|
version: "0"
|
|
56
|
+
requirement: *id004
|
|
57
|
+
prerelease: false
|
|
57
58
|
type: :development
|
|
58
|
-
version_requirements: *id004
|
|
59
59
|
- !ruby/object:Gem::Dependency
|
|
60
60
|
name: rspec
|
|
61
|
-
|
|
62
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
|
61
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
|
63
62
|
none: false
|
|
64
63
|
requirements:
|
|
65
64
|
- - ~>
|
|
66
65
|
- !ruby/object:Gem::Version
|
|
67
66
|
version: "2.10"
|
|
67
|
+
requirement: *id005
|
|
68
|
+
prerelease: false
|
|
68
69
|
type: :development
|
|
69
|
-
version_requirements: *id005
|
|
70
70
|
- !ruby/object:Gem::Dependency
|
|
71
71
|
name: mocha
|
|
72
|
-
|
|
73
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
|
72
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
|
74
73
|
none: false
|
|
75
74
|
requirements:
|
|
76
75
|
- - ">="
|
|
77
76
|
- !ruby/object:Gem::Version
|
|
78
77
|
version: "0"
|
|
78
|
+
requirement: *id006
|
|
79
|
+
prerelease: false
|
|
79
80
|
type: :development
|
|
80
|
-
version_requirements: *id006
|
|
81
81
|
- !ruby/object:Gem::Dependency
|
|
82
82
|
name: fakefs
|
|
83
|
-
|
|
84
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
|
83
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
|
85
84
|
none: false
|
|
86
85
|
requirements:
|
|
87
86
|
- - ">="
|
|
88
87
|
- !ruby/object:Gem::Version
|
|
89
88
|
version: 0.4.0
|
|
89
|
+
requirement: *id007
|
|
90
|
+
prerelease: false
|
|
90
91
|
type: :development
|
|
91
|
-
version_requirements: *id007
|
|
92
92
|
- !ruby/object:Gem::Dependency
|
|
93
93
|
name: sinatra
|
|
94
|
-
|
|
95
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
|
94
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
|
96
95
|
none: false
|
|
97
96
|
requirements:
|
|
98
97
|
- - ">="
|
|
99
98
|
- !ruby/object:Gem::Version
|
|
100
99
|
version: "0"
|
|
100
|
+
requirement: *id008
|
|
101
|
+
prerelease: false
|
|
101
102
|
type: :development
|
|
102
|
-
version_requirements: *id008
|
|
103
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 !
|
|
104
104
|
email: calavera@apache.org
|
|
105
105
|
executables:
|
|
@@ -147,17 +147,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
147
147
|
requirements:
|
|
148
148
|
- - ">="
|
|
149
149
|
- !ruby/object:Gem::Version
|
|
150
|
+
hash: 2
|
|
151
|
+
segments:
|
|
152
|
+
- 0
|
|
150
153
|
version: "0"
|
|
151
154
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
155
|
none: false
|
|
153
156
|
requirements:
|
|
154
157
|
- - ">="
|
|
155
158
|
- !ruby/object:Gem::Version
|
|
159
|
+
hash: 2
|
|
160
|
+
segments:
|
|
161
|
+
- 0
|
|
156
162
|
version: "0"
|
|
157
163
|
requirements: []
|
|
158
164
|
|
|
159
165
|
rubyforge_project:
|
|
160
|
-
rubygems_version: 1.8.
|
|
166
|
+
rubygems_version: 1.8.24
|
|
161
167
|
signing_key:
|
|
162
168
|
specification_version: 3
|
|
163
169
|
summary: Web server for Rails/Rack applications built upon JRuby::Rack and Apache Tomcat
|