trinidad_valve_extension 0.4 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ pkg
2
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source :rubygems
2
+ gemspec
@@ -1,3 +1,9 @@
1
+ == 0.5.0 (2012-07-31)
2
+
3
+ * support for alternate (more intuitive) configuration
4
+ * Trinidad 1.4.0 compatibility (use symbols as configuration Hash keys)
5
+ * bundlify gem development & release process
6
+
1
7
  == 0.4.0 (2011-09-22)
2
8
 
3
9
  * Better error messaging when incorrect types or properties are configured
@@ -0,0 +1,61 @@
1
+ # Trinidad Valve Extension
2
+
3
+ This is an extension to allow Tomcat valves to be configured and attached to web
4
+ applications running under [Trinidad](https://github.com/trinidad/trinidad/).
5
+ Built-in Tomcat valves or any valve implementation accessible within the
6
+ application's class-path can be used.
7
+
8
+ A list of built-in valves can be found at: http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html
9
+
10
+ ## Installation
11
+
12
+ jruby -S gem install trinidad_valve_extension
13
+
14
+ ## Configuration
15
+
16
+ This extension will configure valves from a list of hashes that contain the
17
+ properties that configure each valve. The **'className'** key might be used to
18
+ define what valve class is being configured, just as when configuring tomcat
19
+ using the traditional *context.xml* file.
20
+ Tomcat valves (from the org.apache.catalina.valves package) might be specified
21
+ simply as class name keys followed by a configuration for it's properties.
22
+ Substitutions for values referenced within **${}** will be performed with Java's
23
+ system properties.
24
+
25
+ To enable the extension, specify at least one valve configuration with *valves*
26
+ under the *extensions* key e.g. :
27
+
28
+ ```
29
+ ---
30
+ # ...
31
+ extensions:
32
+ valves:
33
+ AccessLogValve: # class-name under org.apache.catalina.valves
34
+ directory: log
35
+ crawler_session_manager_valve: # underscored class-name
36
+ # leave defaults
37
+ remote_address_filter: # not a class-name since className specified
38
+ className: org.apache.catalina.valves.RemoteAddrValve
39
+ allow: "127\.0\.0\.1"
40
+ ```
41
+
42
+ Alternatively, you can still use the traditional (old) syntax using the *valve*
43
+ extension element with *valves* specified as an array e.g. :
44
+
45
+ ---
46
+ extensions:
47
+ valve:
48
+ valves:
49
+ - className: org.apache.catalina.valves.AccessLogValve
50
+ pattern: "%h %l %u %t \"%r\" %s %b %T %S"
51
+ directory: "log"
52
+ prefix: "access_log"
53
+ suffix: ".log"
54
+ fileDateFormat: ".yyyy-MM-dd"
55
+ - className: org.apache.catalina.valves.CrawlerSessionManagerValve
56
+ sessionInactiveInterval: 42
57
+ ```
58
+
59
+ # Copyright
60
+
61
+ Copyright (c) 2011 Michael Leinartas. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,156 +1,14 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'date'
1
+ require 'bundler/setup'
2
+ Bundler::GemHelper.install_tasks
4
3
 
5
- ## Credit
6
- # Copied from https://github.com/trinidad/trinidad_init_services/blob/master/Rakefile
7
- #############################################################################
8
- #
9
- # Helper functions
10
- #
11
- #############################################################################
12
-
13
- def name
14
- @name ||= Dir['*.gemspec'].first.split('.').first
15
- end
16
-
17
- def version
18
- line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
19
- line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
20
- end
21
-
22
- def date
23
- Date.today.to_s
24
- end
25
-
26
- def rubyforge_project
27
- name
28
- end
29
-
30
- def gemspec_file
31
- "#{name}.gemspec"
32
- end
33
-
34
- def gem_file
35
- "#{name}-#{version}.gem"
36
- end
37
-
38
- def replace_header(head, header_name)
39
- head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
40
- end
41
-
42
- #############################################################################
43
- #
44
- # Standard tasks
45
- #
46
- #############################################################################
4
+ desc "Clean pkg directory"
5
+ task(:clean) { sh "rm -rf pkg/" }
47
6
 
48
7
  task :default => :test
49
8
 
50
- require 'rake/testtask'
51
- Rake::TestTask.new(:test) do |test|
52
- test.libs << 'lib' << 'test'
53
- test.pattern = 'test/**/test_*.rb'
54
- test.verbose = true
55
- end
56
-
57
- desc "Generate RCov test coverage and open in your browser"
58
- task :coverage do
59
- require 'rcov'
60
- sh "rm -fr coverage"
61
- sh "rcov test/test_*.rb"
62
- sh "open coverage/index.html"
63
- end
64
-
65
- require 'rake/rdoctask'
66
- Rake::RDocTask.new do |rdoc|
67
- rdoc.rdoc_dir = 'rdoc'
68
- rdoc.title = "#{name} #{version}"
69
- rdoc.rdoc_files.include('README*')
70
- rdoc.rdoc_files.include('lib/**/*.rb')
71
- end
72
-
73
- desc "Open an irb session preloaded with this library"
74
- task :console do
75
- sh "irb -rubygems -r ./lib/#{name}.rb"
76
- end
77
-
78
- #############################################################################
79
- #
80
- # Custom tasks (add your own tasks here)
81
- #
82
- #############################################################################
83
-
84
-
85
-
86
- #############################################################################
87
- #
88
- # Packaging tasks
89
- #
90
- #############################################################################
91
-
92
- desc 'Release gem'
93
- task :release => :build do
94
- unless `git branch` =~ /^\* master$/
95
- puts "You must be on the master branch to release!"
96
- exit!
97
- end
98
- sh "git commit --allow-empty -a -m 'Release #{version}'"
99
- sh "git tag v#{version}"
100
- sh "git push origin master"
101
- sh "git push --tags"
102
- sh "gem push pkg/#{gem_file}"
103
- end
104
-
105
- desc 'Build gem'
106
- task :build => :gemspec do
107
- sh "mkdir -p pkg"
108
- sh "gem build #{gemspec_file}"
109
- sh "mv #{gem_file} pkg"
110
- end
111
-
112
- desc 'Install gem'
113
- task :install => :build do
114
- sh "gem install pkg/#{gem_file}"
115
- end
116
-
117
- desc 'Create gemspec'
118
- task :gemspec => :validate do
119
- # read spec file and split out manifest section
120
- spec = File.read(gemspec_file)
121
- head, manifest, tail = spec.split(" # = MANIFEST =\n")
122
-
123
- # replace name version and date
124
- replace_header(head, :name)
125
- replace_header(head, :version)
126
- replace_header(head, :date)
127
- #comment this out if your rubyforge_project has a different name
128
- replace_header(head, :rubyforge_project)
129
-
130
- # determine file list from git ls-files
131
- files = `git ls-files`.
132
- split("\n").
133
- sort.
134
- reject { |file| file =~ /^\./ }.
135
- reject { |file| file =~ /^(rdoc|pkg)/ }.
136
- map { |file| " #{file}" }.
137
- join("\n")
138
-
139
- # piece file back together and write
140
- manifest = " s.files = %w[\n#{files}\n ]\n"
141
- spec = [head, manifest, tail].join(" # = MANIFEST =\n")
142
- File.open(gemspec_file, 'w') { |io| io.write(spec) }
143
- puts "Updated #{gemspec_file}"
144
- end
145
-
146
- task :validate do
147
- libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
148
- unless libfiles.empty?
149
- puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
150
- exit!
151
- end
152
- unless Dir['VERSION*'].empty?
153
- puts "A `VERSION` file at root level violates Gem best practices."
154
- exit!
155
- end
9
+ task(:test) do
10
+ test = ENV['TEST'] || File.join(Dir.getwd, "test/**/*_test.rb")
11
+ test_opts = (ENV['TESTOPTS'] || '').split(' ')
12
+ test_opts = test_opts.push *FileList[test].to_a
13
+ ruby "-Isrc/main/ruby:src/test/ruby", "-S", "testrb", *test_opts
156
14
  end
@@ -1,65 +1,92 @@
1
1
  module Trinidad
2
2
  module Extensions
3
- module Valve
4
- VERSION = '0.4'
5
- end
6
-
7
3
  class ValveWebAppExtension < WebAppExtension
8
- def configure(tomcat, app_context)
9
- @logger = app_context.logger
10
4
 
11
- @options[:valves] ||= Array.new
5
+ def configure(tomcat, context)
6
+ @logger = context.logger
7
+
8
+ if @options.has_key?(:valves) # 'old' syntax
9
+ valves = (@options[:valves] ||= Array.new)
10
+ else
11
+ valves = @options
12
+ end
12
13
 
13
- if not @options[:valves].empty?
14
- @options[:valves].each do |valve_properties|
15
- valve_properties = valve_properties.clone
16
- class_name = valve_properties.delete 'className'
14
+ unless valves.empty?
15
+ valves.each do |name, properties| # Hash or Array
16
+ if properties.nil? && name.is_a?(Hash)
17
+ properties, name = name, nil
18
+ end
19
+ properties = properties ? properties.dup : {}
20
+ class_name = properties.delete(:className) || name
17
21
 
18
- if not class_name
19
- @logger.warn("Tomcat valve defined without a 'className' attribute. Skipping valve definition: '#{valve_properties.inspect}'")
22
+ unless class_name
23
+ logger.warn "Valve defined without a 'className' attribute, " +
24
+ "skipping valve definition: #{properties.inspect}"
20
25
  next
21
26
  end
22
27
 
23
28
  begin
24
- valve = get_valve(class_name)
29
+ valve = get_valve(class_name.to_s)
25
30
  rescue NameError => e
26
- @logger.warn("Tomcat valve '#{class_name}' not found. Ensure valve exists in your classpath")
31
+ @logger.warn "Valve '#{class_name}' not found (#{e.message}), " +
32
+ "ensure valve class is in your class-path"
27
33
  next
28
34
  end
29
35
 
30
- set_valve_properties(valve, valve_properties)
36
+ set_valve_properties(valve, properties)
31
37
 
32
38
  # Add the valve to the context using the suggested getPipeline()
33
- app_context.pipeline.add_valve(valve)
39
+ context.pipeline.add_valve(valve)
34
40
  end
35
41
  end
36
42
  end
37
43
 
44
+ protected
45
+
38
46
  def get_valve(valve_name)
39
- valve_class = Java::JavaClass.for_name valve_name
40
- valve_instance = valve_class.constructor.new_instance.to_java
47
+ class_name = valve_name.index('.') ? valve_name : camelize(valve_name)
48
+ begin
49
+ valve_class = Java::JavaClass.for_name(class_name)
50
+ rescue NameError => e
51
+ if class_name.index('.').nil?
52
+ class_name = "org.apache.catalina.valves.#{class_name}"
53
+ valve_class = Java::JavaClass.for_name(class_name)
54
+ else
55
+ raise e
56
+ end
57
+ end
58
+ valve_class.constructor.new_instance.to_java
41
59
  end
42
60
 
43
61
  def set_valve_properties(valve_instance, properties)
44
- properties.each do |option,value|
62
+ properties.each do |option, value|
63
+ value = replace_properties(value) if value.is_a?(String)
45
64
  begin
46
- if value.kind_of? String
47
- value = replace_properties(value)
48
- end
49
- valve_instance.send("#{option}=", value)
50
-
65
+ valve_instance.send("#{option}=", value)
51
66
  rescue TypeError => e
52
- @logger.warn("Incorrect type passed for property '#{option}' on valve '#{valve_instance.java_class}'. Skipping property")
67
+ @logger.warn "Incorrect type passed for property '#{option}' on valve " +
68
+ "'#{valve_instance.java_class}' (#{e.message}), skipping property"
53
69
  rescue NoMethodError => e
54
- @logger.warn("No settable property '#{option}' found on valve '#{valve_instance.java_class}'")
70
+ @logger.warn "Not settable property '#{option}' found on valve " +
71
+ "'#{valve_instance.java_class}', skipping property"
55
72
  end
56
73
  end
57
74
  end
58
75
 
76
+ private
77
+
78
+ def camelize(string)
79
+ string = string.sub(/^[a-z\d]*/) { $&.capitalize }
80
+ string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }
81
+ string
82
+ end
83
+
84
+ java_import 'org.apache.tomcat.util.IntrospectionUtils'
85
+
59
86
  def replace_properties(text)
60
- java_import 'org.apache.tomcat.util.IntrospectionUtils'
61
- IntrospectionUtils.replace_properties(text, java.lang.System.getProperties(), nil)
87
+ IntrospectionUtils.replace_properties(text, java.lang.System.getProperties, nil)
62
88
  end
89
+
63
90
  end
64
91
  end
65
92
  end
@@ -0,0 +1,7 @@
1
+ module Trinidad
2
+ module Extensions
3
+ module Valve
4
+ VERSION = '0.5'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'trinidad_valve_extension'
2
+
3
+ # alternative extension name so we can configure as:
4
+ # ---
5
+ # trap: false
6
+ # extensions:
7
+ # valves:
8
+ # AccessLogValve:
9
+ # directory: logs
10
+ # suffix: .log
11
+ # crawler_session_manager_valve:
12
+ # sessionInactiveInterval: 42
13
+ #
14
+ module Trinidad
15
+ module Extensions
16
+ ValvesWebAppExtension = ValveWebAppExtension
17
+ end
18
+ end
@@ -0,0 +1,2 @@
1
+ use Rack::CommonLogger
2
+ run Proc.new { [200, {'Content-Type' => 'text/plain'}, 'OK'] }
@@ -0,0 +1,12 @@
1
+ ---
2
+ trap: false
3
+ extensions:
4
+ valves:
5
+ AccessLogValve:
6
+ directory: logs
7
+ suffix: .log
8
+ crawler_session_manager_valve:
9
+ # leave defaults
10
+ remote_address_filter:
11
+ className: org.apache.catalina.valves.RemoteAddrValve
12
+ allow: "127\\.0\\.0\\.1"
@@ -0,0 +1,15 @@
1
+ ---
2
+ environment: production
3
+ port: 4444
4
+ trap: false
5
+ extensions:
6
+ valve:
7
+ valves:
8
+ - className: "org.apache.catalina.valves.AccessLogValve"
9
+ pattern: "%h %l %u %t \"%r\" %s %b %T %S"
10
+ directory: "log"
11
+ prefix: "xxx_access"
12
+ suffix: ".xxx"
13
+ fileDateFormat: ".yyyy-MM-dd"
14
+ - className: org.apache.catalina.valves.CrawlerSessionManagerValve
15
+ sessionInactiveInterval: 42
@@ -0,0 +1,8 @@
1
+ require 'bundler/setup'
2
+
3
+ require 'test/unit'
4
+ require 'mocha'
5
+
6
+ require "trinidad"
7
+
8
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
@@ -0,0 +1,78 @@
1
+ require File.expand_path('test_helper', File.dirname(__FILE__))
2
+ require 'yaml'
3
+
4
+ module Trinidad
5
+ module Extensions
6
+ class ValveWebAppExtensionTest < Test::Unit::TestCase
7
+
8
+ APP_DIR = File.expand_path('app', File.dirname(__FILE__))
9
+
10
+ test "configures specified valves" do
11
+ options = YAML.load( File.read(File.join(APP_DIR, 'trinidad.yml')) )
12
+ Trinidad.configure!(options)
13
+ web_app = create_web_app; context = create_web_app_context(web_app)
14
+
15
+ Trinidad::Extensions.configure_webapp_extensions(web_app.extensions, tomcat, context)
16
+
17
+ assert_not_nil context.pipeline
18
+ assert_not_nil context.pipeline.valves
19
+ valves = context.pipeline.valves.to_a
20
+
21
+ assert_equal 3, valves.size, valves.map { |v| v.toString }.inspect
22
+ assert_instance_of org.apache.catalina.valves.AccessLogValve, valves[0], valves[0].class.name
23
+ assert_equal '.xxx', valves[0].getSuffix
24
+ assert_equal 'xxx_access', valves[0].getPrefix
25
+ assert_equal 'log', valves[0].getDirectory
26
+ assert_instance_of org.apache.catalina.valves.CrawlerSessionManagerValve, valves[1], valves[1].class.name
27
+ assert_equal 42, valves[1].getSessionInactiveInterval
28
+ end
29
+
30
+ test "configures alternatively with className resolved from keys" do
31
+ options = YAML.load( File.read(File.join(APP_DIR, 'trinidad-alt.yml')) )
32
+ Trinidad.configure!(options)
33
+ web_app = create_web_app; context = create_web_app_context(web_app)
34
+
35
+ Trinidad::Extensions.configure_webapp_extensions(web_app.extensions, tomcat, context)
36
+
37
+ assert_not_nil context.pipeline
38
+ assert_not_nil context.pipeline.valves
39
+ valves = context.pipeline.valves.to_a
40
+
41
+ assert_equal 4, valves.size, valves.map { |v| v.toString }.inspect
42
+ assert_instance_of org.apache.catalina.valves.AccessLogValve, valves[0], valves[0].class.name
43
+ assert_equal '.log', valves[0].getSuffix
44
+ assert_equal 'logs', valves[0].getDirectory
45
+ assert_instance_of org.apache.catalina.valves.CrawlerSessionManagerValve, valves[1], valves[1].class.name
46
+ assert_instance_of org.apache.catalina.valves.RemoteAddrValve, valves[2], valves[2].class.name
47
+ assert_equal "127\\.0\\.0\\.1", valves[2].getAllow
48
+ end
49
+
50
+ private
51
+
52
+ def tomcat
53
+ @tomcat ||= org.apache.catalina.startup.Tomcat.new
54
+ end
55
+
56
+ def create_web_app(config = {})
57
+ Trinidad::WebApp.create({
58
+ :context_path => '/', :web_app_dir => APP_DIR
59
+ }.merge(config)
60
+ )
61
+ end
62
+
63
+ def create_web_app_context(context_dir = APP_DIR, web_app_or_context_path = '/')
64
+ context_path, lifecycle = web_app_or_context_path, nil
65
+ if web_app_or_context_path.is_a?(Trinidad::WebApp)
66
+ context_path = web_app_or_context_path.context_path
67
+ lifecycle = web_app_or_context_path.define_lifecycle
68
+ end
69
+ context = tomcat.addWebapp(context_path, context_dir.to_s)
70
+ context_config = org.apache.catalina.startup.ContextConfig.new
71
+ context.addLifecycleListener context_config
72
+ context.addLifecycleListener lifecycle if lifecycle
73
+ context
74
+ end
75
+
76
+ end
77
+ end
78
+ end
@@ -1,69 +1,29 @@
1
- ## This is the rakegem gemspec template. Make sure you read and understand
2
- ## all of the comments. Some sections require modification, and others can
3
- ## be deleted if you don't need them. Once you understand the contents of
4
- ## this file, feel free to delete any comments that begin with two hash marks.
5
- ## You can find comprehensive Gem::Specification documentation, at
6
- ## http://docs.rubygems.org/read/chapter/20
7
- Gem::Specification.new do |s|
8
- s.specification_version = 2 if s.respond_to? :specification_version=
9
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
- s.rubygems_version = '1.3.5'
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "trinidad_valve_extension/version"
11
4
 
12
- ## Leave these as is they will be modified for you by the rake gemspec task.
13
- ## If your rubyforge_project name is different, then edit it and comment out
14
- ## the sub! line in the Rakefile
5
+ Gem::Specification.new do |s|
15
6
  s.name = 'trinidad_valve_extension'
16
- s.version = '0.4'
17
- s.date = '2011-08-22'
7
+ s.version = Trinidad::Extensions::Valve::VERSION
18
8
  s.rubyforge_project = 'trinidad_valve_extension'
19
-
20
- ## Make sure your summary is short. The description may be as long
21
- ## as you like.
9
+
22
10
  s.summary = "Trinidad extension to add and configure Tomcat valves"
23
- s.description = "Trinidad extension to add and configure Tomcat valves. Built-in Tomcat valves are always available but any valve existing in the classpath can be used"
24
-
25
- ## List the primary authors. If there are a bunch of authors, it's probably
26
- ## better to set the email to an email list or something. If you don't have
27
- ## a custom homepage, consider using your GitHub URL or the like.
11
+ s.description = "Trinidad extension to add and configure Tomcat valves. " +
12
+ "Built-in Tomcat valves are always available but any valve present in the class-path can be used."
13
+
28
14
  s.authors = ["Michael Leinartas"]
29
15
  s.email = 'mleinartas@gmail.com'
30
- s.homepage = 'http://github.com/mleinart/trinidad_valve_extension'
31
-
32
- ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
33
- ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
16
+ s.homepage = 'http://github.com/trinidad/trinidad_valve_extension'
17
+
34
18
  s.require_paths = %w[lib]
35
-
36
- ## If your gem includes any executables, list them here.
37
- s.executables = []
38
- #s.default_executable = ''
39
-
40
- ## Specify any RDoc options here. You'll want to add your README and
41
- ## LICENSE files to the extra_rdoc_files list.
19
+ s.files = `git ls-files`.split("\n")
20
+
42
21
  s.rdoc_options = ["--charset=UTF-8"]
43
- s.extra_rdoc_files = %w[README LICENSE]
44
-
45
- ## List your runtime dependencies here. Runtime dependencies are those
46
- ## that are needed for an end user to actually USE your code.
47
- s.add_dependency('trinidad', '>=1.1.0')
48
-
49
- ## Leave this section as-is. It will be automatically generated from the
50
- ## contents of your Git repository via the gemspec task. DO NOT REMOVE
51
- ## THE MANIFEST COMMENTS, they are used as delimiters by the task.
52
- # = MANIFEST =
53
- s.files = %w[
54
- History.txt
55
- LICENSE
56
- README
57
- Rakefile
58
- lib/trinidad_valve_extension.rb
59
- trinidad_valve_extension.gemspec
60
- ]
61
- # = MANIFEST =
62
-
63
- ## Test files will be grabbed from the file list. Make sure the path glob
64
- ## matches what you actually use.
65
- ## s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
66
-
67
- #s.post_install_message = <<TEXT
68
- #TEXT
22
+ s.extra_rdoc_files = %w[ README.md LICENSE ]
23
+
24
+ s.add_dependency('trinidad', '>= 1.3.5')
25
+
26
+ s.add_development_dependency('rake')
27
+ s.add_development_dependency('test-unit')
28
+ s.add_development_dependency('mocha')
69
29
  end
metadata CHANGED
@@ -1,80 +1,118 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trinidad_valve_extension
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 4
8
- version: "0.4"
4
+ prerelease:
5
+ version: "0.5"
9
6
  platform: ruby
10
7
  authors:
11
- - Michael Leinartas
8
+ - Michael Leinartas
12
9
  autorequire:
13
10
  bindir: bin
14
11
  cert_chain: []
15
12
 
16
- date: 2011-08-22 00:00:00 -05:00
17
- default_executable:
13
+ date: 2012-07-31 00:00:00 Z
18
14
  dependencies:
19
- - !ruby/object:Gem::Dependency
20
- name: trinidad
21
- prerelease: false
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- segments:
27
- - 1
28
- - 1
29
- - 0
30
- version: 1.1.0
31
- type: :runtime
32
- version_requirements: *id001
33
- description: Trinidad extension to add and configure Tomcat valves. Built-in Tomcat valves are always available but any valve existing in the classpath can be used
15
+ - !ruby/object:Gem::Dependency
16
+ name: trinidad
17
+ version_requirements: &id001 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.3.5
23
+ requirement: *id001
24
+ prerelease: false
25
+ type: :runtime
26
+ - !ruby/object:Gem::Dependency
27
+ name: rake
28
+ version_requirements: &id002 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ requirement: *id002
35
+ prerelease: false
36
+ type: :development
37
+ - !ruby/object:Gem::Dependency
38
+ name: test-unit
39
+ version_requirements: &id003 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ requirement: *id003
46
+ prerelease: false
47
+ type: :development
48
+ - !ruby/object:Gem::Dependency
49
+ name: mocha
50
+ version_requirements: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ requirement: *id004
57
+ prerelease: false
58
+ type: :development
59
+ description: Trinidad extension to add and configure Tomcat valves. Built-in Tomcat valves are always available but any valve present in the class-path can be used.
34
60
  email: mleinartas@gmail.com
35
61
  executables: []
36
62
 
37
63
  extensions: []
38
64
 
39
65
  extra_rdoc_files:
40
- - README
41
- - LICENSE
66
+ - README.md
67
+ - LICENSE
42
68
  files:
43
- - History.txt
44
- - LICENSE
45
- - README
46
- - Rakefile
47
- - lib/trinidad_valve_extension.rb
48
- - trinidad_valve_extension.gemspec
49
- has_rdoc: true
50
- homepage: http://github.com/mleinart/trinidad_valve_extension
69
+ - .gitignore
70
+ - Gemfile
71
+ - History.txt
72
+ - LICENSE
73
+ - README.md
74
+ - Rakefile
75
+ - lib/trinidad_valve_extension.rb
76
+ - lib/trinidad_valve_extension/version.rb
77
+ - lib/trinidad_valves_extension.rb
78
+ - test/app/config.ru
79
+ - test/app/trinidad-alt.yml
80
+ - test/app/trinidad.yml
81
+ - test/test_helper.rb
82
+ - test/trinidad_valve_extension_test.rb
83
+ - trinidad_valve_extension.gemspec
84
+ homepage: http://github.com/trinidad/trinidad_valve_extension
51
85
  licenses: []
52
86
 
53
87
  post_install_message:
54
88
  rdoc_options:
55
- - --charset=UTF-8
89
+ - --charset=UTF-8
56
90
  require_paths:
57
- - lib
91
+ - lib
58
92
  required_ruby_version: !ruby/object:Gem::Requirement
93
+ none: false
59
94
  requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- segments:
63
- - 0
64
- version: "0"
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ hash: 2
98
+ segments:
99
+ - 0
100
+ version: "0"
65
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
66
103
  requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- segments:
70
- - 0
71
- version: "0"
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 2
107
+ segments:
108
+ - 0
109
+ version: "0"
72
110
  requirements: []
73
111
 
74
112
  rubyforge_project: trinidad_valve_extension
75
- rubygems_version: 1.3.6
113
+ rubygems_version: 1.8.15
76
114
  signing_key:
77
- specification_version: 2
115
+ specification_version: 3
78
116
  summary: Trinidad extension to add and configure Tomcat valves
79
117
  test_files: []
80
118
 
data/README DELETED
@@ -1,33 +0,0 @@
1
- Trinidad Valve Extension
2
- ========================
3
-
4
- # DESCRIPTION
5
-
6
- This is an extension to allow Tomcat valves to be configured and attached to webapps running under Trinidad. Any valve accessible within the classpath can be used. Built-in Tomcat valves are available without extra dependencies. A list of available built-in valves can be found at: http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html
7
-
8
- # INSTALLATION
9
-
10
- jruby -S gem install trinidad_valve_extension
11
-
12
- # CONFIGURATION
13
-
14
- This extension will configure valves from a list of hashes that contain the properties that configure each valve. 'className' is used to define what valve class is being configured, just as when configuring tomcat using the traditional context.xml. Substitutions are done with system properties for values referenced within ${}.
15
-
16
- To enable the extension, add the 'valve' element to the 'extensions' key and define at least one valve. An example of an AccessLogValve:
17
-
18
- ---
19
- extensions:
20
- valve:
21
- valves:
22
- - className: "org.apache.catalina.valves.AccessLogValve"
23
- directory: "log"
24
- prefix: "access_log"
25
- fileDateFormat: ".yyyy-MM-dd"
26
- suffix: ".log"
27
- pattern: "%h %l %u %t \"%r\" %s %b %T %S"
28
-
29
-
30
- You can find further information on how to write your own extension in the wiki: http://wiki.github.com/calavera/trinidad/extensions
31
-
32
- # Copyright
33
- Copyright (c) 2011 Michael Leinartas. See LICENSE for details.