warbler 0.9.9 → 0.9.10
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 +11 -0
- data/Manifest.txt +2 -2
- data/Rakefile +5 -0
- data/generators/warble/templates/warble.rb +18 -6
- data/lib/{jruby-complete-1.1.1.jar → jruby-complete-1.1.3.jar} +0 -0
- data/lib/{jruby-rack-0.9.jar → jruby-rack-0.9.1.jar} +0 -0
- data/lib/warbler/config.rb +23 -2
- data/lib/warbler/task.rb +7 -2
- data/lib/warbler/version.rb +1 -1
- data/spec/warbler/config_spec.rb +20 -0
- data/spec/warbler/task_spec.rb +21 -1
- metadata +6 -5
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== 0.9.10
|
2
|
+
|
3
|
+
* Upgraded to JRuby-Rack 0.9.1. Fixes JRUBY-2620, JRUBY-2594, JRUBY-2507.
|
4
|
+
* Now verified to work with Camping and Sinatra. See
|
5
|
+
http://github.com/nicksieger/jruby-rack/tree/master/examples for examples
|
6
|
+
of how to configure Warbler to package your Camping and Sinatra apps.
|
7
|
+
* Upgraded to JRuby 1.1.3.
|
8
|
+
* Log files are no longer packaged in the .war file.
|
9
|
+
* Fix #<Warbler::WebxmlOpenStruct ...> appearing in web.xml and document workarounds.
|
10
|
+
* Add config.autodeploy_dir that, when specified, will create the war there.
|
11
|
+
|
1
12
|
== 0.9.9
|
2
13
|
|
3
14
|
* Now shipping with JRuby-Rack 0.9!
|
data/Manifest.txt
CHANGED
@@ -9,8 +9,8 @@ generators/warble
|
|
9
9
|
generators/warble/templates
|
10
10
|
generators/warble/templates/warble.rb
|
11
11
|
generators/warble/warble_generator.rb
|
12
|
-
lib/jruby-complete-1.1.
|
13
|
-
lib/jruby-rack-0.9.jar
|
12
|
+
lib/jruby-complete-1.1.3.jar
|
13
|
+
lib/jruby-rack-0.9.1.jar
|
14
14
|
lib/warbler
|
15
15
|
lib/warbler/config.rb
|
16
16
|
lib/warbler/gems.rb
|
data/Rakefile
CHANGED
@@ -22,6 +22,11 @@ begin
|
|
22
22
|
end
|
23
23
|
hoe.spec.files = MANIFEST
|
24
24
|
hoe.spec.dependencies.delete_if { |dep| dep.name == "hoe" }
|
25
|
+
|
26
|
+
task :gemspec do
|
27
|
+
File.open("#{hoe.name}.gemspec", "w") {|f| f << hoe.spec.to_ruby }
|
28
|
+
end
|
29
|
+
task :package => :gemspec
|
25
30
|
rescue LoadError
|
26
31
|
puts "You really need Hoe installed to be able to package this gem"
|
27
32
|
end
|
@@ -25,14 +25,20 @@ Warbler::Config.new do |config|
|
|
25
25
|
# WEB-INF/classes. The example pathmap below accompanies the java_classes
|
26
26
|
# configuration above. See http://rake.rubyforge.org/classes/String.html#M000017
|
27
27
|
# for details of how to specify a pathmap.
|
28
|
-
# config.pathmaps.java_classes << "%{target/classes/,}"
|
28
|
+
# config.pathmaps.java_classes << "%{target/classes/,}p"
|
29
29
|
|
30
|
-
# Gems to be
|
31
|
-
#
|
32
|
-
#
|
33
|
-
# config.gems
|
30
|
+
# Gems to be included. You need to tell Warbler which gems your application needs
|
31
|
+
# so that they can be packaged in the war file.
|
32
|
+
# The Rails gems are included by default unless the vendor/rails directory is present.
|
33
|
+
# config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl"]
|
34
34
|
# config.gems << "tzinfo"
|
35
|
-
|
35
|
+
|
36
|
+
# Uncomment this if you don't want to package rails gem.
|
37
|
+
# config.gems -= ["rails"]
|
38
|
+
|
39
|
+
# The most recent versions of gems are used.
|
40
|
+
# You can specify versions of gems by using a hash assignment:
|
41
|
+
# config.gems["rails"] = "2.0.2"
|
36
42
|
|
37
43
|
# Include gem dependencies not mentioned specifically
|
38
44
|
config.gem_dependencies = true
|
@@ -54,6 +60,12 @@ Warbler::Config.new do |config|
|
|
54
60
|
# Application booter to use, one of :rack, :rails, or :merb. (Default :rails)
|
55
61
|
# config.webxml.booter = :rails
|
56
62
|
|
63
|
+
# When using the :rack booter, "Rackup" script to use.
|
64
|
+
# The script is evaluated in a Rack::Builder to load the application.
|
65
|
+
# Examples:
|
66
|
+
# config.webxml.rackup = %{require './lib/demo'; run Rack::Adapter::Camping.new(Demo)}
|
67
|
+
# config.webxml.rackup = require 'cgi' && CGI::escapeHTML(File.read("config.ru"))
|
68
|
+
|
57
69
|
# Control the pool of Rails runtimes. Leaving unspecified means
|
58
70
|
# the pool will grow as needed to service requests. It is recommended
|
59
71
|
# that you fix these values when running a production server!
|
Binary file
|
Binary file
|
data/lib/warbler/config.rb
CHANGED
@@ -16,6 +16,11 @@ module Warbler
|
|
16
16
|
# Directory where files will be staged, defaults to tmp/war
|
17
17
|
attr_accessor :staging_dir
|
18
18
|
|
19
|
+
# Directory where the war file will be written. Can be used to direct
|
20
|
+
# Warbler to place your war file directly in your application server's
|
21
|
+
# autodeploy directory. Defaults to the root of the Rails directory.
|
22
|
+
attr_accessor :autodeploy_dir
|
23
|
+
|
19
24
|
# Top-level directories to be copied into WEB-INF. Defaults to
|
20
25
|
# names in TOP_DIRS
|
21
26
|
attr_accessor :dirs
|
@@ -39,6 +44,9 @@ module Warbler
|
|
39
44
|
# Whether to include dependent gems (default true)
|
40
45
|
attr_accessor :gem_dependencies
|
41
46
|
|
47
|
+
# Whether to exclude **/*.log files (default is true)
|
48
|
+
attr_accessor :exclude_logs
|
49
|
+
|
42
50
|
# Public HTML directory file list, to be copied into the root of the war
|
43
51
|
attr_accessor :public_html
|
44
52
|
|
@@ -70,6 +78,12 @@ module Warbler
|
|
70
78
|
# keep around during idle time
|
71
79
|
# * <tt>webxml.jruby.max.runtimes</tt> -- maximum number of pooled Rails
|
72
80
|
# application runtimes
|
81
|
+
#
|
82
|
+
# Note that if you attempt to access webxml configuration keys in a conditional,
|
83
|
+
# you might not obtain the result you want. For example:
|
84
|
+
# <%= webxml.maybe.present.key || 'default' %>
|
85
|
+
# doesn't yield the right result. Instead, you need to generate the context parameters:
|
86
|
+
# <%= webxml.context_params['maybe.present.key'] || 'default' %>
|
73
87
|
attr_accessor :webxml
|
74
88
|
|
75
89
|
def initialize(warbler_home = WARBLER_HOME)
|
@@ -81,6 +95,7 @@ module Warbler
|
|
81
95
|
@java_classes = FileList[]
|
82
96
|
@gems = default_gems
|
83
97
|
@gem_dependencies = true
|
98
|
+
@exclude_logs = true
|
84
99
|
@public_html = FileList["public/**/*"]
|
85
100
|
@pathmaps = default_pathmaps
|
86
101
|
@webxml = default_webxml_config
|
@@ -88,6 +103,7 @@ module Warbler
|
|
88
103
|
@war_name = File.basename(@rails_root)
|
89
104
|
yield self if block_given?
|
90
105
|
@excludes += warbler_vendor_excludes(warbler_home)
|
106
|
+
@excludes += FileList["**/*.log"] if @exclude_logs
|
91
107
|
@excludes << @staging_dir
|
92
108
|
end
|
93
109
|
|
@@ -138,8 +154,9 @@ module Warbler
|
|
138
154
|
end
|
139
155
|
|
140
156
|
class WebxmlOpenStruct < OpenStruct
|
141
|
-
def initialize
|
142
|
-
@
|
157
|
+
def initialize(key = 'webxml')
|
158
|
+
@key = key
|
159
|
+
@table = Hash.new {|h,k| h[k] = WebxmlOpenStruct.new(k) }
|
143
160
|
end
|
144
161
|
|
145
162
|
def servlet_context_listener
|
@@ -169,5 +186,9 @@ module Warbler
|
|
169
186
|
params.delete_if {|k,v| ['ignored', *ignored].include?(k.to_s) }
|
170
187
|
params
|
171
188
|
end
|
189
|
+
|
190
|
+
def to_s
|
191
|
+
"No value for '#@key' found"
|
192
|
+
end
|
172
193
|
end
|
173
194
|
end
|
data/lib/warbler/task.rb
CHANGED
@@ -162,7 +162,9 @@ module Warbler
|
|
162
162
|
with_namespace_and_config do |name, config|
|
163
163
|
desc "Run the jar command to create the .war"
|
164
164
|
task "jar" do
|
165
|
-
|
165
|
+
war_path = "#{config.war_name}.war"
|
166
|
+
war_path = File.join(config.autodeploy_dir, war_path) if config.autodeploy_dir
|
167
|
+
sh "jar cf #{war_path} -C #{config.staging_dir} ."
|
166
168
|
end
|
167
169
|
end
|
168
170
|
end
|
@@ -187,10 +189,13 @@ module Warbler
|
|
187
189
|
end
|
188
190
|
|
189
191
|
def define_webinf_file_tasks
|
192
|
+
target_files = @config.dirs.map do |d|
|
193
|
+
define_file_task(d, "#{@config.staging_dir}/#{apply_pathmaps(d, :application)}")
|
194
|
+
end
|
190
195
|
files = FileList[*(@config.dirs.map{|d| "#{d}/**/*"})]
|
191
196
|
files.include *(@config.includes.to_a)
|
192
197
|
files.exclude *(@config.excludes.to_a)
|
193
|
-
target_files
|
198
|
+
target_files += files.map do |f|
|
194
199
|
define_file_task(f,
|
195
200
|
"#{@config.staging_dir}/#{apply_pathmaps(f, :application)}")
|
196
201
|
end
|
data/lib/warbler/version.rb
CHANGED
data/spec/warbler/config_spec.rb
CHANGED
@@ -41,6 +41,22 @@ describe Warbler::Config do
|
|
41
41
|
config.gems.should be_empty
|
42
42
|
end
|
43
43
|
|
44
|
+
it "should exclude log files by default" do
|
45
|
+
mkdir_p "vendor"
|
46
|
+
touch "vendor/test.log"
|
47
|
+
config = Warbler::Config.new
|
48
|
+
config.exclude_logs.should == true
|
49
|
+
config.excludes.include?("vendor/test.log").should == true
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should include log files if exclude_logs is false" do
|
53
|
+
mkdir_p "vendor"
|
54
|
+
touch "vendor/test.log"
|
55
|
+
config = Warbler::Config.new {|c| c.exclude_logs = false }
|
56
|
+
config.exclude_logs.should == false
|
57
|
+
config.excludes.include?("vendor/test.log").should == false
|
58
|
+
end
|
59
|
+
|
44
60
|
it "should exclude Warbler itself when run as a plugin" do
|
45
61
|
config = Warbler::Config.new
|
46
62
|
config.excludes.include?("vendor/plugins/warbler").should == false
|
@@ -82,6 +98,10 @@ describe Warbler::Config do
|
|
82
98
|
Warbler::Config.new.webxml.context_params.should_not have_key('booter')
|
83
99
|
end
|
84
100
|
|
101
|
+
it "should have a helpful string representation for an empty key" do
|
102
|
+
Warbler::Config.new.webxml.missing_key.to_s.should =~ /No value for 'missing_key' found/
|
103
|
+
end
|
104
|
+
|
85
105
|
#it "should automatically gems used by the web application" do
|
86
106
|
# gem "actionpack"
|
87
107
|
# config = Warbler::Config.new
|
data/spec/warbler/task_spec.rb
CHANGED
@@ -11,12 +11,14 @@ describe Warbler::Task do
|
|
11
11
|
@rake = Rake::Application.new
|
12
12
|
Rake.application = @rake
|
13
13
|
mkdir_p "public"
|
14
|
+
mkdir_p "log"
|
14
15
|
touch "public/index.html"
|
16
|
+
touch "log/test.log"
|
15
17
|
@config = Warbler::Config.new do |config|
|
16
18
|
config.staging_dir = "pkg/tmp/war"
|
17
19
|
config.war_name = "warbler"
|
18
20
|
config.gems = ["rake"]
|
19
|
-
config.dirs = %w(bin generators lib)
|
21
|
+
config.dirs = %w(bin generators log lib)
|
20
22
|
config.public_html = FileList["public/**/*", "tasks/**/*"]
|
21
23
|
config.webxml.jruby.max.runtimes = 5
|
22
24
|
end
|
@@ -28,6 +30,7 @@ describe Warbler::Task do
|
|
28
30
|
Rake::Task["warble:clean"].invoke
|
29
31
|
rm_rf "public"
|
30
32
|
rm_rf "config"
|
33
|
+
rm_rf "log"
|
31
34
|
end
|
32
35
|
|
33
36
|
def define_tasks(*tasks)
|
@@ -68,6 +71,13 @@ describe Warbler::Task do
|
|
68
71
|
file_list(%r{WEB-INF/gems/specifications/rake.*\.gemspec}).should_not be_empty
|
69
72
|
end
|
70
73
|
|
74
|
+
it "should define a app task for copying application files" do
|
75
|
+
define_tasks "app", "gems"
|
76
|
+
Rake::Task["warble:app"].invoke
|
77
|
+
file_list(%r{WEB-INF/log}).should_not be_empty
|
78
|
+
file_list(%r{WEB-INF/log/*.log}).should be_empty
|
79
|
+
end
|
80
|
+
|
71
81
|
def expand_webxml
|
72
82
|
define_tasks "webxml"
|
73
83
|
Rake::Task["warble:webxml"].invoke
|
@@ -179,6 +189,16 @@ describe Warbler::Task do
|
|
179
189
|
File.exist?("warbler.war").should == true
|
180
190
|
end
|
181
191
|
|
192
|
+
it "should accept an autodeploy directory where the war should be created" do
|
193
|
+
define_tasks "jar"
|
194
|
+
require 'tempfile'
|
195
|
+
@config.autodeploy_dir = Dir::tmpdir
|
196
|
+
mkdir_p @config.staging_dir
|
197
|
+
touch "#{@config.staging_dir}/file.txt"
|
198
|
+
Rake::Task["warble:jar"].invoke
|
199
|
+
File.exist?(File.join("#{Dir::tmpdir}","warbler.war")).should == true
|
200
|
+
end
|
201
|
+
|
182
202
|
it "should define a war task for bundling up everything" do
|
183
203
|
app_ran = false; task "warble:app" do; app_ran = true; end
|
184
204
|
public_ran = false; task "warble:public" do; public_ran = true; end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warbler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sieger
|
@@ -9,11 +9,12 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-07-26 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
17
|
+
type: :runtime
|
17
18
|
version_requirement:
|
18
19
|
version_requirements: !ruby/object:Gem::Requirement
|
19
20
|
requirements:
|
@@ -44,8 +45,8 @@ files:
|
|
44
45
|
- generators/warble/templates
|
45
46
|
- generators/warble/templates/warble.rb
|
46
47
|
- generators/warble/warble_generator.rb
|
47
|
-
- lib/jruby-complete-1.1.
|
48
|
-
- lib/jruby-rack-0.9.jar
|
48
|
+
- lib/jruby-complete-1.1.3.jar
|
49
|
+
- lib/jruby-rack-0.9.1.jar
|
49
50
|
- lib/warbler
|
50
51
|
- lib/warbler/config.rb
|
51
52
|
- lib/warbler/gems.rb
|
@@ -80,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
81
|
requirements: []
|
81
82
|
|
82
83
|
rubyforge_project: caldersphere
|
83
|
-
rubygems_version: 1.0
|
84
|
+
rubygems_version: 1.2.0
|
84
85
|
signing_key:
|
85
86
|
specification_version: 2
|
86
87
|
summary: Warbler chirpily constructs .war files of your Rails applications.
|