lucidimagination-warbler 1.3.2.dev
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +16 -0
- data/History.txt +217 -0
- data/LICENSE.txt +26 -0
- data/Manifest.txt +92 -0
- data/README.txt +255 -0
- data/Rakefile +103 -0
- data/bin/warble +11 -0
- data/ext/JarMain.java +148 -0
- data/ext/WarMain.java +112 -0
- data/ext/WarblerJar.java +182 -0
- data/ext/WarblerJarService.java +18 -0
- data/lib/warbler.rb +33 -0
- data/lib/warbler/application.rb +86 -0
- data/lib/warbler/config.rb +223 -0
- data/lib/warbler/gems.rb +37 -0
- data/lib/warbler/jar.rb +253 -0
- data/lib/warbler/task.rb +183 -0
- data/lib/warbler/templates/bundler.erb +3 -0
- data/lib/warbler/templates/config.erb +1 -0
- data/lib/warbler/templates/jar.erb +5 -0
- data/lib/warbler/templates/rack.erb +1 -0
- data/lib/warbler/templates/rails.erb +1 -0
- data/lib/warbler/templates/war.erb +1 -0
- data/lib/warbler/traits.rb +107 -0
- data/lib/warbler/traits/bundler.rb +104 -0
- data/lib/warbler/traits/gemspec.rb +59 -0
- data/lib/warbler/traits/jar.rb +56 -0
- data/lib/warbler/traits/merb.rb +35 -0
- data/lib/warbler/traits/nogemspec.rb +42 -0
- data/lib/warbler/traits/rack.rb +33 -0
- data/lib/warbler/traits/rails.rb +62 -0
- data/lib/warbler/traits/war.rb +197 -0
- data/lib/warbler/version.rb +10 -0
- data/lib/warbler/war.rb +8 -0
- data/lib/warbler_jar.jar +0 -0
- data/spec/drb_helper.rb +41 -0
- data/spec/sample_bundler/Gemfile.lock +10 -0
- data/spec/sample_bundler/config.ru +0 -0
- data/spec/sample_jar/History.txt +6 -0
- data/spec/sample_jar/Manifest.txt +8 -0
- data/spec/sample_jar/README.txt +30 -0
- data/spec/sample_jar/lib/sample_jar.rb +6 -0
- data/spec/sample_jar/sample_jar.gemspec +40 -0
- data/spec/sample_jar/test/test_sample_jar.rb +8 -0
- data/spec/sample_war/app/controllers/application.rb +15 -0
- data/spec/sample_war/app/helpers/application_helper.rb +3 -0
- data/spec/sample_war/config/boot.rb +109 -0
- data/spec/sample_war/config/database.yml +19 -0
- data/spec/sample_war/config/environment.rb +67 -0
- data/spec/sample_war/config/environments/development.rb +17 -0
- data/spec/sample_war/config/environments/production.rb +25 -0
- data/spec/sample_war/config/environments/test.rb +22 -0
- data/spec/sample_war/config/initializers/inflections.rb +10 -0
- data/spec/sample_war/config/initializers/mime_types.rb +5 -0
- data/spec/sample_war/config/initializers/new_rails_defaults.rb +15 -0
- data/spec/sample_war/config/routes.rb +41 -0
- data/spec/sample_war/lib/tasks/utils.rake +0 -0
- data/spec/sample_war/public/404.html +30 -0
- data/spec/sample_war/public/422.html +30 -0
- data/spec/sample_war/public/500.html +30 -0
- data/spec/sample_war/public/favicon.ico +0 -0
- data/spec/sample_war/public/index.html +274 -0
- data/spec/sample_war/public/robots.txt +5 -0
- data/spec/spec_helper.rb +112 -0
- data/spec/warbler/application_spec.rb +95 -0
- data/spec/warbler/bundler_spec.rb +136 -0
- data/spec/warbler/config_spec.rb +130 -0
- data/spec/warbler/gems_spec.rb +40 -0
- data/spec/warbler/jar_spec.rb +718 -0
- data/spec/warbler/task_spec.rb +170 -0
- data/spec/warbler/traits_spec.rb +17 -0
- data/spec/warbler/war_spec.rb +14 -0
- data/warble.rb +142 -0
- data/web.xml.erb +32 -0
- metadata +198 -0
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
source "http://rubygems.org/"
|
2
|
+
|
3
|
+
gem "rake", "~> 0.8.7"
|
4
|
+
gem "rubyzip"
|
5
|
+
gem "jruby-jars"
|
6
|
+
gem "jruby-rack"
|
7
|
+
|
8
|
+
group :development do
|
9
|
+
gem "jruby-openssl"
|
10
|
+
gem "rspec", "~> 1.3"
|
11
|
+
gem "diff-lcs"
|
12
|
+
gem "rcov", ">= 0.9.8"
|
13
|
+
gem "rubyforge"
|
14
|
+
gem "hoe", ">= 2.3.2"
|
15
|
+
gem "rdoc"
|
16
|
+
end
|
data/History.txt
ADDED
@@ -0,0 +1,217 @@
|
|
1
|
+
== 1.3.1
|
2
|
+
|
3
|
+
- Pin rake version to ~> 0.8.7 for now. Rake 0.9.0 compatibility will
|
4
|
+
follow in a future release.
|
5
|
+
|
6
|
+
== 1.3.0
|
7
|
+
|
8
|
+
- Warbler can now package regular Ruby projects as executable jar
|
9
|
+
files. See the README.txt file for details.
|
10
|
+
- WARBLER-18: Heed BUNDLE_GEMFILE in environment
|
11
|
+
- WARBLER-17: Allow config.excludes to work for files in public/
|
12
|
+
- GH#3, #12, #17: Properly bundle when BUNDLE_PATH is set or
|
13
|
+
--deployment flag is used
|
14
|
+
- JRUBY-5077, WARBLER-24: Gems from git repositories are now packaged
|
15
|
+
correctly
|
16
|
+
- GH#20: Ruby 1.9.2 support
|
17
|
+
- GH#8: Clean up compiled .class files after building war
|
18
|
+
- GH#15: Simplify detection of thread-safe Rails
|
19
|
+
|
20
|
+
== 1.2.1
|
21
|
+
|
22
|
+
- Add --directoryListings=false to Winstone launch by default. In some
|
23
|
+
cases (sinatra) Winstone's directory listing masks application
|
24
|
+
content. (Fletcher Nichol)
|
25
|
+
- Build and add META-INF/init.rb file into the war file. This is
|
26
|
+
recognized and loaded by JRuby-Rack 1.0.3 as a new way to do extra
|
27
|
+
environment initialization before the web framework is loaded. See
|
28
|
+
config.init_contents in Warbler::Config for details.
|
29
|
+
|
30
|
+
== 1.2.0
|
31
|
+
|
32
|
+
- Drop compatibility with earlier versions of Bundler -- Bundler has
|
33
|
+
changed a lot in a short period of time, so I'm expecting the number
|
34
|
+
of people depending on 0.8 or 0.9 to be small. Please use Warbler
|
35
|
+
1.2.0 with applications that depend on Bundler 1.0 or higher.
|
36
|
+
- Support for Bundler groups. The 'development' and 'test' groups are
|
37
|
+
excluded by default.
|
38
|
+
- Add 'compiled' feature: With this feature added to config.features
|
39
|
+
Warbler will pre-compile all Ruby files and will not ship the
|
40
|
+
original Ruby source in your war file.
|
41
|
+
- warble.rb: Add config.bundle_without that controls Bundler groups to
|
42
|
+
be skipped, like 'Bundler.settings.without'.
|
43
|
+
- warble.rb: Add config.compiled_ruby_files to specify which Ruby
|
44
|
+
files to compile when using the "compiled" feature. Defaults to
|
45
|
+
compiling all Ruby files.
|
46
|
+
- warble.rb: Add config.gem_excludes which allows exclusion of some
|
47
|
+
gem files from the war. Default assumes no exclusions.
|
48
|
+
- Exclude 'tmp/war' directory so that people upgrading from 0.9 won't
|
49
|
+
accidentally include it in their war file.
|
50
|
+
|
51
|
+
== 1.1.0
|
52
|
+
|
53
|
+
- Add concept of "features" -- small Rake tasks that run before the
|
54
|
+
creation of the war file and make manipulations to the war file
|
55
|
+
structure.
|
56
|
+
- Add 'gemjar' feature: Bundle all gems into a gems.jar to reduce the
|
57
|
+
number of files in the archive (mostly useful for Google AppEngine).
|
58
|
+
Usage: run "warble gemjar war" or set config.features = %w(gemjar) in
|
59
|
+
warble.rb to use this feature.
|
60
|
+
- Add 'executable' feature: Bundle an embedded web server in the war
|
61
|
+
file so that the entire application can be run as
|
62
|
+
'java -jar myapp.war'.
|
63
|
+
Usage: run "warble executable war" or set config.features = %w(executable)
|
64
|
+
in warble.rb to use this feature.
|
65
|
+
To see embedded webserver options, add '--help' to the 'java -jar'
|
66
|
+
command line.
|
67
|
+
- No longer embed config.ru in web.xml as 'rackup' parameter by
|
68
|
+
default. Instead, config.ru is included in the war file.
|
69
|
+
- Bump jruby-rack version requirement to 0.9.8.
|
70
|
+
|
71
|
+
== 1.0.3
|
72
|
+
|
73
|
+
- Tracking recent Bundler changes - handle locked Gemfiles differently
|
74
|
+
than unlocked ones
|
75
|
+
- Handle file-based symlinks, and warn about inoperational directory
|
76
|
+
symlinks under non-JRuby versions of Ruby.
|
77
|
+
|
78
|
+
== 1.0.2
|
79
|
+
|
80
|
+
- Add 'warble pluginize' task back. This task now just creates a
|
81
|
+
vendor/plugins/warbler/tasks/warbler.rake file. There's no need to
|
82
|
+
"vendor" all of Warbler into your application anymore.
|
83
|
+
|
84
|
+
== 1.0.1
|
85
|
+
|
86
|
+
- Fix careless bug where Warbler doesn't work with JRuby 1.4
|
87
|
+
|
88
|
+
== 1.0
|
89
|
+
|
90
|
+
- Warbler hits 1.0! There are enough structural changes in Warbler
|
91
|
+
that I feel it's time to roll the major version over to 1.0.
|
92
|
+
- Add support for Bundler. Detect Gemfiles, make sure gems are
|
93
|
+
included in the war file and rewrite .bundle/environment.rb inside
|
94
|
+
the war file.
|
95
|
+
- Warbler now uses RubyZip to create the war file in-place, without
|
96
|
+
copying files to a tmp/war staging area. When run in JRuby it uses a
|
97
|
+
Java ZipOutputStream for a modest performance boost.
|
98
|
+
- Add config option to allow override of gem_home (Daniel Harrington).
|
99
|
+
- Stop bundling jruby-rack, as promised.
|
100
|
+
- WARBLER-3: don't add from Rails config.gems if they are frozen
|
101
|
+
- WARBLER-7: Add config.webinf_files option with more support for
|
102
|
+
custom web.xml files
|
103
|
+
|
104
|
+
== 0.9.14
|
105
|
+
|
106
|
+
- So, jruby-rack is bundled for one more release. 1.0 will not contain
|
107
|
+
any jar files, I promise!
|
108
|
+
- Upgraded jruby-rack to 0.9.5.
|
109
|
+
- Unbundled jruby-complete jar in favor of new jruby-jars gem, which
|
110
|
+
can be upgraded separately.
|
111
|
+
- Skip gems which have no loaded_from attribute set
|
112
|
+
(this happened with the Authlogic gem on Edge Rails)
|
113
|
+
(thanks Laszlo Bacsi)
|
114
|
+
|
115
|
+
== 0.9.13
|
116
|
+
|
117
|
+
- RailsConf 2009 edition.
|
118
|
+
- Only bundled JRuby and JRuby-Rack upgrades. Bug fixes will have to come in 0.9.14.
|
119
|
+
- This should also be the last release with bundled JRuby and JRuby-Rack.
|
120
|
+
- Upgrade to JRuby 1.3.0RC1 and JRuby-Rack 0.9.4. The latter allows
|
121
|
+
Rails 2.3 to work with Warbler.
|
122
|
+
|
123
|
+
== 0.9.12
|
124
|
+
|
125
|
+
- Allow framework auto-detection to be disabled. Set
|
126
|
+
`Warbler.framework_detection = false' at the top of config/warble.rb
|
127
|
+
or uncomment the line from a newly generated config.
|
128
|
+
- Add configuration option to set manifest file (thanks Tommy McGuire)
|
129
|
+
- Mitigate RubyGems 1.3 compatibility issue (thanks Jens Norrgrann)
|
130
|
+
- Add experimental `war:exploded` task. This allows you to deploy your
|
131
|
+
application in an exploded mode, thus allowing continual development
|
132
|
+
without re-warring and re-deploying. Feedback is appreciated if you
|
133
|
+
try this feature; it may not work in all application servers and for
|
134
|
+
applications other than Rails.
|
135
|
+
- Handle Rails gem dependencies better (thanks Laszlo Bacsi)
|
136
|
+
- Auto-detect Merb dependencies (Merb >= 1.0 only). Please give
|
137
|
+
feedback if you try Warbler with a Merb 1.0 app.
|
138
|
+
- Ignore gem development dependencies
|
139
|
+
- Upgrade to JRuby 1.1.6 and JRuby-Rack 0.9.3
|
140
|
+
|
141
|
+
== 0.9.11
|
142
|
+
|
143
|
+
- Auto-detect Rails and Merb and configure appropriately
|
144
|
+
- For Rails, set rails booter, determine max runtimes based on Rails.configuration.threadsafe!,
|
145
|
+
add Rails gem, detect Rails version, set gems to be packaged based on
|
146
|
+
Rails.configuration.gems if available
|
147
|
+
- Rails gems only added if Rails application detected
|
148
|
+
- For Merb, set merb booter automatically
|
149
|
+
- Auto-detect config.ru rackup script and pass it into config.webxml.rackup
|
150
|
+
- rails.env now commented by default in config/warble.rb and internally default
|
151
|
+
the value to 'production'
|
152
|
+
- Default directories in config.dirs to only those that are found to be present
|
153
|
+
- Allow config.gems array to contain regexps and Gem::Dependency objects as well
|
154
|
+
(assist from Jani Soila)
|
155
|
+
- Fix bug ensuring you can += and -= for config.gems
|
156
|
+
- Upgrade to JRuby 1.1.4 and JRuby-Rack 0.9.2
|
157
|
+
- add [] as a way to specify non-identifier keys, example: config.webxml['!@#$%^'] = 'haha'
|
158
|
+
|
159
|
+
== 0.9.10
|
160
|
+
|
161
|
+
- Upgraded to JRuby-Rack 0.9.1. Fixes JRUBY-2620, JRUBY-2594, JRUBY-2507.
|
162
|
+
- Now verified to work with Camping and Sinatra. See
|
163
|
+
http://github.com/nicksieger/jruby-rack/tree/master/examples for examples
|
164
|
+
of how to configure Warbler to package your Camping and Sinatra apps.
|
165
|
+
- Upgraded to JRuby 1.1.3.
|
166
|
+
- Log files are no longer packaged in the .war file.
|
167
|
+
- Fix #<Warbler::WebxmlOpenStruct ...> appearing in web.xml and document workarounds.
|
168
|
+
- Add config.autodeploy_dir that, when specified, will create the war there.
|
169
|
+
|
170
|
+
== 0.9.9
|
171
|
+
|
172
|
+
- Now shipping with JRuby-Rack 0.9!
|
173
|
+
- Upgrade to JRuby 1.1.1
|
174
|
+
- warble.rb and web.xml.erb have changed as a result of the change to JRuby-Rack -- we
|
175
|
+
recommend comparing the new base copies with any existing configuration you have to
|
176
|
+
make sure you pick up the differences.
|
177
|
+
- Config changes:
|
178
|
+
-- config.webxml.booter chooses what kind of application to use (:rails, :merb or plain :rack).
|
179
|
+
-- config.webxml.pool.* have been replaced by config.webxml.jruby.(min|max).runtimes
|
180
|
+
-- config.webxml.standalone and config.webxml.jruby_home no longer have any effect.
|
181
|
+
|
182
|
+
== 0.9.5
|
183
|
+
|
184
|
+
- Fix bug in plugin warbler.rake task file that would favor loading warbler from gems before the version
|
185
|
+
installed as a plugin
|
186
|
+
- Upgrade to JRuby 1.1 final and Goldspike 1.6.1
|
187
|
+
|
188
|
+
== 0.9.4
|
189
|
+
|
190
|
+
- Update bundled JRuby to 1.1RC3 and Goldspike to 1.6.
|
191
|
+
- Fix inclusion of gems with platform-specific bits (e.g., Hpricot)
|
192
|
+
|
193
|
+
== 0.9.3
|
194
|
+
|
195
|
+
- Update bundled JRuby to 1.1RC2, and Goldspike to 1.5.
|
196
|
+
- The bundled JRuby and Goldspike now require JDK 5 or greater. If you wish to use JDK 1.4, use Warbler 0.9.2.
|
197
|
+
|
198
|
+
== 0.9.2
|
199
|
+
|
200
|
+
- Update bundled JRuby to version 1.0.3 and Goldspike 1.4.
|
201
|
+
- Add config.java_classes to allow you to copy loose Java classes into WEB-INF/classes.
|
202
|
+
- Make jar command a single command string so that jar creation doesn't fail (works around bug in JRuby 1.0.2)
|
203
|
+
- Use File.join to form staging directory, should produce the proper jar-command path in Windows
|
204
|
+
|
205
|
+
== 0.9.1
|
206
|
+
|
207
|
+
- Add rake >= 0.7.3 as a dependency in the gem specification.
|
208
|
+
- Add debug tasks: war:debug, war:debug:gems, war:debug:public, war:debug:app, war:debug:includes,
|
209
|
+
war:debug:excludes, war:debug:java_libs gives you a breakdown of what Warbler expects to package.
|
210
|
+
|
211
|
+
== 0.9
|
212
|
+
|
213
|
+
- Birthday! Warbler is a gem to make a .war file out of a Rails project. The intent is to provide a
|
214
|
+
minimal, flexible, ruby-like way to bundle up all of your application files for deployment to a
|
215
|
+
Java application server.
|
216
|
+
- Bundled versions: goldspike-1.4-SNAPSHOT and jruby-complete-1.0.1
|
217
|
+
- Works as both a gem (rake application) or a plugin
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
= Warbler
|
2
|
+
|
3
|
+
Warbler is provided under the terms of the MIT license.
|
4
|
+
|
5
|
+
Warbler (c) 2010-2011 Engine Yard, Inc.
|
6
|
+
Warbler (c) 2007-2009 Sun Microsystems, Inc.
|
7
|
+
|
8
|
+
Permission is hereby granted, free of charge, to any person
|
9
|
+
obtaining a copy of this software and associated documentation files
|
10
|
+
(the "Software"), to deal in the Software without restriction,
|
11
|
+
including without limitation the rights to use, copy, modify, merge,
|
12
|
+
publish, distribute, sublicense, and/or sell copies of the Software,
|
13
|
+
and to permit persons to whom the Software is furnished to do so,
|
14
|
+
subject to the following conditions:
|
15
|
+
|
16
|
+
The above copyright notice and this permission notice shall be
|
17
|
+
included in all copies or substantial portions of the Software.
|
18
|
+
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
20
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
21
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
22
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
23
|
+
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
24
|
+
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
25
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
26
|
+
SOFTWARE.
|
data/Manifest.txt
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
Gemfile
|
2
|
+
History.txt
|
3
|
+
LICENSE.txt
|
4
|
+
Manifest.txt
|
5
|
+
README.txt
|
6
|
+
Rakefile
|
7
|
+
bin/warble
|
8
|
+
ext/JarMain.java
|
9
|
+
ext/WarMain.java
|
10
|
+
ext/WarblerJar.java
|
11
|
+
ext/WarblerJarService.java
|
12
|
+
lib/warbler
|
13
|
+
lib/warbler.rb
|
14
|
+
lib/warbler/application.rb
|
15
|
+
lib/warbler/config.rb
|
16
|
+
lib/warbler/gems.rb
|
17
|
+
lib/warbler/jar.rb
|
18
|
+
lib/warbler/task.rb
|
19
|
+
lib/warbler/templates
|
20
|
+
lib/warbler/templates/bundler.erb
|
21
|
+
lib/warbler/templates/config.erb
|
22
|
+
lib/warbler/templates/jar.erb
|
23
|
+
lib/warbler/templates/rack.erb
|
24
|
+
lib/warbler/templates/rails.erb
|
25
|
+
lib/warbler/templates/war.erb
|
26
|
+
lib/warbler/traits
|
27
|
+
lib/warbler/traits.rb
|
28
|
+
lib/warbler/traits/bundler.rb
|
29
|
+
lib/warbler/traits/gemspec.rb
|
30
|
+
lib/warbler/traits/jar.rb
|
31
|
+
lib/warbler/traits/merb.rb
|
32
|
+
lib/warbler/traits/nogemspec.rb
|
33
|
+
lib/warbler/traits/rack.rb
|
34
|
+
lib/warbler/traits/rails.rb
|
35
|
+
lib/warbler/traits/war.rb
|
36
|
+
lib/warbler/version.rb
|
37
|
+
lib/warbler/war.rb
|
38
|
+
lib/warbler_jar.jar
|
39
|
+
spec/drb_helper.rb
|
40
|
+
spec/sample_bundler/Gemfile.lock
|
41
|
+
spec/sample_bundler/config.ru
|
42
|
+
spec/sample_bundler/vendor/bundle/jruby/1.8
|
43
|
+
spec/sample_bundler/vendor/bundle/jruby/1.8/cache/rake-0.8.7.gem
|
44
|
+
spec/sample_bundler/vendor/bundle/jruby/1.8/gems/rake-0.8.7
|
45
|
+
spec/sample_bundler/vendor/bundle/jruby/1.8/gems/rake-0.8.7/lib/rake.rb
|
46
|
+
spec/sample_bundler/vendor/bundle/jruby/1.8/specifications/rake-0.8.7.gemspec
|
47
|
+
spec/sample_bundler/vendor/bundle/ruby/1.8
|
48
|
+
spec/sample_bundler/vendor/bundle/ruby/1.8/cache/rake-0.8.7.gem
|
49
|
+
spec/sample_bundler/vendor/bundle/ruby/1.8/gems/rake-0.8.7
|
50
|
+
spec/sample_bundler/vendor/bundle/ruby/1.8/gems/rake-0.8.7/lib/rake.rb
|
51
|
+
spec/sample_bundler/vendor/bundle/ruby/1.8/specifications/rake-0.8.7.gemspec
|
52
|
+
spec/sample_bundler/vendor/bundle/ruby/1.9.1
|
53
|
+
spec/sample_bundler/vendor/bundle/ruby/1.9.1/cache/rake-0.8.7.gem
|
54
|
+
spec/sample_bundler/vendor/bundle/ruby/1.9.1/gems/rake-0.8.7
|
55
|
+
spec/sample_bundler/vendor/bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb
|
56
|
+
spec/sample_bundler/vendor/bundle/ruby/1.9.1/specifications/rake-0.8.7.gemspec
|
57
|
+
spec/sample_jar/History.txt
|
58
|
+
spec/sample_jar/Manifest.txt
|
59
|
+
spec/sample_jar/README.txt
|
60
|
+
spec/sample_jar/lib/sample_jar.rb
|
61
|
+
spec/sample_jar/sample_jar.gemspec
|
62
|
+
spec/sample_jar/test/test_sample_jar.rb
|
63
|
+
spec/sample_war/app/controllers/application.rb
|
64
|
+
spec/sample_war/app/helpers/application_helper.rb
|
65
|
+
spec/sample_war/config/boot.rb
|
66
|
+
spec/sample_war/config/database.yml
|
67
|
+
spec/sample_war/config/environment.rb
|
68
|
+
spec/sample_war/config/environments/development.rb
|
69
|
+
spec/sample_war/config/environments/production.rb
|
70
|
+
spec/sample_war/config/environments/test.rb
|
71
|
+
spec/sample_war/config/initializers/inflections.rb
|
72
|
+
spec/sample_war/config/initializers/mime_types.rb
|
73
|
+
spec/sample_war/config/initializers/new_rails_defaults.rb
|
74
|
+
spec/sample_war/config/routes.rb
|
75
|
+
spec/sample_war/lib/tasks/utils.rake
|
76
|
+
spec/sample_war/public/404.html
|
77
|
+
spec/sample_war/public/422.html
|
78
|
+
spec/sample_war/public/500.html
|
79
|
+
spec/sample_war/public/favicon.ico
|
80
|
+
spec/sample_war/public/index.html
|
81
|
+
spec/sample_war/public/robots.txt
|
82
|
+
spec/spec_helper.rb
|
83
|
+
spec/warbler/application_spec.rb
|
84
|
+
spec/warbler/bundler_spec.rb
|
85
|
+
spec/warbler/config_spec.rb
|
86
|
+
spec/warbler/gems_spec.rb
|
87
|
+
spec/warbler/jar_spec.rb
|
88
|
+
spec/warbler/task_spec.rb
|
89
|
+
spec/warbler/traits_spec.rb
|
90
|
+
spec/warbler/war_spec.rb
|
91
|
+
warble.rb
|
92
|
+
web.xml.erb
|
data/README.txt
ADDED
@@ -0,0 +1,255 @@
|
|
1
|
+
= Warbler
|
2
|
+
|
3
|
+
Warbler is a gem to make a Java jar or war file out of any Ruby,
|
4
|
+
Rails, Merb, or Rack application. Warbler provides a minimal,
|
5
|
+
flexible, Ruby-like way to bundle up all of your application files for
|
6
|
+
deployment to a Java environment.
|
7
|
+
|
8
|
+
Warbler provides a sane set of out-of-the box defaults that should allow most
|
9
|
+
Ruby applications to assemble and Just Work.
|
10
|
+
|
11
|
+
== Getting Started
|
12
|
+
|
13
|
+
1. Install the gem: <tt>gem install warbler</tt>.
|
14
|
+
2. Run warbler in the top directory of your application: <tt>warble</tt>.
|
15
|
+
3a. For a web project, deploy your myapp.war file to your favorite Java
|
16
|
+
application server.
|
17
|
+
3b. For a standalone applications, just run it: <tt>java -jar myapp.jar</tt>.
|
18
|
+
|
19
|
+
== Usage
|
20
|
+
|
21
|
+
Warbler's +warble+ command is just a small wrapper around Rake with internally
|
22
|
+
defined tasks.
|
23
|
+
|
24
|
+
$ warble -T
|
25
|
+
warble compiled # Feature: precompile all Ruby files
|
26
|
+
warble config # Generate a configuration file to customize your archive
|
27
|
+
warble executable # Feature: make an executable archive
|
28
|
+
warble gemjar # Feature: package gem repository inside a war
|
29
|
+
warble pluginize # Install Warbler tasks in your Rails application
|
30
|
+
warble version # Display version of Warbler
|
31
|
+
warble war # Create the project war file
|
32
|
+
warble war:clean # Remove the project war file
|
33
|
+
warble war:debug # Dump diagnostic information
|
34
|
+
|
35
|
+
Type <tt>warble</tt> to create the jar or war file.
|
36
|
+
|
37
|
+
== Features
|
38
|
+
|
39
|
+
Warbler "features" are small Rake tasks that run before the creation
|
40
|
+
of the war file and make manipulations to the archive structure. For
|
41
|
+
instance, the +executable+ feature makes your war file capable of
|
42
|
+
running on its own, without a servlet container:
|
43
|
+
|
44
|
+
warble executable war
|
45
|
+
|
46
|
+
You can either add features to the warbler command line:
|
47
|
+
|
48
|
+
warble FEATURE war
|
49
|
+
|
50
|
+
or configure them in config/warble.rb to always be used.
|
51
|
+
|
52
|
+
config.features = %w(FEATURE)
|
53
|
+
|
54
|
+
Currently, three features are available.
|
55
|
+
|
56
|
+
* +gemjar+: This bundles all gems into a single gem file to reduce the
|
57
|
+
number of files in the .war. This is mostly useful for Google
|
58
|
+
AppEngine where the number of files per application has a limit.
|
59
|
+
(Note: not applicable for jar-based applications.)
|
60
|
+
* +executable+: This bundles an embedded web server into the .war so
|
61
|
+
that it can either be deployed into a traditional java web server or
|
62
|
+
run as a standalone application using <tt>java -jar myapp.war</tt>.
|
63
|
+
(Note: jar-based applications are executable by default.)
|
64
|
+
* +compiled+: This uses +jrubyc+ to precompile all .rb files in your
|
65
|
+
application to .class files and includes those in the .war instead
|
66
|
+
of the Ruby sources.
|
67
|
+
|
68
|
+
Features may form the basis for a third-party plugin system in the
|
69
|
+
future if there is demand.
|
70
|
+
|
71
|
+
== War or Jar?
|
72
|
+
|
73
|
+
War-based projects are for Rails, Merb, or Rack-based web
|
74
|
+
applications. They usually contain a <tt>config/environment.rb</tt>
|
75
|
+
file, a <tt>config/init.rb</tt> file, or a <tt>config.ru</tt> file.
|
76
|
+
The presence of these files are used to determine if the project
|
77
|
+
is a web application, and thus a Java EE compatible war file is built
|
78
|
+
for the project.
|
79
|
+
|
80
|
+
Jar-based projects are for standalone Ruby applications. Usually a
|
81
|
+
Ruby application has a launcher script in the <tt>bin</tt> directory
|
82
|
+
and Ruby code in the <tt>lib</tt> directory. Warbler packages the
|
83
|
+
application so that <tt>java -jar myapp.jar</tt> runs the launcher
|
84
|
+
script.
|
85
|
+
|
86
|
+
== Jar Files
|
87
|
+
|
88
|
+
=== Gem Specification (gemspec) Files
|
89
|
+
|
90
|
+
If your project has a <tt>.gemspec</tt> file in the top directory, it
|
91
|
+
will be used to configure the project's dependencies, launcher script,
|
92
|
+
require paths, and the files to be included in the archive. For best
|
93
|
+
results make sure your gemspec specifies all of the following
|
94
|
+
attributes:
|
95
|
+
|
96
|
+
* +executables+
|
97
|
+
* +require_paths+
|
98
|
+
* runtime dependencies added with +add_dependency+
|
99
|
+
|
100
|
+
If your project do not have a <tt>.gemspec</tt>, Warbler will attempt
|
101
|
+
to guess the launcher from the contents of the <tt>bin</tt> directory
|
102
|
+
and use the <tt>lib</tt> directory as the lone require path. All files
|
103
|
+
in the project will be included in the archive.
|
104
|
+
|
105
|
+
=== Bundler
|
106
|
+
|
107
|
+
Applications that use Bundler[http://gembundler.com/], detected via
|
108
|
+
presence of a +Gemfile+, will have the gems packaged up into the
|
109
|
+
archive along with the Gemfile. The Bundler groups named
|
110
|
+
+:development+ and +:test+ will be excluded by default, unless you
|
111
|
+
specify with +config.bundle_without+ in +config/warble.rb+.
|
112
|
+
|
113
|
+
Warbler supports Bundler for gems and git repositories, but not for
|
114
|
+
plain path components. Warbler will warn when a +:path+ component is
|
115
|
+
found in the +Gemfile+ and will refuse to include it in the archive.
|
116
|
+
|
117
|
+
== War Files
|
118
|
+
|
119
|
+
=== Rails applications
|
120
|
+
|
121
|
+
Rails applications are detected automatically and configured appropriately.
|
122
|
+
The following items are set up for you:
|
123
|
+
|
124
|
+
* Your application runs in the +production+ environment by default.
|
125
|
+
Change it in <tt>config/warble.rb</tt> (see below).
|
126
|
+
* The Rails gem is packaged if you haven't vendored Rails (Rails <= 2.x).
|
127
|
+
* Other gems configured in Rails.configuration.gems are packaged
|
128
|
+
(Rails 2.1 - 2.3)
|
129
|
+
* Multi-thread-safe execution (as introduced in Rails 2.2) is detected
|
130
|
+
and runtime pooling is disabled.
|
131
|
+
|
132
|
+
=== Merb applications
|
133
|
+
|
134
|
+
Merb applications are detected automatically, and the merb-core gem and its
|
135
|
+
dependencies are packaged.
|
136
|
+
|
137
|
+
=== Other Rack-based applications
|
138
|
+
|
139
|
+
If you have a +config.ru+ file in the top directory or one of the
|
140
|
+
immediate subdirectories of your application, it will be included and
|
141
|
+
used as the rackup script for your Rack-based application. You will
|
142
|
+
probably need to specify framework and application gems in
|
143
|
+
config/warble.rb unless you're using Bundler to manage your gems.
|
144
|
+
<tt>ENV['RACK_ENV']</tt> will be set to +production+.
|
145
|
+
|
146
|
+
See {the examples in the jruby-rack project}[http://github.com/nicksieger/jruby-rack/tree/master/examples/]
|
147
|
+
of how to configure Warbler to package Camping and Sinatra apps.
|
148
|
+
|
149
|
+
=== Configuration auto-detect notes
|
150
|
+
|
151
|
+
* Warbler will load the +environment+ Rake task in a Rails application
|
152
|
+
to try to detect some configuration. If you don't have database
|
153
|
+
access in the environment where you package your application, you
|
154
|
+
may wish to set +Warbler.framework_detection+ to false at the top of
|
155
|
+
config.rb. In this case you may need to specify additional details
|
156
|
+
such as booter, gems and other settings that would normally be
|
157
|
+
gleaned from the application configuration.
|
158
|
+
* A more accurate way of detecting a Merb application's gems is
|
159
|
+
needed. Until then, you will have to specify them in
|
160
|
+
+config/warble.rb+. See below.
|
161
|
+
* Is it possible to more generally detect what gems an application
|
162
|
+
uses? Gem.loaded_specs is available, but the application needs to be
|
163
|
+
loaded first before its contents are reliable.
|
164
|
+
|
165
|
+
== Custom configuration
|
166
|
+
|
167
|
+
If the default settings are not appropriate for your application, you can
|
168
|
+
customize Warbler's behavior. To customize files, libraries, and gems included
|
169
|
+
in the .war file, you'll need a config/warble.rb file. There a two ways of
|
170
|
+
doing this. With the gem, simply run
|
171
|
+
|
172
|
+
warble config
|
173
|
+
|
174
|
+
Finally, edit the config/warble.rb to your taste. The generated
|
175
|
+
config/warble.rb file is fully-documented with the available options
|
176
|
+
and default values.
|
177
|
+
|
178
|
+
=== War layout
|
179
|
+
|
180
|
+
The default configuration puts application files (+app+, +config+, +lib+,
|
181
|
+
+log+, +vendor+, +tmp+) under the .war file's WEB-INF directory, and files in
|
182
|
+
+public+ in the root of the .war file. Any Java .jar files stored in lib will
|
183
|
+
automatically be placed in WEB-INF/lib for placement on the web app's
|
184
|
+
classpath.
|
185
|
+
|
186
|
+
=== Web.xml
|
187
|
+
|
188
|
+
Java web applications are configured mainly through this file, and Warbler
|
189
|
+
creates a suitable default file for you for use. However, if you need to
|
190
|
+
customize it in any way, you have two options.
|
191
|
+
|
192
|
+
1. If you just want a static web.xml file whose contents you manually
|
193
|
+
control, you may unzip the one generated for you in
|
194
|
+
<tt>yourapp.war:WEB-INF/web.xml</tt> to <tt>config/web.xml</tt> and
|
195
|
+
modify as needed. It will be copied into subsequent copies of the
|
196
|
+
war file for you.
|
197
|
+
2. If you want to inject some dynamic information into the file, copy
|
198
|
+
the <tt>WARBLER_HOME/web.xml.erb</tt> to
|
199
|
+
<tt>config/web.xml.erb</tt>. Its contents will be evaluated for you
|
200
|
+
and put in the webapp. Note that you can also pass arbitrary
|
201
|
+
properties to the ERb template by setting
|
202
|
+
<tt>config.webxml.customkey</tt> values in your
|
203
|
+
<tt>config/warble.rb</tt> file.
|
204
|
+
|
205
|
+
For more information on configuration, see Warbler::Config.
|
206
|
+
|
207
|
+
== Rakefile integration
|
208
|
+
|
209
|
+
If you'd like to control Warbler from your own project's Rakefile,
|
210
|
+
simply add the following code somewhere in the Rakefile:
|
211
|
+
|
212
|
+
require 'warbler'
|
213
|
+
Warbler::Task.new
|
214
|
+
|
215
|
+
If you're using Bundler, you'll want to add Warbler to your Gemfile:
|
216
|
+
|
217
|
+
group :development do
|
218
|
+
gem "warbler"
|
219
|
+
end
|
220
|
+
|
221
|
+
Now you should be able to invoke "rake war" to create your war file.
|
222
|
+
|
223
|
+
== Troubleshooting
|
224
|
+
|
225
|
+
If Warbler isn't packaging the files you were expecting, use the
|
226
|
+
+war:debug+ task to give you more insight into what's going on.
|
227
|
+
|
228
|
+
If you think you found a bug, please file one at
|
229
|
+
http://kenai.com/jira/browse/WARBLER.
|
230
|
+
|
231
|
+
== Source
|
232
|
+
|
233
|
+
You can get the Warbler source using Git, in any of the following ways:
|
234
|
+
|
235
|
+
git clone git://git.caldersphere.net/warbler.git
|
236
|
+
git clone git://github.com/nicksieger/warbler.git
|
237
|
+
git clone git://kenai.com/warbler~main
|
238
|
+
|
239
|
+
You can also download a tarball of Warbler source at
|
240
|
+
http://github.com/nicksieger/warbler/tree/master.
|
241
|
+
|
242
|
+
== Development
|
243
|
+
|
244
|
+
You can develop Warbler with any implementation of Ruby. To write
|
245
|
+
Warbler code and run specs, you need to have Bundler installed
|
246
|
+
and run "bundle install" once.
|
247
|
+
|
248
|
+
After that, simply run "rake".
|
249
|
+
|
250
|
+
== License
|
251
|
+
|
252
|
+
Warbler is provided under the terms of the MIT license.
|
253
|
+
|
254
|
+
Warbler (c) 2010-2011 Engine Yard, Inc.
|
255
|
+
Warbler (c) 2007-2009 Sun Microsystems, Inc.
|