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 +89 -10
- data/lib/sparrowhawk.rb +24 -22
- data/lib/sparrowhawk/bundler_artifact_mapper.rb +7 -6
- data/lib/sparrowhawk/configuration.rb +68 -19
- data/lib/sparrowhawk/rack_web_xml_entry.rb +25 -0
- data/lib/sparrowhawk/rails_web_xml_entry.rb +33 -0
- data/lib/sparrowhawk/war.rb +2 -1
- data/lib/sparrowhawk/web_xml_entry.rb +29 -29
- metadata +57 -41
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
|
-
|
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
|
-
|
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
|
-
|
38
|
+
Sparrowhawk::RakeTask.new :package
|
10
39
|
|
11
|
-
|
40
|
+
Now you'll have a task named 'package' instead.
|
12
41
|
|
13
|
-
|
42
|
+
Sparrowhawk will try to do the right thing, but it sometimes will need a little coaxing.
|
14
43
|
|
15
|
-
|
44
|
+
Sparrowhawk::RakeTask.new do |t|
|
45
|
+
t.other_files = FileList['README', 'LICENSE', 'CHANGELOG']
|
46
|
+
t.runtimes = 1..5
|
47
|
+
end
|
16
48
|
|
17
|
-
|
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
|
-
|
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
|
-
|
102
|
+
## Word!
|
24
103
|
|
25
|
-
|
104
|
+
If you're using Sparrowhawk, drop me a line. I'd love to hear about it!
|
data/lib/sparrowhawk.rb
CHANGED
@@ -1,30 +1,32 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
|
3
3
|
module Sparrowhawk
|
4
|
-
VERSION = "0.9.
|
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 :
|
13
|
-
autoload :
|
14
|
-
autoload :
|
15
|
-
autoload :
|
16
|
-
autoload :
|
17
|
-
autoload :
|
18
|
-
autoload :
|
19
|
-
autoload :
|
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
|
21
|
-
entries <<
|
22
|
-
entries <<
|
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
|
-
#
|
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
|
27
|
-
war.entries <<
|
28
|
-
war.entries <<
|
29
|
-
war.entries
|
30
|
-
war.entries <<
|
31
|
-
war.entries <<
|
32
|
-
war.entries <<
|
33
|
-
war.entries
|
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 <<
|
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
|
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
|
data/lib/sparrowhawk/war.rb
CHANGED
@@ -1,45 +1,29 @@
|
|
1
1
|
require 'builder'
|
2
2
|
|
3
3
|
module Sparrowhawk
|
4
|
-
|
5
4
|
class WebXmlEntry
|
6
|
-
attr_reader :name
|
5
|
+
attr_reader :name
|
7
6
|
|
8
|
-
def initialize
|
9
|
-
@name =
|
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
|
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
|
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
|
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
|
-
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 55
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
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:
|
18
|
+
date: 2011-02-05 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
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
|
-
|
35
|
-
|
33
|
+
requirement: *id001
|
34
|
+
prerelease: false
|
36
35
|
name: bundler
|
36
|
+
type: :runtime
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
-
|
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
|
-
|
49
|
-
|
47
|
+
requirement: *id002
|
48
|
+
prerelease: false
|
50
49
|
name: rubyzip
|
50
|
+
type: :runtime
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
|
-
|
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
|
-
|
63
|
-
|
61
|
+
requirement: *id003
|
62
|
+
prerelease: false
|
64
63
|
name: jruby-jars
|
64
|
+
type: :runtime
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
|
-
|
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
|
-
|
77
|
-
|
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
|
-
|
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
|
-
|
91
|
-
|
103
|
+
requirement: *id006
|
104
|
+
prerelease: false
|
92
105
|
name: rake
|
106
|
+
type: :development
|
93
107
|
- !ruby/object:Gem::Dependency
|
94
|
-
|
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
|
-
|
105
|
-
|
117
|
+
requirement: *id007
|
118
|
+
prerelease: false
|
106
119
|
name: rspec
|
120
|
+
type: :development
|
107
121
|
- !ruby/object:Gem::Dependency
|
108
|
-
|
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
|
-
|
119
|
-
|
131
|
+
requirement: *id008
|
132
|
+
prerelease: false
|
120
133
|
name: cucumber
|
134
|
+
type: :development
|
121
135
|
- !ruby/object:Gem::Dependency
|
122
|
-
|
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
|
-
|
133
|
-
|
145
|
+
requirement: *id009
|
146
|
+
prerelease: false
|
134
147
|
name: aruba
|
148
|
+
type: :development
|
135
149
|
- !ruby/object:Gem::Dependency
|
136
|
-
|
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
|
-
|
147
|
-
|
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.
|
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
|