warbler 0.9.1 → 0.9.2
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 +7 -2
- data/LICENSES.txt +1 -1
- data/Manifest.txt +5 -2
- data/README.txt +1 -1
- data/Rakefile +16 -2
- data/generators/warble/templates/warble.rb +14 -1
- data/lib/backport-util-concurrent-3.0.jar +0 -0
- data/lib/goldspike-1.4.jar +0 -0
- data/lib/{jruby-complete-1.0.1.jar → jruby-complete-1.0.3.jar} +0 -0
- data/lib/warbler/config.rb +39 -9
- data/lib/warbler/gems.rb +27 -0
- data/lib/warbler/task.rb +43 -14
- data/lib/warbler/version.rb +1 -1
- data/lib/warbler.rb +1 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/warbler/config_spec.rb +15 -0
- data/spec/warbler/gems_spec.rb +32 -0
- data/spec/warbler/task_spec.rb +61 -8
- metadata +59 -48
- data/lib/goldspike-1.4-SNAPSHOT.jar +0 -0
data/History.txt
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
+
== 0.9.2
|
2
|
+
|
3
|
+
* Update bundled JRuby to version 1.0.3 and Goldspike 1.4.
|
4
|
+
* Add config.java_classes to allow you to copy loose Java classes into WEB-INF/classes.
|
5
|
+
* Make jar command a single command string so that jar creation doesn't fail (works around bug in JRuby 1.0.2)
|
6
|
+
* Use File.join to form staging directory, should produce the proper jar-command path in Windows
|
7
|
+
|
1
8
|
== 0.9.1
|
2
9
|
|
3
|
-
* Bundle Bouncy Castle JCE provider so that Digests work properly. See LICENSES.txt for details of
|
4
|
-
the distribution.
|
5
10
|
* Add rake >= 0.7.3 as a dependency in the gem specification.
|
6
11
|
* Add debug tasks: war:debug, war:debug:gems, war:debug:public, war:debug:app, war:debug:includes,
|
7
12
|
war:debug:excludes, war:debug:java_libs gives you a breakdown of what Warbler expects to package.
|
data/LICENSES.txt
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Warbler is provided under the terms of the MIT license.
|
4
4
|
|
5
|
-
(c) Copyright 2007 Nick Sieger <nicksieger@gmail.com>
|
5
|
+
(c) Copyright 2007-08 Nick Sieger <nicksieger@gmail.com>
|
6
6
|
|
7
7
|
Permission is hereby granted, free of charge, to any person
|
8
8
|
obtaining a copy of this software and associated documentation files
|
data/Manifest.txt
CHANGED
@@ -10,15 +10,18 @@ generators/warble/templates
|
|
10
10
|
generators/warble/templates/warble.rb
|
11
11
|
generators/warble/warble_generator.rb
|
12
12
|
lib/activation-1.1.jar
|
13
|
+
lib/backport-util-concurrent-3.0.jar
|
13
14
|
lib/commons-pool-1.3.jar
|
14
|
-
lib/goldspike-1.4
|
15
|
-
lib/jruby-complete-1.0.
|
15
|
+
lib/goldspike-1.4.jar
|
16
|
+
lib/jruby-complete-1.0.3.jar
|
16
17
|
lib/warbler
|
17
18
|
lib/warbler/config.rb
|
19
|
+
lib/warbler/gems.rb
|
18
20
|
lib/warbler/task.rb
|
19
21
|
lib/warbler/version.rb
|
20
22
|
lib/warbler.rb
|
21
23
|
spec/spec_helper.rb
|
22
24
|
spec/warbler/config_spec.rb
|
25
|
+
spec/warbler/gems_spec.rb
|
23
26
|
spec/warbler/task_spec.rb
|
24
27
|
tasks/warbler.rake
|
data/README.txt
CHANGED
@@ -100,7 +100,7 @@ Warbler source is not currently located in Rubyforge's SVN. To get the source:
|
|
100
100
|
|
101
101
|
Warbler is provided under the terms of the MIT license.
|
102
102
|
|
103
|
-
Warbler (c) 2007 Nick Sieger <nicksieger@gmail.com>
|
103
|
+
Warbler (c) 2007-08 Nick Sieger <nicksieger@gmail.com>
|
104
104
|
|
105
105
|
Warbler also bundles several other pieces of software. Please read the file LICENSES.txt to ensure
|
106
106
|
that you agree with the terms of all the components.
|
data/Rakefile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec/rake/spectask'
|
2
|
+
require 'spec/rake/verify_rcov'
|
2
3
|
|
3
4
|
MANIFEST = FileList["History.txt", "Manifest.txt", "README.txt", "LICENSES.txt", "Rakefile",
|
4
5
|
"*.erb", "bin/*", "generators/**/*", "lib/**/*", "spec/**/*.rb", "tasks/**/*.rake"]
|
@@ -29,9 +30,22 @@ end
|
|
29
30
|
# !@#$ no easy way to empty the default list of prerequisites
|
30
31
|
Rake::Task['default'].send :instance_variable_set, "@prerequisites", FileList[]
|
31
32
|
|
32
|
-
task :default => :
|
33
|
+
task :default => :rcov
|
33
34
|
|
34
35
|
Spec::Rake::SpecTask.new do |t|
|
35
36
|
t.spec_opts ||= []
|
36
|
-
t.spec_opts << "--
|
37
|
+
t.spec_opts << "--options" << "spec/spec.opts"
|
37
38
|
end
|
39
|
+
|
40
|
+
Spec::Rake::SpecTask.new("spec:rcov") do |t|
|
41
|
+
t.rcov = true
|
42
|
+
end
|
43
|
+
# so we don't confuse autotest
|
44
|
+
RCov::VerifyTask.new(:rcov) do |t|
|
45
|
+
t.threshold = 100
|
46
|
+
end
|
47
|
+
|
48
|
+
task "spec:rcov" do
|
49
|
+
rm_f "Manifest.txt"
|
50
|
+
end
|
51
|
+
task :rcov => "spec:rcov"
|
@@ -18,11 +18,21 @@ Warbler::Config.new do |config|
|
|
18
18
|
# own versions if you directly set the value
|
19
19
|
# config.java_libs += FileList["lib/java/*.jar"]
|
20
20
|
|
21
|
+
# Loose Java classes and miscellaneous files to be placed in WEB-INF/classes.
|
22
|
+
# config.java_classes = FileList["target/classes/**.*"]
|
23
|
+
|
24
|
+
# One or more pathmaps defining how the java classes should be copied into
|
25
|
+
# WEB-INF/classes. The example pathmap below accompanies the java_classes
|
26
|
+
# configuration above. See http://rake.rubyforge.org/classes/String.html#M000017
|
27
|
+
# for details of how to specify a pathmap.
|
28
|
+
# config.pathmaps.java_classes << "%{target/classes/,}"
|
29
|
+
|
21
30
|
# Gems to be packaged in the webapp. Note that Rails gems are added to this
|
22
31
|
# list if vendor/rails is not present, so be sure to include rails if you
|
23
32
|
# overwrite the value
|
24
|
-
# config.gems = ["
|
33
|
+
# config.gems = ["activerecord-jdbc-adapter", "jruby-openssl"]
|
25
34
|
# config.gems << "tzinfo"
|
35
|
+
# config.gems["rails"] = "1.2.3"
|
26
36
|
|
27
37
|
# Include gem dependencies not mentioned specifically
|
28
38
|
config.gem_dependencies = true
|
@@ -31,6 +41,9 @@ Warbler::Config.new do |config|
|
|
31
41
|
# will have the leading 'public/' part of the path stripped during staging.
|
32
42
|
# config.public_html = FileList["public/**/*", "doc/**/*"]
|
33
43
|
|
44
|
+
# Pathmaps for controlling how public HTML files are copied into the .war
|
45
|
+
# config.pathmaps.public_html = ["%{public/,}p"]
|
46
|
+
|
34
47
|
# Name of the war file (without the .war) -- defaults to the basename
|
35
48
|
# of RAILS_ROOT
|
36
49
|
# config.war_name = "mywar"
|
Binary file
|
Binary file
|
Binary file
|
data/lib/warbler/config.rb
CHANGED
@@ -11,6 +11,7 @@ module Warbler
|
|
11
11
|
class Config
|
12
12
|
TOP_DIRS = %w(app config lib log vendor tmp)
|
13
13
|
FILE = "config/warble.rb"
|
14
|
+
BUILD_GEMS = %w(warbler rake rcov)
|
14
15
|
|
15
16
|
# Directory where files will be staged, defaults to tmp/war
|
16
17
|
attr_accessor :staging_dir
|
@@ -26,6 +27,9 @@ module Warbler
|
|
26
27
|
# Files to exclude from the WEB-INF directory
|
27
28
|
attr_accessor :excludes
|
28
29
|
|
30
|
+
# Java classes and other files to copy to WEB-INF/classes
|
31
|
+
attr_accessor :java_classes
|
32
|
+
|
29
33
|
# Java libraries to copy to WEB-INF/lib
|
30
34
|
attr_accessor :java_libs
|
31
35
|
|
@@ -38,6 +42,11 @@ module Warbler
|
|
38
42
|
# Public HTML directory file list, to be copied into the root of the war
|
39
43
|
attr_accessor :public_html
|
40
44
|
|
45
|
+
# Container of pathmaps used for specifying source-to-destination transformations
|
46
|
+
# under various situations (<tt>public_html</tt> and <tt>java_classes</tt> are two
|
47
|
+
# entries in this structure).
|
48
|
+
attr_accessor :pathmaps
|
49
|
+
|
41
50
|
# Name of war file (without the .war), defaults to the directory name containing
|
42
51
|
# the Rails application
|
43
52
|
attr_accessor :war_name
|
@@ -73,30 +82,32 @@ module Warbler
|
|
73
82
|
# files.
|
74
83
|
attr_accessor :webxml
|
75
84
|
|
76
|
-
def initialize
|
77
|
-
@staging_dir = "tmp
|
85
|
+
def initialize(warbler_home = WARBLER_HOME)
|
86
|
+
@staging_dir = File.join("tmp", "war")
|
78
87
|
@dirs = TOP_DIRS
|
79
88
|
@includes = FileList[]
|
80
89
|
@excludes = FileList[]
|
81
|
-
@java_libs = FileList["#{
|
90
|
+
@java_libs = FileList["#{warbler_home}/lib/*.jar"]
|
91
|
+
@java_classes = FileList[]
|
82
92
|
@gems = default_gems
|
83
93
|
@gem_dependencies = true
|
84
94
|
@public_html = FileList["public/**/*"]
|
95
|
+
@pathmaps = default_pathmaps
|
85
96
|
@webxml = default_webxml_config
|
86
97
|
@rails_root = File.expand_path(defined?(RAILS_ROOT) ? RAILS_ROOT : Dir.getwd)
|
87
98
|
@war_name = File.basename(@rails_root)
|
88
99
|
yield self if block_given?
|
89
|
-
@excludes += warbler_vendor_excludes
|
100
|
+
@excludes += warbler_vendor_excludes(warbler_home)
|
90
101
|
@excludes << @staging_dir
|
91
102
|
end
|
92
103
|
|
93
|
-
def
|
94
|
-
|
104
|
+
def gems=(value)
|
105
|
+
@gems = Warbler::Gems.new(value)
|
95
106
|
end
|
96
107
|
|
97
108
|
private
|
98
|
-
def warbler_vendor_excludes
|
99
|
-
warbler = File.expand_path(
|
109
|
+
def warbler_vendor_excludes(warbler_home)
|
110
|
+
warbler = File.expand_path(warbler_home)
|
100
111
|
if warbler =~ %r{^#{@rails_root}/(.*)}
|
101
112
|
FileList["#{$1}"]
|
102
113
|
else
|
@@ -104,6 +115,17 @@ module Warbler
|
|
104
115
|
end
|
105
116
|
end
|
106
117
|
|
118
|
+
def default_pathmaps
|
119
|
+
p = OpenStruct.new
|
120
|
+
p.public_html = ["%{public/,}p"]
|
121
|
+
p.java_libs = ["WEB-INF/lib/%f"]
|
122
|
+
p.java_classes = ["WEB-INF/classes/%p"]
|
123
|
+
p.application = ["WEB-INF/%p"]
|
124
|
+
p.gemspecs = ["WEB-INF/gems/specifications/%f"]
|
125
|
+
p.gems = ["WEB-INF/gems/gems/%n"]
|
126
|
+
p
|
127
|
+
end
|
128
|
+
|
107
129
|
def default_webxml_config
|
108
130
|
c = OpenStruct.new
|
109
131
|
c.standalone = true
|
@@ -113,7 +135,15 @@ module Warbler
|
|
113
135
|
end
|
114
136
|
|
115
137
|
def default_gems
|
116
|
-
|
138
|
+
gems = Warbler::Gems.new
|
139
|
+
# Include all gems which are used by the web application, this only works when run as a plugin
|
140
|
+
#for gem in Gem.loaded_specs.values
|
141
|
+
# next if BUILD_GEMS.include?(gem.name)
|
142
|
+
# gems[gem.name] = gem.version.version
|
143
|
+
#end
|
144
|
+
gems << "rails" unless File.directory?("vendor/rails")
|
145
|
+
gems
|
117
146
|
end
|
147
|
+
|
118
148
|
end
|
119
149
|
end
|
data/lib/warbler/gems.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#--
|
2
|
+
# (c) Copyright 2008 Robert Egglestone <r.egglestone@auckland.ac.nz>
|
3
|
+
# See the file LICENSES.txt included with the distribution for
|
4
|
+
# software license details.
|
5
|
+
#++
|
6
|
+
|
7
|
+
module Warbler
|
8
|
+
# A set of gems. This only exists to allow expected operations
|
9
|
+
# to be used to add gems, and for backwards compatibility.
|
10
|
+
# It would be easier to just use a hash.
|
11
|
+
class Gems < Hash
|
12
|
+
ANY_VERSION = nil
|
13
|
+
|
14
|
+
def initialize(gems = nil)
|
15
|
+
if gems.is_a?(Hash)
|
16
|
+
self.merge!(gems)
|
17
|
+
elsif gems.is_a?(Array)
|
18
|
+
gems.each {|gem| self << gem }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def <<(gem)
|
23
|
+
self[gem] ||= ANY_VERSION
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
data/lib/warbler/task.rb
CHANGED
@@ -79,7 +79,7 @@ module Warbler
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def define_gems_task
|
82
|
-
directory "#{
|
82
|
+
directory "#{config.staging_dir}/#{apply_pathmaps("sources-0.0.1.gem", :gems).pathmap("%d")}"
|
83
83
|
targets = define_copy_gems_tasks
|
84
84
|
with_namespace_and_config do
|
85
85
|
desc "Unpack all gems into WEB-INF/gems"
|
@@ -117,7 +117,7 @@ module Warbler
|
|
117
117
|
def define_java_libs_task
|
118
118
|
target_files = @config.java_libs.map do |lib|
|
119
119
|
define_file_task(lib,
|
120
|
-
"#{@config.staging_dir}
|
120
|
+
"#{@config.staging_dir}/#{apply_pathmaps(lib, :java_libs)}")
|
121
121
|
end
|
122
122
|
with_namespace_and_config do |name, config|
|
123
123
|
desc "Copy all java libraries into the .war"
|
@@ -130,6 +130,22 @@ module Warbler
|
|
130
130
|
target_files
|
131
131
|
end
|
132
132
|
|
133
|
+
def define_java_classes_task
|
134
|
+
target_files = @config.java_classes.map do |f|
|
135
|
+
define_file_task(f,
|
136
|
+
"#{@config.staging_dir}/#{apply_pathmaps(f, :java_classes)}")
|
137
|
+
end
|
138
|
+
with_namespace_and_config do |name, config|
|
139
|
+
desc "Copy java classes into the .war"
|
140
|
+
task "java_classes" => target_files
|
141
|
+
task "debug:java_classes" do
|
142
|
+
puts "", "java_classes files:"
|
143
|
+
puts *target_files
|
144
|
+
end
|
145
|
+
end
|
146
|
+
target_files
|
147
|
+
end
|
148
|
+
|
133
149
|
def define_app_task
|
134
150
|
webinf_target_files = define_webinf_file_tasks
|
135
151
|
with_namespace_and_config do |name, config|
|
@@ -157,7 +173,7 @@ module Warbler
|
|
157
173
|
require 'yaml'
|
158
174
|
puts YAML::dump(config)
|
159
175
|
end
|
160
|
-
all_debug_tasks = %w(: app java_libs gems public includes excludes).map do |n|
|
176
|
+
all_debug_tasks = %w(: app java_libs java_classes gems public includes excludes).map do |n|
|
161
177
|
n.sub(/^:?/, "#{name}:debug:").sub(/:$/, '')
|
162
178
|
end
|
163
179
|
task "debug:all" => all_debug_tasks
|
@@ -166,7 +182,7 @@ module Warbler
|
|
166
182
|
|
167
183
|
def define_public_file_tasks
|
168
184
|
@config.public_html.map do |f|
|
169
|
-
define_file_task(f, "#{@config.staging_dir}/#{f
|
185
|
+
define_file_task(f, "#{@config.staging_dir}/#{apply_pathmaps(f, :public_html)}")
|
170
186
|
end
|
171
187
|
end
|
172
188
|
|
@@ -175,9 +191,11 @@ module Warbler
|
|
175
191
|
files.include *(@config.includes.to_a)
|
176
192
|
files.exclude *(@config.excludes.to_a)
|
177
193
|
target_files = files.map do |f|
|
178
|
-
define_file_task(f,
|
194
|
+
define_file_task(f,
|
195
|
+
"#{@config.staging_dir}/#{apply_pathmaps(f, :application)}")
|
179
196
|
end
|
180
197
|
target_files += define_java_libs_task
|
198
|
+
target_files += define_java_classes_task
|
181
199
|
task "#@name:debug:includes" do
|
182
200
|
puts "", "included files:"
|
183
201
|
puts *files.include
|
@@ -210,8 +228,8 @@ module Warbler
|
|
210
228
|
|
211
229
|
def define_copy_gems_tasks
|
212
230
|
targets = []
|
213
|
-
@config.gems.each do |gem|
|
214
|
-
define_single_gem_tasks(gem, targets)
|
231
|
+
@config.gems.each do |gem, version|
|
232
|
+
define_single_gem_tasks(gem, targets, version)
|
215
233
|
end
|
216
234
|
targets
|
217
235
|
end
|
@@ -221,20 +239,23 @@ module Warbler
|
|
221
239
|
fail "gem '#{gem}' not installed" if matched.empty?
|
222
240
|
spec = matched.last
|
223
241
|
|
224
|
-
|
242
|
+
gem_name = "#{spec.name}-#{spec.version}"
|
243
|
+
gem_unpack_task_name = "gem:#{gem_name}"
|
225
244
|
return if Rake::Task.task_defined?(gem_unpack_task_name)
|
226
245
|
|
227
|
-
targets << define_file_task(spec.loaded_from,
|
228
|
-
"#{config.
|
246
|
+
targets << define_file_task(spec.loaded_from,
|
247
|
+
"#{@config.staging_dir}/#{apply_pathmaps(spec.loaded_from, :gemspecs)}")
|
229
248
|
|
230
249
|
task targets.last do
|
231
250
|
Rake::Task[gem_unpack_task_name].invoke
|
232
251
|
end
|
233
252
|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
253
|
+
src = File.join(Gem.dir, 'cache', "#{gem_name}.gem")
|
254
|
+
dest = "#{config.staging_dir}/#{apply_pathmaps(src, :gems)}"
|
255
|
+
|
256
|
+
task gem_unpack_task_name => [dest.pathmap("%d")] do |t|
|
257
|
+
require 'rubygems/installer'
|
258
|
+
Gem::Installer.new(src).unpack(dest)
|
238
259
|
end
|
239
260
|
|
240
261
|
if @config.gem_dependencies
|
@@ -247,5 +268,13 @@ module Warbler
|
|
247
268
|
def erb_binding(webxml)
|
248
269
|
binding
|
249
270
|
end
|
271
|
+
|
272
|
+
def apply_pathmaps(file, pathmaps)
|
273
|
+
pathmaps = @config.pathmaps.send(pathmaps)
|
274
|
+
pathmaps.each do |p|
|
275
|
+
file = file.pathmap(p)
|
276
|
+
end if pathmaps
|
277
|
+
file
|
278
|
+
end
|
250
279
|
end
|
251
280
|
end
|
data/lib/warbler/version.rb
CHANGED
data/lib/warbler.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -10,3 +10,24 @@ require 'spec'
|
|
10
10
|
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
11
11
|
require 'warbler'
|
12
12
|
|
13
|
+
raise %{Error: detected running Warbler specs in a Rails app;
|
14
|
+
Warbler specs are destructive to application directories.} if File.directory?("app")
|
15
|
+
|
16
|
+
def silence(io = nil)
|
17
|
+
require 'stringio'
|
18
|
+
old_stdout = $stdout
|
19
|
+
old_stderr = $stderr
|
20
|
+
$stdout = io || StringIO.new
|
21
|
+
$stderr = io || StringIO.new
|
22
|
+
yield
|
23
|
+
ensure
|
24
|
+
$stdout = old_stdout
|
25
|
+
$stderr = old_stderr
|
26
|
+
end
|
27
|
+
|
28
|
+
def capture(&block)
|
29
|
+
require 'stringio'
|
30
|
+
io = StringIO.new
|
31
|
+
silence(io, &block)
|
32
|
+
io.string
|
33
|
+
end
|
data/spec/warbler/config_spec.rb
CHANGED
@@ -20,6 +20,8 @@ describe Warbler::Config do
|
|
20
20
|
config.war_name.size.should > 0
|
21
21
|
config.webxml.should be_kind_of(OpenStruct)
|
22
22
|
config.webxml.pool.should be_kind_of(OpenStruct)
|
23
|
+
config.pathmaps.should be_kind_of(OpenStruct)
|
24
|
+
config.pathmaps.public_html.should == ["%{public/,}p"]
|
23
25
|
end
|
24
26
|
|
25
27
|
it "should allow configuration through an initializer block" do
|
@@ -39,4 +41,17 @@ describe Warbler::Config do
|
|
39
41
|
config = Warbler::Config.new
|
40
42
|
config.gems.should be_empty
|
41
43
|
end
|
44
|
+
|
45
|
+
it "should exclude Warbler itself when run as a plugin" do
|
46
|
+
config = Warbler::Config.new
|
47
|
+
config.excludes.include?("vendor/plugins/warbler").should == false
|
48
|
+
config = Warbler::Config.new File.join(Dir.getwd, "vendor", "plugins", "warbler")
|
49
|
+
config.excludes.include?("vendor/plugins/warbler").should == true
|
50
|
+
end
|
51
|
+
|
52
|
+
#it "should automatically gems used by the web application" do
|
53
|
+
# gem "actionpack"
|
54
|
+
# config = Warbler::Config.new
|
55
|
+
# config.gems.should include("actionpack")
|
56
|
+
#end
|
42
57
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#--
|
2
|
+
# (c) Copyright 2008 Robert Egglestone <r.egglestone@auckland.ac.nz>
|
3
|
+
# See the file LICENSES.txt included with the distribution for
|
4
|
+
# software license details.
|
5
|
+
#++
|
6
|
+
|
7
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
8
|
+
|
9
|
+
describe Warbler::Gems do
|
10
|
+
it "should accept a hash for initialization" do
|
11
|
+
gems = Warbler::Gems.new({"actionpack" => "1.2.3"})
|
12
|
+
gems.should include("actionpack")
|
13
|
+
gems["actionpack"].should == "1.2.3"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should accept an array for initialization" do
|
17
|
+
gems = Warbler::Gems.new ["activerecord"]
|
18
|
+
gems.should include("activerecord")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should allow gems with a version" do
|
22
|
+
gems = Warbler::Gems.new
|
23
|
+
gems["actionpack"] = "> 1.2.3"
|
24
|
+
gems["actionpack"].should == "> 1.2.3"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should allow gems without an explicit version" do
|
28
|
+
gems = Warbler::Gems.new
|
29
|
+
gems << "actionpack"
|
30
|
+
gems.should include("actionpack")
|
31
|
+
end
|
32
|
+
end
|
data/spec/warbler/task_spec.rb
CHANGED
@@ -10,14 +10,24 @@ describe Warbler::Task do
|
|
10
10
|
before(:each) do
|
11
11
|
@rake = Rake::Application.new
|
12
12
|
Rake.application = @rake
|
13
|
+
mkdir_p "public"
|
14
|
+
touch "public/index.html"
|
13
15
|
@config = Warbler::Config.new do |config|
|
14
16
|
config.staging_dir = "pkg/tmp/war"
|
15
17
|
config.war_name = "warbler"
|
16
18
|
config.gems = ["rake"]
|
17
19
|
config.dirs = %w(bin generators lib)
|
18
|
-
config.public_html = FileList["tasks/**/*"]
|
20
|
+
config.public_html = FileList["public/**/*", "tasks/**/*"]
|
19
21
|
config.webxml.pool.maxActive = 5
|
20
22
|
end
|
23
|
+
verbose(false)
|
24
|
+
end
|
25
|
+
|
26
|
+
after(:each) do
|
27
|
+
define_tasks "clean"
|
28
|
+
Rake::Task["warble:clean"].invoke
|
29
|
+
rm_rf "public"
|
30
|
+
rm_rf "config"
|
21
31
|
end
|
22
32
|
|
23
33
|
def define_tasks(*tasks)
|
@@ -37,12 +47,6 @@ describe Warbler::Task do
|
|
37
47
|
FileList["#{@config.staging_dir}/**/*"].select {|f| f =~ regex }
|
38
48
|
end
|
39
49
|
|
40
|
-
after(:each) do
|
41
|
-
define_tasks "clean"
|
42
|
-
Rake::Task["warble:clean"].invoke
|
43
|
-
rm_rf "config"
|
44
|
-
end
|
45
|
-
|
46
50
|
it "should define a clean task for removing the staging directory" do
|
47
51
|
define_tasks "clean"
|
48
52
|
mkdir_p @config.staging_dir
|
@@ -53,7 +57,8 @@ describe Warbler::Task do
|
|
53
57
|
it "should define a public task for copying the public files" do
|
54
58
|
define_tasks "public"
|
55
59
|
Rake::Task["warble:public"].invoke
|
56
|
-
file_list(%r{
|
60
|
+
file_list(%r{^#{@config.staging_dir}/index\.html}).should_not be_empty
|
61
|
+
file_list(%r{tasks/warbler\.rake}).should_not be_empty
|
57
62
|
end
|
58
63
|
|
59
64
|
it "should define a gems task for unpacking gems" do
|
@@ -80,6 +85,26 @@ describe Warbler::Task do
|
|
80
85
|
).first.text.should == "5"
|
81
86
|
end
|
82
87
|
|
88
|
+
it "should use a config/web.xml if it exists" do
|
89
|
+
define_tasks "webxml"
|
90
|
+
mkdir_p "config"
|
91
|
+
File.open("config/web.xml", "w") {|f| f << "Hi there" }
|
92
|
+
Rake::Task["warble:webxml"].invoke
|
93
|
+
files = file_list(%r{WEB-INF/web.xml$})
|
94
|
+
files.should_not be_empty
|
95
|
+
File.open(files.first) {|f| f.read}.should == "Hi there"
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should use a config/web.xml.erb if it exists" do
|
99
|
+
define_tasks "webxml"
|
100
|
+
mkdir_p "config"
|
101
|
+
File.open("config/web.xml.erb", "w") {|f| f << "Hi <%= webxml.standalone %>" }
|
102
|
+
Rake::Task["warble:webxml"].invoke
|
103
|
+
files = file_list(%r{WEB-INF/web.xml$})
|
104
|
+
files.should_not be_empty
|
105
|
+
File.open(files.first) {|f| f.read}.should == "Hi true"
|
106
|
+
end
|
107
|
+
|
83
108
|
it "should define a java_libs task for copying java libraries" do
|
84
109
|
define_tasks "java_libs"
|
85
110
|
Rake::Task["warble:java_libs"].invoke
|
@@ -153,6 +178,13 @@ describe Warbler::Task do
|
|
153
178
|
Warbler::Task.new "warble", @config
|
154
179
|
}.should raise_error
|
155
180
|
end
|
181
|
+
|
182
|
+
it "should define a java_classes task for copying loose java classes" do
|
183
|
+
@config.java_classes = FileList["Rakefile"]
|
184
|
+
define_tasks "java_classes"
|
185
|
+
Rake::Task["warble:java_classes"].invoke
|
186
|
+
file_list(%r{WEB-INF/classes/Rakefile$}).should_not be_empty
|
187
|
+
end
|
156
188
|
end
|
157
189
|
|
158
190
|
describe "The warbler.rake file" do
|
@@ -164,6 +196,27 @@ describe "The warbler.rake file" do
|
|
164
196
|
output.should =~ /war:gems/
|
165
197
|
output.should =~ /war:jar/
|
166
198
|
output.should =~ /war:java_libs/
|
199
|
+
output.should =~ /war:java_classes/
|
167
200
|
output.should =~ /war:public/
|
168
201
|
end
|
202
|
+
end
|
203
|
+
|
204
|
+
describe "Debug targets" do
|
205
|
+
before(:each) do
|
206
|
+
@rake = Rake::Application.new
|
207
|
+
Rake.application = @rake
|
208
|
+
verbose(false)
|
209
|
+
silence { Warbler::Task.new :war, Object.new }
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should print out lists of files" do
|
213
|
+
capture { Rake::Task["war:debug:public"].invoke }.should =~ /public/
|
214
|
+
capture { Rake::Task["war:debug:gems"].invoke }.should =~ /gems/
|
215
|
+
capture { Rake::Task["war:debug:java_libs"].invoke }.should =~ /java_libs/
|
216
|
+
capture { Rake::Task["war:debug:java_classes"].invoke }.should =~ /java_classes/
|
217
|
+
capture { Rake::Task["war:debug:app"].invoke }.should =~ /app/
|
218
|
+
capture { Rake::Task["war:debug:includes"].invoke }.should =~ /include/
|
219
|
+
capture { Rake::Task["war:debug:excludes"].invoke }.should =~ /exclude/
|
220
|
+
capture { Rake::Task["war:debug"].invoke }.should =~ /Config/
|
221
|
+
end
|
169
222
|
end
|
metadata
CHANGED
@@ -1,33 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: warbler
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.9.
|
7
|
-
date: 2007-12-13 00:00:00 -08:00
|
8
|
-
summary: Warbler chirpily constructs .war files of your Rails applications.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: nick@nicksieger.com
|
12
|
-
homepage: http://caldersphere.rubyforge.org/warbler
|
13
|
-
rubyforge_project: caldersphere
|
14
|
-
description: = Warbler
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.9.2
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Nick Sieger
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-02-18 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.7.3
|
23
|
+
version:
|
24
|
+
description: = Warbler
|
25
|
+
email: nick@nicksieger.com
|
26
|
+
executables:
|
27
|
+
- warble
|
28
|
+
extensions: []
|
29
|
+
|
30
|
+
extra_rdoc_files:
|
31
|
+
- History.txt
|
32
|
+
- Manifest.txt
|
33
|
+
- README.txt
|
34
|
+
- LICENSES.txt
|
31
35
|
files:
|
32
36
|
- History.txt
|
33
37
|
- Manifest.txt
|
@@ -41,42 +45,49 @@ files:
|
|
41
45
|
- generators/warble/templates/warble.rb
|
42
46
|
- generators/warble/warble_generator.rb
|
43
47
|
- lib/activation-1.1.jar
|
48
|
+
- lib/backport-util-concurrent-3.0.jar
|
44
49
|
- lib/commons-pool-1.3.jar
|
45
|
-
- lib/goldspike-1.4
|
46
|
-
- lib/jruby-complete-1.0.
|
50
|
+
- lib/goldspike-1.4.jar
|
51
|
+
- lib/jruby-complete-1.0.3.jar
|
47
52
|
- lib/warbler
|
48
53
|
- lib/warbler/config.rb
|
54
|
+
- lib/warbler/gems.rb
|
49
55
|
- lib/warbler/task.rb
|
50
56
|
- lib/warbler/version.rb
|
51
57
|
- lib/warbler.rb
|
52
58
|
- spec/spec_helper.rb
|
53
59
|
- spec/warbler/config_spec.rb
|
60
|
+
- spec/warbler/gems_spec.rb
|
54
61
|
- spec/warbler/task_spec.rb
|
55
62
|
- tasks/warbler.rake
|
56
|
-
|
57
|
-
|
58
|
-
|
63
|
+
has_rdoc: true
|
64
|
+
homepage: http://caldersphere.rubyforge.org/warbler
|
65
|
+
post_install_message:
|
59
66
|
rdoc_options:
|
60
67
|
- --main
|
61
68
|
- README.txt
|
62
|
-
|
63
|
-
-
|
64
|
-
|
65
|
-
|
66
|
-
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: "0"
|
76
|
+
version:
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: "0"
|
82
|
+
version:
|
71
83
|
requirements: []
|
72
84
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
version:
|
85
|
+
rubyforge_project: caldersphere
|
86
|
+
rubygems_version: 1.0.1
|
87
|
+
signing_key:
|
88
|
+
specification_version: 2
|
89
|
+
summary: Warbler chirpily constructs .war files of your Rails applications.
|
90
|
+
test_files:
|
91
|
+
- spec/warbler/config_spec.rb
|
92
|
+
- spec/warbler/gems_spec.rb
|
93
|
+
- spec/warbler/task_spec.rb
|
Binary file
|