nicksieger-warbler 0.9.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,476 @@
1
+ #--
2
+ # (c) Copyright 2007-2008 Sun Microsystems, Inc.
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::Task do
10
+ before(:each) do
11
+ @rake = Rake::Application.new
12
+ Rake.application = @rake
13
+ verbose(false)
14
+ @pwd = Dir.getwd
15
+ Dir.chdir("spec/sample")
16
+ mkdir_p "log"
17
+ touch "log/test.log"
18
+ @config = Warbler::Config.new do |config|
19
+ config.staging_dir = "tmp/war"
20
+ config.war_name = "warbler"
21
+ config.gems = ["rake"]
22
+ config.webxml.jruby.max.runtimes = 5
23
+ end
24
+ end
25
+
26
+ after(:each) do
27
+ define_tasks "clean"
28
+ Rake::Task["warble:clean"].invoke
29
+ rm_rf "log"
30
+ rm_f FileList["config.ru", "*web.xml", "config/web.xml*", "config/warble.rb"]
31
+ Dir.chdir(@pwd)
32
+ end
33
+
34
+ def define_tasks(*tasks)
35
+ options = tasks.last.kind_of?(Hash) ? tasks.pop : {}
36
+ @defined_tasks ||= []
37
+ tasks.each do |task|
38
+ unless @defined_tasks.include?(task)
39
+ Warbler::Task.new "warble", @config, "define_#{task}_task".to_sym do |t|
40
+ options.each {|k,v| t.send "#{k}=", v }
41
+ end
42
+ @defined_tasks << task
43
+ end
44
+ end
45
+ end
46
+
47
+ def file_list(regex)
48
+ FileList["#{@config.staging_dir}/**/*"].select {|f| f =~ regex }
49
+ end
50
+
51
+ it "should define a clean task for removing the staging directory" do
52
+ define_tasks "clean"
53
+ mkdir_p @config.staging_dir
54
+ Rake::Task["warble:clean"].invoke
55
+ File.exist?(@config.staging_dir).should == false
56
+ end
57
+
58
+ it "should define a public task for copying the public files" do
59
+ define_tasks "public"
60
+ Rake::Task["warble:public"].invoke
61
+ file_list(%r{^#{@config.staging_dir}/index\.html}).should_not be_empty
62
+ end
63
+
64
+ it "should define a gems task for unpacking gems" do
65
+ @config.gems << "rails"
66
+ define_tasks "gems"
67
+ Rake::Task["warble:gems"].invoke
68
+ file_list(%r{WEB-INF/gems/gems/rake.*/lib/rake.rb}).should_not be_empty
69
+ file_list(%r{WEB-INF/gems/specifications/rake.*\.gemspec}).should_not be_empty
70
+ end
71
+
72
+ it "should define a app task for copying application files" do
73
+ define_tasks "app", "gems"
74
+ Rake::Task["warble:app"].invoke
75
+ file_list(%r{WEB-INF/log}).should_not be_empty
76
+ file_list(%r{WEB-INF/log/*.log}).should be_empty
77
+ end
78
+
79
+ def expand_webxml
80
+ define_tasks "webxml"
81
+ Rake::Task["warble:webxml"].invoke
82
+ require 'rexml/document'
83
+ File.open("#{@config.staging_dir}/WEB-INF/web.xml") do |f|
84
+ REXML::Document.new(f).root.elements
85
+ end
86
+ end
87
+
88
+ it "should define a webxml task for creating web.xml" do
89
+ elements = expand_webxml
90
+ elements.to_a(
91
+ "context-param/param-name[text()='jruby.max.runtimes']"
92
+ ).should_not be_empty
93
+ elements.to_a(
94
+ "context-param/param-name[text()='jruby.max.runtimes']/../param-value"
95
+ ).first.text.should == "5"
96
+ end
97
+
98
+ it "should include custom context parameters" do
99
+ @config.webxml.some.custom.config = "myconfig"
100
+ elements = expand_webxml
101
+ elements.to_a(
102
+ "context-param/param-name[text()='some.custom.config']"
103
+ ).should_not be_empty
104
+ elements.to_a(
105
+ "context-param/param-name[text()='some.custom.config']/../param-value"
106
+ ).first.text.should == "myconfig"
107
+ end
108
+
109
+ it "should allow one jndi resource to be included" do
110
+ @config.webxml.jndi = 'jndi/rails'
111
+ elements = expand_webxml
112
+ elements.to_a(
113
+ "resource-ref/res-ref-name[text()='jndi/rails']"
114
+ ).should_not be_empty
115
+ end
116
+
117
+ it "should allow multiple jndi resources to be included" do
118
+ @config.webxml.jndi = ['jndi/rails1', 'jndi/rails2']
119
+ elements = expand_webxml
120
+ elements.to_a(
121
+ "resource-ref/res-ref-name[text()='jndi/rails1']"
122
+ ).should_not be_empty
123
+ elements.to_a(
124
+ "resource-ref/res-ref-name[text()='jndi/rails2']"
125
+ ).should_not be_empty
126
+ end
127
+
128
+ it "should not include any ignored context parameters" do
129
+ @config.webxml.foo = "bar"
130
+ @config.webxml.ignored << "foo"
131
+ elements = expand_webxml
132
+ elements.to_a(
133
+ "context-param/param-name[text()='foo']"
134
+ ).should be_empty
135
+ elements.to_a(
136
+ "context-param/param-name[text()='ignored']"
137
+ ).should be_empty
138
+ elements.to_a(
139
+ "context-param/param-name[text()='jndi']"
140
+ ).should be_empty
141
+ end
142
+
143
+ it "should use a config/web.xml if it exists" do
144
+ define_tasks "webxml"
145
+ mkdir_p "config"
146
+ File.open("config/web.xml", "w") {|f| f << "Hi there" }
147
+ Rake::Task["warble:webxml"].invoke
148
+ files = file_list(%r{WEB-INF/web.xml$})
149
+ files.should_not be_empty
150
+ File.open(files.first) {|f| f.read}.should == "Hi there"
151
+ end
152
+
153
+ it "should use a config/web.xml.erb if it exists" do
154
+ define_tasks "webxml"
155
+ mkdir_p "config"
156
+ File.open("config/web.xml.erb", "w") {|f| f << "Hi <%= webxml.public.root %>" }
157
+ Rake::Task["warble:webxml"].invoke
158
+ files = file_list(%r{WEB-INF/web.xml$})
159
+ files.should_not be_empty
160
+ File.open(files.first) {|f| f.read}.should == "Hi /"
161
+ end
162
+
163
+ it "should define a java_libs task for copying java libraries" do
164
+ define_tasks "java_libs"
165
+ Rake::Task["warble:java_libs"].invoke
166
+ file_list(%r{WEB-INF/lib/jruby-complete.*\.jar$}).should_not be_empty
167
+ end
168
+
169
+ it "should define an app task for copying application files" do
170
+ gems_ran = false
171
+ task "warble:gems" do
172
+ gems_ran = true
173
+ end
174
+ define_tasks "app"
175
+ Rake::Task["warble:app"].invoke
176
+ file_list(%r{WEB-INF/app$}).should_not be_empty
177
+ file_list(%r{WEB-INF/config$}).should_not be_empty
178
+ file_list(%r{WEB-INF/lib$}).should_not be_empty
179
+ gems_ran.should == true
180
+ end
181
+
182
+ it "should define a jar task for creating the .war" do
183
+ define_tasks "jar"
184
+ mkdir_p @config.staging_dir
185
+ touch "#{@config.staging_dir}/file.txt"
186
+ Rake::Task["warble:jar"].invoke
187
+ File.exist?("warbler.war").should == true
188
+ end
189
+
190
+ it "should define an exploded task for creating an exploded Rails app" do
191
+ @config.java_classes = ["Rakefile"]
192
+ @config.java_libs = []
193
+ define_tasks "webxml", "exploded", "java_classes", "gems"
194
+ Rake::Task['warble:exploded'].invoke
195
+ File.exist?("web.xml").should == true
196
+ File.exist?("sun-web.xml").should == true
197
+ File.symlink?("gems").should == true
198
+ File.symlink?("public/WEB-INF").should == true
199
+ Rake::Task['warble:clean:exploded'].invoke
200
+ end
201
+
202
+ it "should accept an autodeploy directory where the war should be created" do
203
+ define_tasks "jar"
204
+ require 'tempfile'
205
+ @config.autodeploy_dir = Dir::tmpdir
206
+ mkdir_p @config.staging_dir
207
+ touch "#{@config.staging_dir}/file.txt"
208
+ Rake::Task["warble:jar"].invoke
209
+ File.exist?(File.join("#{Dir::tmpdir}","warbler.war")).should == true
210
+ end
211
+
212
+ it "should define a war task for bundling up everything" do
213
+ app_ran = false; task "warble:app" do; app_ran = true; end
214
+ public_ran = false; task "warble:public" do; public_ran = true; end
215
+ jar_ran = false; task "warble:jar" do; jar_ran = true; end
216
+ webxml_ran = false; task "warble:webxml" do; webxml_ran = true; end
217
+ define_tasks "main"
218
+ Rake::Task["warble"].invoke
219
+ app_ran.should == true
220
+ public_ran.should == true
221
+ jar_ran.should == true
222
+ webxml_ran.should == true
223
+ end
224
+
225
+ it "should be able to exclude files from the .war" do
226
+ @config.excludes += FileList['lib/tasks/utils.rake']
227
+ task "warble:gems" do; end
228
+ define_tasks "app"
229
+ Rake::Task["warble:app"].invoke
230
+ file_list(%r{lib/tasks/utils.rake}).should be_empty
231
+ end
232
+
233
+ it "should be able to define all tasks successfully" do
234
+ Warbler::Task.new "warble", @config
235
+ end
236
+
237
+ it "should read configuration from #{Warbler::Config::FILE}" do
238
+ mkdir_p "config"
239
+ File.open(Warbler::Config::FILE, "w") do |dest|
240
+ contents =
241
+ File.open("#{Warbler::WARBLER_HOME}/generators/warble/templates/warble.rb") do |src|
242
+ src.read
243
+ end
244
+ dest << contents.sub(/# config\.war_name/, 'config.war_name'
245
+ ).sub(/# config.gems << "tzinfo"/, 'config.gems = []')
246
+ end
247
+ t = Warbler::Task.new "warble"
248
+ t.config.war_name.should == "mywar"
249
+ end
250
+
251
+ it "should fail if a gem is requested that is not installed" do
252
+ @config.gems = ["nonexistent-gem"]
253
+ lambda {
254
+ Warbler::Task.new "warble", @config
255
+ }.should raise_error
256
+ end
257
+
258
+ it "should handle platform-specific gems" do
259
+ spec = mock "gem spec"
260
+ spec.stub!(:name).and_return "hpricot"
261
+ spec.stub!(:version).and_return "0.6.157"
262
+ spec.stub!(:platform).and_return "java"
263
+ spec.stub!(:original_platform).and_return "java"
264
+ spec.stub!(:loaded_from).and_return "hpricot.gemspec"
265
+ spec.stub!(:dependencies).and_return []
266
+ Gem.source_index.should_receive(:search).and_return do |gem|
267
+ gem.name.should == "hpricot"
268
+ [spec]
269
+ end
270
+ File.should_receive(:exist?).with(File.join(Gem.dir, 'cache', "hpricot-0.6.157-java.gem")).and_return true
271
+ @config.gems = ["hpricot"]
272
+ define_tasks "gems"
273
+ end
274
+
275
+ it "should allow specification of dependency by Gem::Dependency" do
276
+ spec = mock "gem spec"
277
+ spec.stub!(:name).and_return "hpricot"
278
+ spec.stub!(:version).and_return "0.6.157"
279
+ spec.stub!(:platform).and_return "java"
280
+ spec.stub!(:original_platform).and_return "java"
281
+ spec.stub!(:loaded_from).and_return "hpricot.gemspec"
282
+ spec.stub!(:dependencies).and_return []
283
+ Gem.source_index.should_receive(:search).and_return do |gem|
284
+ gem.name.should == "hpricot"
285
+ [spec]
286
+ end
287
+ File.should_receive(:exist?).with(File.join(Gem.dir, 'cache', "hpricot-0.6.157-java.gem")).and_return true
288
+ @config.gems = [Gem::Dependency.new("hpricot", "> 0.6")]
289
+ define_tasks "gems"
290
+ end
291
+
292
+ it "should define a java_classes task for copying loose java classes" do
293
+ @config.java_classes = FileList["Rakefile"]
294
+ define_tasks "java_classes"
295
+ Rake::Task["warble:java_classes"].invoke
296
+ file_list(%r{WEB-INF/classes/Rakefile$}).should_not be_empty
297
+ end
298
+
299
+ def mock_rails_module
300
+ rails = Module.new
301
+ Object.const_set("Rails", rails)
302
+ version = Module.new
303
+ rails.const_set("VERSION", version)
304
+ version.const_set("STRING", "2.1.0")
305
+ rails
306
+ end
307
+
308
+ def mock_merb_module
309
+ merb = Module.new
310
+ Object.const_set("Merb", merb)
311
+ boot_loader = Module.new
312
+ merb.const_set("BootLoader", boot_loader)
313
+ merb.const_set("VERSION", "1.0")
314
+ dependencies = Class.new do
315
+ @@dependencies = []
316
+ def self.dependencies
317
+ @@dependencies
318
+ end
319
+ def self.dependencies=(deps)
320
+ @@dependencies = deps
321
+ end
322
+ end
323
+ boot_loader.const_set("Dependencies", dependencies)
324
+ dependencies
325
+ end
326
+
327
+ it "should auto-detect a Rails application" do
328
+ task :environment do
329
+ mock_rails_module
330
+ end
331
+ @config = Warbler::Config.new
332
+ @config.webxml.booter.should == :rails
333
+ @config.gems["rails"].should == "2.1.0"
334
+ end
335
+
336
+ it "should provide Rails gems by default, unless vendor/rails is present" do
337
+ rails = nil
338
+ task :environment do
339
+ rails = mock_rails_module
340
+ end
341
+
342
+ config = Warbler::Config.new
343
+ config.gems.should have_key("rails")
344
+
345
+ mkdir_p "vendor/rails"
346
+ config = Warbler::Config.new
347
+ config.gems.should be_empty
348
+
349
+ rm_rf "vendor/rails"
350
+ rails.stub!(:vendor_rails?).and_return true
351
+ config = Warbler::Config.new
352
+ config.gems.should be_empty
353
+ end
354
+
355
+ it "should not try to autodetect frameworks when Warbler.framework_detection is false" do
356
+ begin
357
+ Warbler.framework_detection = false
358
+ task :environment
359
+ config = Warbler::Config.new
360
+ config.webxml.booter.should_not == :rails
361
+ t = Rake::Task['environment']
362
+ class << t; public :instance_variable_get; end
363
+ t.instance_variable_get("@already_invoked").should == false
364
+ ensure
365
+ Warbler.framework_detection = true
366
+ end
367
+ end
368
+
369
+ it "should auto-detect a Merb application" do
370
+ task :merb_env do
371
+ mock_merb_module
372
+ end
373
+ @config = Warbler::Config.new
374
+ @config.webxml.booter.should == :merb
375
+ @config.gems.keys.should_not include("rails")
376
+ end
377
+
378
+ it "should auto-detect a Rack application with a config.ru file" do
379
+ rackup = "run Proc.new {|env| [200, {}, ['Hello World']]}"
380
+ File.open("config.ru", "w") {|f| f << rackup }
381
+ @config = Warbler::Config.new
382
+ @config.webxml.booter.should == :rack
383
+ @config.webxml.rackup.should == rackup
384
+ end
385
+
386
+ it "should automatically add Rails.configuration.gems to the list of gems" do
387
+ task :environment do
388
+ rails = mock_rails_module
389
+ config = mock "config"
390
+ rails.stub!(:configuration).and_return(config)
391
+ gem = mock "gem"
392
+ gem.stub!(:name).and_return "hpricot"
393
+ gem.stub!(:requirement).and_return Gem::Requirement.new("=0.6")
394
+ config.stub!(:gems).and_return [gem]
395
+ end
396
+
397
+ @config = Warbler::Config.new
398
+ @config.webxml.booter.should == :rails
399
+ @config.gems.keys.should include(Gem::Dependency.new("hpricot", Gem::Requirement.new("=0.6")))
400
+ end
401
+
402
+ it "should automatically add Merb::BootLoader::Dependencies.dependencies to the list of gems" do
403
+ task :merb_env do
404
+ deps = mock_merb_module
405
+ deps.dependencies = [Gem::Dependency.new("merb-core", ">= 1.0.6.1")]
406
+ end
407
+ @config = Warbler::Config.new
408
+ @config.webxml.booter.should == :merb
409
+ @config.gems.keys.should include(Gem::Dependency.new("merb-core", ">= 1.0.6.1"))
410
+ end
411
+
412
+ it "should skip Merb development dependencies" do
413
+ task :merb_env do
414
+ deps = mock_merb_module
415
+ deps.dependencies = [Gem::Dependency.new("rake", "= #{RAKEVERSION}", :development)]
416
+ end
417
+ @config = Warbler::Config.new
418
+ define_tasks "copy_gems"
419
+ Rake.application.lookup("gem:rake-#{RAKEVERSION}").should be_nil
420
+ end
421
+
422
+ it "should warn about using Merb < 1.0" do
423
+ task :merb_env do
424
+ Object.const_set("Merb", Module.new)
425
+ end
426
+ @config = Warbler::Config.new
427
+ @config.webxml.booter.should == :merb
428
+ end
429
+
430
+ it "should set the jruby max runtimes to 1 when MT Rails is detected" do
431
+ task :environment do
432
+ rails = mock_rails_module
433
+ config = mock "config"
434
+ rails.stub!(:configuration).and_return(config)
435
+ config.stub!(:threadsafe!)
436
+ end
437
+ @config = Warbler::Config.new
438
+ @config.webxml.booter.should == :rails
439
+ @config.webxml.jruby.max.runtimes.should == 1
440
+ end
441
+ end
442
+
443
+ describe "The warbler.rake file" do
444
+ it "should be able to list its contents" do
445
+ output = `#{FileUtils::RUBY} -S rake -f #{Warbler::WARBLER_HOME}/tasks/warbler.rake -T`
446
+ output.should =~ /war\s/
447
+ output.should =~ /war:exploded/
448
+ output.should =~ /war:app/
449
+ output.should =~ /war:clean/
450
+ output.should =~ /war:gems/
451
+ output.should =~ /war:jar/
452
+ output.should =~ /war:java_libs/
453
+ output.should =~ /war:java_classes/
454
+ output.should =~ /war:public/
455
+ end
456
+ end
457
+
458
+ describe "Debug targets" do
459
+ before(:each) do
460
+ @rake = Rake::Application.new
461
+ Rake.application = @rake
462
+ verbose(false)
463
+ silence { Warbler::Task.new :war, Object.new }
464
+ end
465
+
466
+ it "should print out lists of files" do
467
+ capture { Rake::Task["war:debug:public"].invoke }.should =~ /public/
468
+ capture { Rake::Task["war:debug:gems"].invoke }.should =~ /gems/
469
+ capture { Rake::Task["war:debug:java_libs"].invoke }.should =~ /java_libs/
470
+ capture { Rake::Task["war:debug:java_classes"].invoke }.should =~ /java_classes/
471
+ capture { Rake::Task["war:debug:app"].invoke }.should =~ /app/
472
+ capture { Rake::Task["war:debug:includes"].invoke }.should =~ /include/
473
+ capture { Rake::Task["war:debug:excludes"].invoke }.should =~ /exclude/
474
+ capture { Rake::Task["war:debug"].invoke }.should =~ /Config/
475
+ end
476
+ end
@@ -0,0 +1,18 @@
1
+ #--
2
+ # (c) Copyright 2007-2008 Sun Microsystems, Inc.
3
+ # See the file LICENSES.txt included with the distribution for
4
+ # software license details.
5
+ #++
6
+
7
+ begin
8
+ # First, make sure plugin directory is at the front of the load path
9
+ # (to avoid picking up gem-installed warbler)
10
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
11
+ require 'warbler'
12
+ rescue LoadError
13
+ # Next, try activating the gem
14
+ gem 'warbler'
15
+ require 'warbler'
16
+ end
17
+
18
+ Warbler::Task.new
data/web.xml.erb ADDED
@@ -0,0 +1,32 @@
1
+ <!DOCTYPE web-app PUBLIC
2
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
3
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
4
+ <web-app>
5
+ <% webxml.context_params.each do |k,v| %>
6
+ <context-param>
7
+ <param-name><%= k %></param-name>
8
+ <param-value><%= v %></param-value>
9
+ </context-param>
10
+ <% end %>
11
+
12
+ <filter>
13
+ <filter-name>RackFilter</filter-name>
14
+ <filter-class>org.jruby.rack.RackFilter</filter-class>
15
+ </filter>
16
+ <filter-mapping>
17
+ <filter-name>RackFilter</filter-name>
18
+ <url-pattern>/*</url-pattern>
19
+ </filter-mapping>
20
+
21
+ <listener>
22
+ <listener-class><%= webxml.servlet_context_listener %></listener-class>
23
+ </listener>
24
+
25
+ <% if webxml.jndi then webxml.jndi.each do |jndi| %>
26
+ <resource-ref>
27
+ <res-ref-name><%= jndi %></res-ref-name>
28
+ <res-type>javax.sql.DataSource</res-type>
29
+ <res-auth>Container</res-auth>
30
+ </resource-ref>
31
+ <% end; end %>
32
+ </web-app>
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nicksieger-warbler
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.12
5
+ platform: ruby
6
+ authors:
7
+ - Nick Sieger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-18 00:00:00 -08:00
13
+ default_executable: warble
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
35
+ files:
36
+ - History.txt
37
+ - Manifest.txt
38
+ - README.txt
39
+ - LICENSES.txt
40
+ - Rakefile
41
+ - web.xml.erb
42
+ - bin/warble
43
+ - generators/warble
44
+ - generators/warble/templates
45
+ - generators/warble/templates/warble.rb
46
+ - generators/warble/warble_generator.rb
47
+ - lib/jruby-complete-1.1.6.jar
48
+ - lib/jruby-rack-0.9.3.jar
49
+ - lib/warbler
50
+ - lib/warbler/config.rb
51
+ - lib/warbler/gems.rb
52
+ - lib/warbler/task.rb
53
+ - lib/warbler/version.rb
54
+ - lib/warbler.rb
55
+ - spec/sample/app/controllers/application.rb
56
+ - spec/sample/app/helpers/application_helper.rb
57
+ - spec/sample/config/boot.rb
58
+ - spec/sample/config/environment.rb
59
+ - spec/sample/config/environments/development.rb
60
+ - spec/sample/config/environments/production.rb
61
+ - spec/sample/config/environments/test.rb
62
+ - spec/sample/config/initializers/inflections.rb
63
+ - spec/sample/config/initializers/mime_types.rb
64
+ - spec/sample/config/initializers/new_rails_defaults.rb
65
+ - spec/sample/config/routes.rb
66
+ - spec/spec_helper.rb
67
+ - spec/warbler/config_spec.rb
68
+ - spec/warbler/gems_spec.rb
69
+ - spec/warbler/task_spec.rb
70
+ - tasks/warbler.rake
71
+ has_rdoc: true
72
+ homepage: http://caldersphere.rubyforge.org/warbler
73
+ post_install_message:
74
+ rdoc_options:
75
+ - --main
76
+ - README.txt
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ requirements: []
92
+
93
+ rubyforge_project: caldersphere
94
+ rubygems_version: 1.2.0
95
+ signing_key:
96
+ specification_version: 2
97
+ summary: Warbler chirpily constructs .war files of your Rails applications.
98
+ test_files:
99
+ - spec/warbler/config_spec.rb
100
+ - spec/warbler/gems_spec.rb
101
+ - spec/warbler/task_spec.rb