sparrowhawk 0.9.5 → 0.9.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -2,24 +2,103 @@
2
2
 
3
3
  'The Warbler Killer' is kind of tongue-in-cheek. Sparrowhawk is for teams that would like to distribute their application as a WAR file, but prefer that their distribution tool chain remain purely MRI. That's not to say that Sparrowhawk won't run on JRuby, just that the goal was to produce a tool that would run on any ruby.
4
4
 
5
- ## Why Sparrowhawk?
5
+ Documentation is a little sparse at the moment. The test rake_task.feature demonstrates using the rake task. You can review the source and report issues at Github:
6
+
7
+ * [Source](https://github.com/kofno/Sparrowhawk)
8
+ * [Bug Tracker](https://github.com/kofno/Sparrowhawk/issues)
9
+ * [RDoc](http://rubydoc.info/github/kofno/Sparrowhawk/master/frames)
10
+
11
+ You can also follow our progress on [Pivotal Tracker](https://www.pivotaltracker.com/projects/164959#)
12
+
13
+ ## Install
14
+
15
+ Sparrowhawk is distributed as a gem:
16
+
17
+ $ gem install sparrowhawk
18
+
19
+ Or add Sparrowhawk to your Gemfile:
20
+
21
+ # Gemfile
22
+ gem "sparrowhawk"
23
+
24
+ #CLI
25
+ $ bundle install --local
26
+
27
+ ## Usage
28
+
29
+ ### Rake Task
30
+ Sparrowhawk ships with a rake task.
31
+
32
+ require 'sparrowhawk/rake_task'
33
+
34
+ Sparrowhawk::RakeTask.new
6
35
 
7
- Why would you pick Sparrowhawk over another tool, like, ohhhhh I don't know... Warbler?
36
+ This will create a task named 'war' in your project. If you don't like that name, you can change it:
8
37
 
9
- I can think of two reasons.
38
+ Sparrowhawk::RakeTask.new :package
10
39
 
11
- First, we run on any ruby (or, we will, by 1.0.0)
40
+ Now you'll have a task named 'package' instead.
12
41
 
13
- The second reason depends on preference. Warbler is a command line tool based on rake. To use warbler, you need to load up all of rake. There are times when this can have negative ramifications.
42
+ Sparrowhawk will try to do the right thing, but it sometimes will need a little coaxing.
14
43
 
15
- >TODO: Give examples of negative ramifications
44
+ Sparrowhawk::RakeTask.new do |t|
45
+ t.other_files = FileList['README', 'LICENSE', 'CHANGELOG']
46
+ t.runtimes = 1..5
47
+ end
16
48
 
17
- Sparrowhawk, on the other hand, is a library for packaging Rack applications as war files. It happens that sparrowhawk ships with a rake task, but rake isn't required to use Sparrowhawk.
49
+ This configuration adds three additional files to the war, and sets the minimum number of runtimes to one, and the maiximum to five.
50
+
51
+ There are only a few configuration options. They are documented [here](http://rubydoc.info/github/kofno/Sparrowhawk/master/Sparrowhawk/Configuration)
52
+
53
+ ### Programmatic
54
+
55
+ The rake example above could have been written this way:
56
+
57
+ require 'sparrowhawk'
58
+
59
+ task :war do
60
+ Sparrowhawk::Configuration.new do |c|
61
+ c.other_files = FileList['README', 'LICENSE', 'CHANGELOG']
62
+ c.runtimes = 1..5
63
+ end.war.build
64
+ end
65
+
66
+ This produces the exact same outcome. So why bother? The nice thing about the Configuration class is that it is fairly extensible. If, for example, you were using Sparrowhawk, but didn't want to use bundler to manage you gem files. In that case, you might extend the Configuration class and write youe own implementation of the #gem_entities method.
67
+
68
+ class MyWarConfig < Sparrowhawk::Configuration
69
+
70
+ def gem_entries
71
+ # my impl
72
+ ...
73
+ end
74
+ end
75
+
76
+ task :war do
77
+ MyWarConfig.new.war.build
78
+ end
79
+
80
+ ## Why Sparrowhawk?
81
+
82
+ So, why did I build Sparrowhawk?
83
+
84
+ 1. I needed to a reliable way to build a war file on MRI. This means:
85
+ - Handling symlinks correctly on MRI
86
+ - Packaging for the JRuby platform, even from MRI
87
+ 2. I wanted a simple, programatic way to build war files.
88
+ - No extra config files
89
+ - Minimal configuration
90
+ 3. Whenever I would update Warbler, something would break
91
+
92
+ That being said, Warbler is a fine tool, and if your needa aren't similar to mine, there's probably not a good reason to switch.
18
93
 
19
94
  ## Notes and Warnings
20
95
 
21
- Sparrowhawk was built to package TriSano.
96
+ So far, I've packaged and deployed a large rails (2.3.x) app and a small sinatra app. Rack support is very new, but I would expect to be able to package most rails or rack based applications, provided they are compatible on JRuby. However, the current sample size is small.
97
+
98
+ Sparrowhawk requires bundler!
99
+
100
+ For Sparrowhawk to work from MRI, you must package your bundle, and you must bundle install --local from JRuby at least once. This is so bundler can find the java versions of your gems.
22
101
 
23
- Sparrowhawk only does rails applications so far. Full Rack support is forth coming, but wasn't our first priority.
102
+ ## Word!
24
103
 
25
- I've only tested Sparrowhawk on Rails 2.3.x applications w/ bundler integration (a niche group, to be certain). It does, however, work beautifully on one such application (TriSano).
104
+ If you're using Sparrowhawk, drop me a line. I'd love to hear about it!
@@ -1,30 +1,32 @@
1
1
  require 'bundler'
2
2
 
3
3
  module Sparrowhawk
4
- VERSION = "0.9.5"
4
+ VERSION = "0.9.6"
5
5
 
6
- autoload :War ,'sparrowhawk/war'
7
- autoload :Configuration ,'sparrowhawk/configuration'
6
+ autoload :War , 'sparrowhawk/war'
7
+ autoload :Configuration , 'sparrowhawk/configuration'
8
8
 
9
- autoload :Entry ,'sparrowhawk/entry'
10
- autoload :FileEntry ,'sparrowhawk/file_entry'
11
- autoload :WebXmlEntry ,'sparrowhawk/web_xml_entry'
12
- autoload :ManifestEntry ,'sparrowhawk/manifest_entry'
13
- autoload :JarEntry ,'sparrowhawk/jar_entry'
14
- autoload :JRubyCoreJarEntry ,'sparrowhawk/jruby_core_jar_entry'
15
- autoload :JRubyStdLibJarEntry ,'sparrowhawk/jruby_stdlib_jar_entry'
16
- autoload :JRubyRackJarEntry ,'sparrowhawk/jruby_rack_jar_entry'
17
- autoload :GemfileEntry ,'sparrowhawk/gemfile_entry'
18
- autoload :LockfileEntry ,'sparrowhawk/lockfile_entry'
19
- autoload :BundlerConfigurationEntry ,'sparrowhawk/bundler_configuration_entry'
9
+ autoload :Entry , 'sparrowhawk/entry'
10
+ autoload :FileEntry , 'sparrowhawk/file_entry'
11
+ autoload :WebXmlEntry , 'sparrowhawk/web_xml_entry'
12
+ autoload :RailsWebXmlEntry , 'sparrowhawk/rails_web_xml_entry'
13
+ autoload :RackWebXmlEntry , 'sparrowhawk/rack_web_xml_entry'
14
+ autoload :ManifestEntry , 'sparrowhawk/manifest_entry'
15
+ autoload :JarEntry , 'sparrowhawk/jar_entry'
16
+ autoload :JRubyCoreJarEntry , 'sparrowhawk/jruby_core_jar_entry'
17
+ autoload :JRubyStdLibJarEntry , 'sparrowhawk/jruby_stdlib_jar_entry'
18
+ autoload :JRubyRackJarEntry , 'sparrowhawk/jruby_rack_jar_entry'
19
+ autoload :GemfileEntry , 'sparrowhawk/gemfile_entry'
20
+ autoload :LockfileEntry , 'sparrowhawk/lockfile_entry'
21
+ autoload :BundlerConfigurationEntry , 'sparrowhawk/bundler_configuration_entry'
20
22
 
21
- autoload :FileEntryMapper ,'sparrowhawk/file_entry_mapper'
22
- autoload :PublicDirMapper ,'sparrowhawk/public_dir_mapper'
23
- autoload :ApplicationFilesMapper ,'sparrowhawk/application_files_mapper'
24
- autoload :GemMapper ,'sparrowhawk/gem_mapper'
25
- autoload :BundlerArtifactMapper ,'sparrowhawk/bundler_artifact_mapper'
23
+ autoload :FileEntryMapper , 'sparrowhawk/file_entry_mapper'
24
+ autoload :PublicDirMapper , 'sparrowhawk/public_dir_mapper'
25
+ autoload :ApplicationFilesMapper , 'sparrowhawk/application_files_mapper'
26
+ autoload :GemMapper , 'sparrowhawk/gem_mapper'
27
+ autoload :BundlerArtifactMapper , 'sparrowhawk/bundler_artifact_mapper'
26
28
 
27
- autoload :BundlerGemFinder ,'sparrowhawk/bundler_gem_finder'
28
- autoload :BundlerDefinition ,'sparrowhawk/bundler_definition'
29
- autoload :Index ,'sparrowhawk/index'
29
+ autoload :BundlerGemFinder , 'sparrowhawk/bundler_gem_finder'
30
+ autoload :BundlerDefinition , 'sparrowhawk/bundler_definition'
31
+ autoload :Index , 'sparrowhawk/index'
30
32
  end
@@ -16,14 +16,15 @@ module Sparrowhawk
16
16
  private
17
17
 
18
18
  def entries
19
- entries = []
20
- entries << GemfileEntry.new
21
- entries << LockfileEntry.new
22
- entries << gems
19
+ return @entries if @entries
20
+ @entries = []
21
+ @entries << GemfileEntry.new
22
+ @entries << LockfileEntry.new
23
+ @entries << gems
23
24
  unless groups.empty?
24
- entries << bundler_configuration
25
+ @entries << bundler_configuration
25
26
  end
26
- entries.flatten
27
+ @entries.flatten
27
28
  end
28
29
 
29
30
  def gems
@@ -2,54 +2,103 @@ module Sparrowhawk
2
2
 
3
3
  class Configuration
4
4
 
5
- #Sets the name/file path of the war file. Ex: ../distro/example.war
5
+ # Sets the name/file path of the war file. Ex: ../distro/example.war
6
6
  attr_accessor :war_file
7
7
 
8
- #Sets the base directories that will be scanned for application
9
- #files (not static content). Some directories will always be
10
- #excluded implicitly (e.g. vendor/cache)
8
+ # Sets the base directories that will be scanned for application
9
+ # files (not static content). Some directories will always be
10
+ # excluded implicitly (e.g. vendor/cache)
11
11
  attr_accessor :application_dirs
12
12
 
13
- #The min and max runtimes that will be used to service
14
- #requests. Accepts a range.
13
+ # The min and max runtimes that will be used to service
14
+ # rails requests. Accepts a range. Only applies to rails
15
15
  attr_accessor :runtimes
16
16
 
17
- #Which environment to use when running the application
17
+ # Which environment to use when running the application. Only applies to rails.
18
18
  attr_accessor :environment
19
19
 
20
- #Other files to include in the application code (LICENSE, README, etc.)
20
+ # Other files to include in the application code (LICENSE, README, etc.)
21
21
  attr_accessor :other_files
22
22
 
23
- #Returns an object instance that can be used to build a war
23
+ # Set the rack config file. Defaults to 'config.ru'
24
+ attr_accessor :rack_config
25
+
26
+ # Returns an object instance that can be used to build a war
24
27
  def war
25
28
  war = War.new war_file
26
- war.entries << PublicDirMapper.new.to_a
27
- war.entries << WebXmlEntry.new(web_xml_options)
28
- war.entries << ManifestEntry.new
29
- war.entries << ApplicationFilesMapper.new(application_dirs).to_a
30
- war.entries << JRubyCoreJarEntry.new
31
- war.entries << JRubyStdLibJarEntry.new
32
- war.entries << JRubyRackJarEntry.new
33
- war.entries << BundlerArtifactMapper.new.to_a
29
+ war.entries += public_dir_entries
30
+ war.entries << web_xml_entry
31
+ war.entries << manifest_entry
32
+ war.entries += application_file_entries
33
+ war.entries << jruby_core_jar_entry
34
+ war.entries << jruby_std_jar_entry
35
+ war.entries << jruby_rack_jar_entry
36
+ war.entries += gem_entries
34
37
  other_files.each do |file|
35
- war.entries << FileEntry.new("WEB-INF/#{file}", file)
38
+ war.entries << file_entry("WEB-INF/#{file}", file)
36
39
  end if other_files
37
40
  war
38
41
  end
39
42
 
40
43
  def initialize
44
+ @rack_config = default_rack_config
41
45
  yield self if block_given?
42
46
  end
43
47
 
48
+ def rack_app?
49
+ File.file? File.expand_path(rack_config)
50
+ end
51
+
44
52
  private
45
53
 
46
- def web_xml_options
54
+ def manifest_entry
55
+ @manifest_entry ||= ManifestEntry.new
56
+ end
57
+
58
+ def public_dir_entries
59
+ @public_dir_entries ||= PublicDirMapper.new.to_a
60
+ end
61
+
62
+ def application_file_entries
63
+ @application_file_entries ||= ApplicationFilesMapper.new(application_dirs).to_a
64
+ end
65
+
66
+ def jruby_core_jar_entry
67
+ @jruby_core_jar_entry ||= JRubyCoreJarEntry.new
68
+ end
69
+
70
+ def jruby_std_jar_entry
71
+ @jruby_std_jar_entry ||= JRubyCoreJarEntry.new
72
+ end
73
+
74
+ def jruby_rack_jar_entry
75
+ @jruby_rack_jar_entry ||= JRubyRackJarEntry.new
76
+ end
77
+
78
+ def gem_entries
79
+ @gem_entries ||= BundlerArtifactMapper.new.to_a
80
+ end
81
+
82
+ def file_entry entry_name, path
83
+ FileEntry.new entry_name, path
84
+ end
85
+
86
+ def web_xml_entry
87
+ @web_xml_entry ||= (rack_app? ?
88
+ RackWebXmlEntry.new(:rackup => rack_config) :
89
+ RailsWebXmlEntry.new(rails_web_xml_options))
90
+ end
91
+
92
+ def rails_web_xml_options
47
93
  options = {}
48
94
  options[:runtimes] = runtimes if runtimes
49
95
  options[:environment] = environment if environment
50
96
  options
51
97
  end
52
98
 
99
+ def default_rack_config
100
+ './config.ru'
101
+ end
53
102
  end
54
103
 
55
104
  end
@@ -0,0 +1,25 @@
1
+ module Sparrowhawk
2
+ class RackWebXmlEntry < WebXmlEntry
3
+ def initialize options={}
4
+ super
5
+ @rackup_file = options[:rackup]
6
+ end
7
+
8
+ def content
9
+ web_app do |xml|
10
+ xml << public_root
11
+ xml << context_param('rackup', rackup) if rackup?
12
+ xml << rack_filter
13
+ xml << listener('org.jruby.rack.RackServletContextListener')
14
+ end.target!
15
+ end
16
+
17
+ def rackup
18
+ @rackup ||= IO.read(@rackup_file)
19
+ end
20
+
21
+ def rackup?
22
+ @rackup_file && File.exists?(@rackup_file)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ module Sparrowhawk
2
+
3
+ class RailsWebXmlEntry < WebXmlEntry
4
+ attr_reader :name, :environment
5
+
6
+ def initialize options={}
7
+ super
8
+ @runtimes = options[:runtimes] || (1..1)
9
+ @environment = options[:environment] || 'development'
10
+ end
11
+
12
+ def content
13
+ web_app do |xml|
14
+ xml << context_param('rails.env', environment)
15
+ xml << public_root
16
+ xml << context_param('jruby.min.runtimes', min_runtimes)
17
+ xml << context_param('jruby.max.runtimes', max_runtimes)
18
+ xml << rack_filter
19
+ xml << listener('org.jruby.rack.rails.RailsServletContextListener')
20
+ end.target!
21
+ end
22
+
23
+ def max_runtimes
24
+ @runtimes.end.to_s
25
+ end
26
+
27
+ def min_runtimes
28
+ @runtimes.begin.to_s
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -4,7 +4,8 @@ module Sparrowhawk
4
4
 
5
5
  class War
6
6
 
7
- attr_reader :name, :entries
7
+ attr_reader :name
8
+ attr_accessor :entries
8
9
 
9
10
  def initialize file_name=nil
10
11
  @name = file_name || default_file_name
@@ -1,45 +1,29 @@
1
1
  require 'builder'
2
2
 
3
3
  module Sparrowhawk
4
-
5
4
  class WebXmlEntry
6
- attr_reader :name, :environment
5
+ attr_reader :name
7
6
 
8
- def initialize options={}
9
- @name = 'WEB-INF/web.xml'
10
- @runtimes = options[:runtimes] || (1..1)
11
- @environment = options[:environment] || 'development'
7
+ def initialize *args
8
+ @name = "WEB-INF/web.xml"
12
9
  end
13
10
 
14
11
  def content
12
+ raise NotImplementedError, "#content should be implemented in a subclass"
13
+ end
14
+
15
+ private
16
+
17
+ def web_app
15
18
  xml = Builder::XmlMarkup.new
16
19
  xml.instruct!
17
- xml.declare!(:DOCTYPE, 'web-app'.to_sym, :PUBLIC,
18
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN",
19
- "http://java.sun.com/dtd/web-app_2_3.dtd")
20
+ xml << doctype_declaration
20
21
  xml.tag! 'web-app' do |xml|
21
- xml << context_param('rails.env', environment)
22
- xml << context_param('public.root', '/')
23
- xml << context_param('jruby.min.runtimes', min_runtimes)
24
- xml << context_param('jruby.max.runtimes', max_runtimes)
25
- xml << filter(:name => 'RackFilter',
26
- :class => 'org.jruby.rack.RackFilter',
27
- :url => '/*')
28
- xml << listener('org.jruby.rack.rails.RailsServletContextListener')
22
+ yield xml if block_given?
29
23
  end
30
- xml.target!
31
- end
32
-
33
- def max_runtimes
34
- @runtimes.end.to_s
35
- end
36
-
37
- def min_runtimes
38
- @runtimes.begin.to_s
24
+ xml
39
25
  end
40
26
 
41
- private
42
-
43
27
  def context_param name, value
44
28
  xml = Builder::XmlMarkup.new
45
29
  xml.tag! 'context-param' do |xml|
@@ -70,6 +54,22 @@ module Sparrowhawk
70
54
  xml.target!
71
55
  end
72
56
 
73
- end
57
+ def public_root
58
+ context_param('public.root', '/')
59
+ end
74
60
 
61
+ def doctype_declaration
62
+ xml = Builder::XmlMarkup.new
63
+ xml.declare!(:DOCTYPE, 'web-app'.to_sym, :PUBLIC,
64
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN",
65
+ "http://java.sun.com/dtd/web-app_2_3.dtd")
66
+ xml.target!
67
+ end
68
+
69
+ def rack_filter
70
+ filter(:name => 'RackFilter',
71
+ :class => 'org.jruby.rack.RackFilter',
72
+ :url => '/*')
73
+ end
74
+ end
75
75
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparrowhawk
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
5
- prerelease: false
4
+ hash: 55
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 5
10
- version: 0.9.5
9
+ - 6
10
+ version: 0.9.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan L. Bell
@@ -15,12 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-31 00:00:00 -05:00
18
+ date: 2011-02-05 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
23
  none: false
25
24
  requirements:
26
25
  - - ">="
@@ -31,12 +30,12 @@ dependencies:
31
30
  - 0
32
31
  - 6
33
32
  version: 1.0.6
34
- type: :runtime
35
- version_requirements: *id001
33
+ requirement: *id001
34
+ prerelease: false
36
35
  name: bundler
36
+ type: :runtime
37
37
  - !ruby/object:Gem::Dependency
38
- prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ">="
@@ -45,12 +44,12 @@ dependencies:
45
44
  segments:
46
45
  - 0
47
46
  version: "0"
48
- type: :runtime
49
- version_requirements: *id002
47
+ requirement: *id002
48
+ prerelease: false
50
49
  name: rubyzip
50
+ type: :runtime
51
51
  - !ruby/object:Gem::Dependency
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
53
  none: false
55
54
  requirements:
56
55
  - - ">="
@@ -59,12 +58,12 @@ dependencies:
59
58
  segments:
60
59
  - 0
61
60
  version: "0"
62
- type: :runtime
63
- version_requirements: *id003
61
+ requirement: *id003
62
+ prerelease: false
64
63
  name: jruby-jars
64
+ type: :runtime
65
65
  - !ruby/object:Gem::Dependency
66
- prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
66
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
67
  none: false
69
68
  requirements:
70
69
  - - ">="
@@ -73,12 +72,26 @@ dependencies:
73
72
  segments:
74
73
  - 0
75
74
  version: "0"
76
- type: :runtime
77
- version_requirements: *id004
75
+ requirement: *id004
76
+ prerelease: false
78
77
  name: jruby-rack
78
+ type: :runtime
79
79
  - !ruby/object:Gem::Dependency
80
+ version_requirements: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ requirement: *id005
80
90
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
91
+ name: builder
92
+ type: :runtime
93
+ - !ruby/object:Gem::Dependency
94
+ version_requirements: &id006 !ruby/object:Gem::Requirement
82
95
  none: false
83
96
  requirements:
84
97
  - - ">="
@@ -87,12 +100,12 @@ dependencies:
87
100
  segments:
88
101
  - 0
89
102
  version: "0"
90
- type: :development
91
- version_requirements: *id005
103
+ requirement: *id006
104
+ prerelease: false
92
105
  name: rake
106
+ type: :development
93
107
  - !ruby/object:Gem::Dependency
94
- prerelease: false
95
- requirement: &id006 !ruby/object:Gem::Requirement
108
+ version_requirements: &id007 !ruby/object:Gem::Requirement
96
109
  none: false
97
110
  requirements:
98
111
  - - ">="
@@ -101,12 +114,12 @@ dependencies:
101
114
  segments:
102
115
  - 0
103
116
  version: "0"
104
- type: :development
105
- version_requirements: *id006
117
+ requirement: *id007
118
+ prerelease: false
106
119
  name: rspec
120
+ type: :development
107
121
  - !ruby/object:Gem::Dependency
108
- prerelease: false
109
- requirement: &id007 !ruby/object:Gem::Requirement
122
+ version_requirements: &id008 !ruby/object:Gem::Requirement
110
123
  none: false
111
124
  requirements:
112
125
  - - ">="
@@ -115,12 +128,12 @@ dependencies:
115
128
  segments:
116
129
  - 0
117
130
  version: "0"
118
- type: :development
119
- version_requirements: *id007
131
+ requirement: *id008
132
+ prerelease: false
120
133
  name: cucumber
134
+ type: :development
121
135
  - !ruby/object:Gem::Dependency
122
- prerelease: false
123
- requirement: &id008 !ruby/object:Gem::Requirement
136
+ version_requirements: &id009 !ruby/object:Gem::Requirement
124
137
  none: false
125
138
  requirements:
126
139
  - - ">="
@@ -129,12 +142,12 @@ dependencies:
129
142
  segments:
130
143
  - 0
131
144
  version: "0"
132
- type: :development
133
- version_requirements: *id008
145
+ requirement: *id009
146
+ prerelease: false
134
147
  name: aruba
148
+ type: :development
135
149
  - !ruby/object:Gem::Dependency
136
- prerelease: false
137
- requirement: &id009 !ruby/object:Gem::Requirement
150
+ version_requirements: &id010 !ruby/object:Gem::Requirement
138
151
  none: false
139
152
  requirements:
140
153
  - - ">="
@@ -143,9 +156,10 @@ dependencies:
143
156
  segments:
144
157
  - 0
145
158
  version: "0"
146
- type: :development
147
- version_requirements: *id009
159
+ requirement: *id010
160
+ prerelease: false
148
161
  name: nokogiri
162
+ type: :development
149
163
  description: Sparrowhawk uses bundler and vendor/cache to package rails applications into a war file, without executing Java or JRuby
150
164
  email:
151
165
  - ryan.l.bell@gmail.com
@@ -166,6 +180,7 @@ files:
166
180
  - lib/sparrowhawk/web_xml_entry.rb
167
181
  - lib/sparrowhawk/manifest_entry.rb
168
182
  - lib/sparrowhawk/bundler_definition.rb
183
+ - lib/sparrowhawk/rails_web_xml_entry.rb
169
184
  - lib/sparrowhawk/jruby_core_jar_entry.rb
170
185
  - lib/sparrowhawk/file_entry_mapper.rb
171
186
  - lib/sparrowhawk/application_files_mapper.rb
@@ -173,6 +188,7 @@ files:
173
188
  - lib/sparrowhawk/configuration.rb
174
189
  - lib/sparrowhawk/gemfile_entry.rb
175
190
  - lib/sparrowhawk/gem_mapper.rb
191
+ - lib/sparrowhawk/rack_web_xml_entry.rb
176
192
  - lib/sparrowhawk/lockfile_entry.rb
177
193
  - lib/sparrowhawk/file_entry.rb
178
194
  - lib/sparrowhawk/entry.rb
@@ -214,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
230
  requirements: []
215
231
 
216
232
  rubyforge_project:
217
- rubygems_version: 1.3.7
233
+ rubygems_version: 1.4.1
218
234
  signing_key:
219
235
  specification_version: 3
220
236
  summary: An MRI friendly war packaginer for rack applications