warbler 1.4.7 → 1.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +18 -12
- data/History.txt +3 -0
- data/Rakefile +13 -7
- data/ext/WarMain.java +5 -0
- data/ext/WarblerJar.java +12 -8
- data/lib/warbler.rb +1 -0
- data/lib/warbler/bundler_helper.rb +22 -0
- data/lib/warbler/gems.rb +9 -9
- data/lib/warbler/jar.rb +3 -1
- data/lib/warbler/traits/bundler.rb +7 -6
- data/lib/warbler/version.rb +1 -1
- data/lib/warbler/web_server.rb +12 -2
- data/lib/warbler_jar.jar +0 -0
- data/pom.xml +15 -9
- data/spec/spec_helper.rb +53 -0
- data/spec/warbler/bundler_spec.rb +77 -44
- metadata +39 -37
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 376781bdadb7244aa3c5922f98c1b1025f40c9c0
|
|
4
|
+
data.tar.gz: 1770365dde33c4c23d2a381357c751bc8deded5e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7c1433a950c083cd92bfee72dd3476be179d96cff5e371eabb339cedfbcffd2de8d9567effd63ab4e483e465ea03fa2c77411215c159e37379a4b7aaa997e5a8
|
|
7
|
+
data.tar.gz: 68cca194a69ffc051afce73800d58460373af2e2d0ee7ce629a4b5d635db84781d6f50ab82cb575aaa2ee89b898aeb1574b2f75a4fffccd0ca9ec27a38bc4186
|
data/.travis.yml
CHANGED
|
@@ -1,28 +1,38 @@
|
|
|
1
|
+
sudo: false
|
|
2
|
+
language: ruby
|
|
3
|
+
script: bundle exec rake spec
|
|
1
4
|
rvm:
|
|
2
5
|
- jruby-1.7.8
|
|
3
6
|
branches:
|
|
4
7
|
only:
|
|
5
8
|
- master
|
|
6
9
|
- 2.x-dev
|
|
10
|
+
- /^test-.*/
|
|
11
|
+
before_install:
|
|
12
|
+
- ([ "$BUNDLER_VERSION" ] && gem uninstall bundler --all --force && gem install bundler -v "$BUNDLER_VERSION") || true
|
|
13
|
+
- bundle --version
|
|
14
|
+
before_script:
|
|
15
|
+
- export JRUBY_OPTS="$JRUBY_OPTS --server -Xcext.enabled=false -Xcompile.invokedynamic=false"
|
|
7
16
|
env:
|
|
8
|
-
- JRUBY_OPTS="--1.8
|
|
9
|
-
- JRUBY_OPTS="--1.9
|
|
17
|
+
- JRUBY_OPTS="--1.8" BUNDLER_VERSION="~> 1.7.9"
|
|
18
|
+
- JRUBY_OPTS="--1.9" BUNDLER_VERSION="~> 1.8.9"
|
|
10
19
|
matrix:
|
|
11
20
|
include:
|
|
12
21
|
- rvm: jruby-head
|
|
13
|
-
env: JRUBY_OPTS="
|
|
14
|
-
- rvm: jruby-1.7.
|
|
15
|
-
env: JRUBY_OPTS="
|
|
22
|
+
env: JRUBY_OPTS="" BUNDLER_VERSION="~> 1.9.9"
|
|
23
|
+
- rvm: jruby-1.7.20
|
|
24
|
+
env: JRUBY_OPTS="" BUNDLER_VERSION="~> 1.10.2"
|
|
16
25
|
- rvm: 1.8.7
|
|
17
|
-
env:
|
|
26
|
+
env: BUNDLER_VERSION="~> 1.6.9"
|
|
18
27
|
- rvm: 1.9.2
|
|
19
|
-
env:
|
|
28
|
+
env: BUNDLER_VERSION="~> 1.7.9"
|
|
20
29
|
- rvm: 1.9.3
|
|
21
|
-
env:
|
|
30
|
+
env: BUNDLER_VERSION="~> 1.8.9"
|
|
22
31
|
- rvm: jruby
|
|
23
32
|
env: MAVEN_OPTS="-XX:MaxPermSize=128m"
|
|
24
33
|
script: mvn clean verify
|
|
25
34
|
allow_failures:
|
|
35
|
+
- rvm: jruby
|
|
26
36
|
- rvm: jruby-head
|
|
27
37
|
notifications:
|
|
28
38
|
irc:
|
|
@@ -32,7 +42,3 @@ notifications:
|
|
|
32
42
|
on_failure: always
|
|
33
43
|
template:
|
|
34
44
|
- "%{repository} (%{branch}:%{commit} by %{author}): %{message} (%{build_url})"
|
|
35
|
-
before_install:
|
|
36
|
-
- sudo apt-get update && sudo apt-get install git
|
|
37
|
-
- git fetch --unshallow
|
|
38
|
-
- gem install bundler --pre
|
data/History.txt
CHANGED
data/Rakefile
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
# See the file LICENSE.txt for details.
|
|
7
7
|
#++
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
begin
|
|
10
|
+
require 'bundler'
|
|
11
|
+
rescue LoadError
|
|
12
|
+
warn "\nPlease `gem install bundler' and run `bundle install' to ensure you have all dependencies.\n\n"
|
|
13
|
+
else
|
|
14
|
+
require 'bundler/gem_helper'
|
|
15
|
+
Bundler::GemHelper.install_tasks :dir => File.dirname(__FILE__)
|
|
11
16
|
end
|
|
12
17
|
|
|
13
|
-
require 'bundler/gem_helper'
|
|
14
|
-
gem_helper = Bundler::GemHelper.new(File.dirname(__FILE__))
|
|
15
|
-
gem_helper.install
|
|
16
|
-
gemspec = gem_helper.gemspec
|
|
17
|
-
|
|
18
18
|
require 'rake/clean'
|
|
19
19
|
CLEAN << "pkg" << "doc" << Dir['integration/**/target']
|
|
20
20
|
|
|
@@ -42,8 +42,13 @@ end
|
|
|
42
42
|
# the jar tasks is part of maven-tasks
|
|
43
43
|
task :build => :jar
|
|
44
44
|
|
|
45
|
+
load_gemspec = lambda do
|
|
46
|
+
Gem::Specification.load(File.expand_path('warbler.gemspec', File.dirname(__FILE__)))
|
|
47
|
+
end
|
|
48
|
+
|
|
45
49
|
require 'rdoc/task'
|
|
46
50
|
RDoc::Task.new(:docs) do |rd|
|
|
51
|
+
gemspec = load_gemspec.call
|
|
47
52
|
rd.rdoc_dir = "doc"
|
|
48
53
|
rd.rdoc_files.include("README.rdoc", "History.txt", "LICENSE.txt")
|
|
49
54
|
rd.rdoc_files += gemspec.require_paths
|
|
@@ -54,6 +59,7 @@ end
|
|
|
54
59
|
task :release_docs => :docs do
|
|
55
60
|
config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml"))) rescue nil
|
|
56
61
|
if config
|
|
62
|
+
gemspec = load_gemspec.call
|
|
57
63
|
dir = "/var/www/gforge-projects/#{gemspec.rubyforge_project}/#{gemspec.name}"
|
|
58
64
|
dest = "#{config["username"]}@rubyforge.org:#{dir}"
|
|
59
65
|
sh %{rsync -rl --delete doc/ #{dest}}
|
data/ext/WarMain.java
CHANGED
|
@@ -63,6 +63,7 @@ public class WarMain extends JarMain {
|
|
|
63
63
|
static final String MAIN = "/" + WarMain.class.getName().replace('.', '/') + ".class";
|
|
64
64
|
static final String WEBSERVER_PROPERTIES = "/WEB-INF/webserver.properties";
|
|
65
65
|
static final String WEBSERVER_JAR = "/WEB-INF/webserver.jar";
|
|
66
|
+
static final String WEBSERVER_CONFIG = "/WEB-INF/webserver.xml";
|
|
66
67
|
|
|
67
68
|
/**
|
|
68
69
|
* jruby arguments, consider the following command :
|
|
@@ -141,10 +142,14 @@ public class WarMain extends JarMain {
|
|
|
141
142
|
|
|
142
143
|
String port = System.getProperty("warbler.port", System.getenv("PORT"));
|
|
143
144
|
port = port == null ? "8080" : port;
|
|
145
|
+
String webserverConfig = System.getProperty("warbler.webserver_config", System.getenv("WARBLER_WEBSERVER_CONFIG"));
|
|
146
|
+
String embeddedWebserverConfig = new URI("jar", entryPath(WEBSERVER_CONFIG), null).toURL().toString();
|
|
147
|
+
webserverConfig = webserverConfig == null ? embeddedWebserverConfig : webserverConfig;
|
|
144
148
|
for (Map.Entry entry : props.entrySet()) {
|
|
145
149
|
String val = (String) entry.getValue();
|
|
146
150
|
val = val.replace("{{warfile}}", archive).
|
|
147
151
|
replace("{{port}}", port).
|
|
152
|
+
replace("{{config}}", webserverConfig).
|
|
148
153
|
replace("{{webroot}}", webroot.getAbsolutePath());
|
|
149
154
|
entry.setValue(val);
|
|
150
155
|
}
|
data/ext/WarblerJar.java
CHANGED
|
@@ -118,16 +118,20 @@ public class WarblerJar {
|
|
|
118
118
|
path = value.convertToString().getUnicodeValue();
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
InputStream inFile = getStream(path, null);
|
|
122
121
|
try {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
122
|
+
InputStream inFile = getStream(path, null);
|
|
123
|
+
try {
|
|
124
|
+
zip.putNextEntry(new ZipEntry(entryName));
|
|
125
|
+
byte[] buf = new byte[16384];
|
|
126
|
+
int bytesRead;
|
|
127
|
+
while ((bytesRead = inFile.read(buf)) != -1) {
|
|
128
|
+
zip.write(buf, 0, bytesRead);
|
|
129
|
+
}
|
|
130
|
+
} finally {
|
|
131
|
+
close(inFile);
|
|
128
132
|
}
|
|
129
|
-
}
|
|
130
|
-
|
|
133
|
+
} catch (IOException e) {
|
|
134
|
+
System.err.println("File not found; " + path + " not in archive");
|
|
131
135
|
}
|
|
132
136
|
}
|
|
133
137
|
}
|
data/lib/warbler.rb
CHANGED
|
@@ -34,6 +34,7 @@ require 'warbler/executable_helper'
|
|
|
34
34
|
require 'warbler/rake_helper'
|
|
35
35
|
require 'warbler/pathmap_helper'
|
|
36
36
|
require 'warbler/platform_helper'
|
|
37
|
+
require 'warbler/bundler_helper'
|
|
37
38
|
require 'warbler/task'
|
|
38
39
|
require 'warbler/application'
|
|
39
40
|
require 'warbler/web_server'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2014-2015 JRuby Team
|
|
3
|
+
# This source code is available under the MIT license.
|
|
4
|
+
# See the file LICENSE.txt for details.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
module Warbler
|
|
8
|
+
module BundlerHelper
|
|
9
|
+
def to_spec(spec)
|
|
10
|
+
# JRuby <= 1.7.20 does not handle respond_to? with method_missing right
|
|
11
|
+
# thus a `spec.respond_to?(:to_spec) ? spec.to_spec : spec` won't do :
|
|
12
|
+
if ::Bundler.const_defined?(:StubSpecification) # since Bundler 1.10.1
|
|
13
|
+
spec = spec.to_spec if spec.is_a?(::Bundler::StubSpecification)
|
|
14
|
+
else
|
|
15
|
+
spec = spec.to_spec if spec.respond_to?(:to_spec)
|
|
16
|
+
end
|
|
17
|
+
spec
|
|
18
|
+
end
|
|
19
|
+
module_function :to_spec
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
data/lib/warbler/gems.rb
CHANGED
|
@@ -43,16 +43,19 @@ module Warbler
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def specs(gem_dependencies)
|
|
46
|
-
@specs ||= map{|gem, version| find_single_gem_files(gem_dependencies, gem, version) }.flatten.compact
|
|
46
|
+
@specs ||= map { |gem, version| find_single_gem_files(gem_dependencies, gem, version) }.flatten.compact
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
private
|
|
50
50
|
|
|
51
51
|
# Add a single gem to WEB-INF/gems
|
|
52
52
|
def find_single_gem_files(gem_dependencies, gem_pattern, version = nil)
|
|
53
|
+
gem_spec_class = Gem::Specification
|
|
54
|
+
gem_spec_class = Gem::BasicSpecification if Gem.const_defined?(:BasicSpecification)
|
|
55
|
+
# Gem::Specification < Gem::BasicSpecification (since RGs 2.1)
|
|
53
56
|
case gem_pattern
|
|
54
|
-
when
|
|
55
|
-
return gem_pattern
|
|
57
|
+
when gem_spec_class
|
|
58
|
+
return BundlerHelper.to_spec(gem_pattern)
|
|
56
59
|
when Gem::Dependency
|
|
57
60
|
gem = gem_pattern
|
|
58
61
|
else
|
|
@@ -62,14 +65,11 @@ module Warbler
|
|
|
62
65
|
return nil if gem.respond_to?(:type) and gem.type != :runtime
|
|
63
66
|
|
|
64
67
|
# Deal with deprecated Gem.source_index and #search
|
|
65
|
-
matched = gem.respond_to?(:to_spec) ? [gem.to_spec] : Gem.source_index.search(gem)
|
|
68
|
+
matched = gem.respond_to?(:to_spec) ? [ gem.to_spec ] : Gem.source_index.search(gem)
|
|
66
69
|
fail "gem '#{gem}' not installed" if matched.empty?
|
|
67
70
|
spec = matched.last
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
else
|
|
71
|
-
spec
|
|
72
|
-
end
|
|
71
|
+
return spec unless gem_dependencies
|
|
72
|
+
[spec] + spec.dependencies.map { |gem| find_single_gem_files(gem_dependencies, gem) }
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
end
|
data/lib/warbler/jar.rb
CHANGED
|
@@ -290,8 +290,10 @@ module Warbler
|
|
|
290
290
|
zipfile.mkdir(entry.dup) # in case it's frozen rubyzip 0.9.6.1 workaround
|
|
291
291
|
elsif File.symlink?(src)
|
|
292
292
|
zipfile.get_output_stream(entry) { |f| f << File.read(src) }
|
|
293
|
-
|
|
293
|
+
elsif File.exist?(src)
|
|
294
294
|
zipfile.add(entry, src)
|
|
295
|
+
else
|
|
296
|
+
$stderr.puts "File not found; #{entry.inspect} not in archive"
|
|
295
297
|
end
|
|
296
298
|
end
|
|
297
299
|
end
|
|
@@ -12,6 +12,7 @@ module Warbler
|
|
|
12
12
|
class Bundler
|
|
13
13
|
include Trait
|
|
14
14
|
include PathmapHelper
|
|
15
|
+
include BundlerHelper
|
|
15
16
|
|
|
16
17
|
def self.detect?
|
|
17
18
|
File.exist?(ENV['BUNDLE_GEMFILE'] || "Gemfile")
|
|
@@ -37,15 +38,15 @@ module Warbler
|
|
|
37
38
|
config.bundler = {}
|
|
38
39
|
|
|
39
40
|
bundler_specs.each do |spec|
|
|
41
|
+
spec = to_spec(spec)
|
|
40
42
|
# Bundler HAX -- fixup bad #loaded_from attribute in fake
|
|
41
43
|
# bundler gemspec from bundler/source.rb
|
|
42
|
-
if spec.name ==
|
|
44
|
+
if spec.name == 'bundler'
|
|
43
45
|
full_gem_path = Pathname.new(spec.full_gem_path)
|
|
44
|
-
|
|
45
|
-
while !full_gem_path.join('bundler.gemspec').exist?
|
|
46
|
+
while ! full_gem_path.join('bundler.gemspec').exist?
|
|
46
47
|
full_gem_path = full_gem_path.dirname
|
|
47
48
|
# if at top of the path, meaning we cannot find bundler.gemspec, abort.
|
|
48
|
-
if full_gem_path.to_s
|
|
49
|
+
if full_gem_path.to_s =~ /^[\.\/]$/
|
|
49
50
|
$stderr.puts("warning: Unable to detect bundler spec under '#{spec.full_gem_path}'' and is sub-dirs")
|
|
50
51
|
exit
|
|
51
52
|
end
|
|
@@ -139,8 +140,8 @@ module Warbler
|
|
|
139
140
|
definition = ::Bundler.definition
|
|
140
141
|
all = definition.specs.to_a
|
|
141
142
|
requested = definition.specs_for(definition.groups - bundle_without).to_a
|
|
142
|
-
excluded_git_specs = (all - requested).select {|spec| ::Bundler::Source::Git === spec.source }
|
|
143
|
-
excluded_git_specs.each {|spec| spec.groups << :warbler_excluded }
|
|
143
|
+
excluded_git_specs = (all - requested).select { |spec| ::Bundler::Source::Git === spec.source }
|
|
144
|
+
excluded_git_specs.each { |spec| spec.groups << :warbler_excluded }
|
|
144
145
|
requested + excluded_git_specs
|
|
145
146
|
end
|
|
146
147
|
|
data/lib/warbler/version.rb
CHANGED
data/lib/warbler/web_server.rb
CHANGED
|
@@ -122,13 +122,23 @@ PROPS
|
|
|
122
122
|
|
|
123
123
|
def add(jar)
|
|
124
124
|
super
|
|
125
|
+
jar.files["WEB-INF/webserver.xml"] ||= StringIO.new(<<-CONFIG)
|
|
126
|
+
<?xml version="1.0"?>
|
|
127
|
+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
|
|
128
|
+
|
|
129
|
+
<Configure id="Server" class="org.eclipse.jetty.server.Server">
|
|
130
|
+
</Configure>
|
|
131
|
+
CONFIG
|
|
132
|
+
|
|
125
133
|
jar.files["WEB-INF/webserver.properties"] = StringIO.new(<<-PROPS)
|
|
126
134
|
mainclass = org.eclipse.jetty.runner.Runner
|
|
127
|
-
args = args0,args1,args2
|
|
135
|
+
args = args0,args1,args2,args3,args4
|
|
128
136
|
props = jetty.home
|
|
129
137
|
args0 = --port
|
|
130
138
|
args1 = {{port}}
|
|
131
|
-
args2 =
|
|
139
|
+
args2 = --config
|
|
140
|
+
args3 = {{config}}
|
|
141
|
+
args4 = {{warfile}}
|
|
132
142
|
jetty.home = {{webroot}}
|
|
133
143
|
PROPS
|
|
134
144
|
end
|
data/lib/warbler_jar.jar
CHANGED
|
Binary file
|
data/pom.xml
CHANGED
|
@@ -4,17 +4,16 @@
|
|
|
4
4
|
<modelVersion>4.0.0</modelVersion>
|
|
5
5
|
<groupId>rubygems</groupId>
|
|
6
6
|
<artifactId>warbler</artifactId>
|
|
7
|
-
<version>1.4.
|
|
7
|
+
<version>1.4.8.dev-SNAPSHOT</version>
|
|
8
8
|
<packaging>gem</packaging>
|
|
9
9
|
<name>Warbler chirpily constructs .war files of your Rails applications.</name>
|
|
10
10
|
<description>Warbler is a gem to make a Java jar or war file out of any Ruby,
|
|
11
|
-
Rails,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<url>http://caldersphere.rubyforge.org/warbler</url>
|
|
11
|
+
Rails, or Rack application. Warbler provides a minimal, flexible, Ruby-like way to
|
|
12
|
+
bundle up all of your application files for deployment to a Java environment.</description>
|
|
13
|
+
<url>https://github.com/jruby/warbler</url>
|
|
15
14
|
<properties>
|
|
16
15
|
<tesla.dump.readOnly>true</tesla.dump.readOnly>
|
|
17
|
-
<jruby.plugins.version>1.0.0
|
|
16
|
+
<jruby.plugins.version>1.0.0</jruby.plugins.version>
|
|
18
17
|
<tesla.dump.pom>pom.xml</tesla.dump.pom>
|
|
19
18
|
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
|
|
20
19
|
</properties>
|
|
@@ -34,19 +33,26 @@ deployment to a Java environment.</description>
|
|
|
34
33
|
<dependency>
|
|
35
34
|
<groupId>rubygems</groupId>
|
|
36
35
|
<artifactId>jruby-rack</artifactId>
|
|
37
|
-
<version>[1.
|
|
36
|
+
<version>[1.1.1,1.3)</version>
|
|
38
37
|
<type>gem</type>
|
|
39
38
|
</dependency>
|
|
40
39
|
<dependency>
|
|
41
40
|
<groupId>rubygems</groupId>
|
|
42
41
|
<artifactId>rubyzip</artifactId>
|
|
43
|
-
<version>[0.9,1.
|
|
42
|
+
<version>[0.9,1.2)</version>
|
|
44
43
|
<type>gem</type>
|
|
45
44
|
</dependency>
|
|
45
|
+
<dependency>
|
|
46
|
+
<groupId>rubygems</groupId>
|
|
47
|
+
<artifactId>jbundler</artifactId>
|
|
48
|
+
<version>[0.5.5,0.5.99999]</version>
|
|
49
|
+
<type>gem</type>
|
|
50
|
+
<scope>test</scope>
|
|
51
|
+
</dependency>
|
|
46
52
|
<dependency>
|
|
47
53
|
<groupId>rubygems</groupId>
|
|
48
54
|
<artifactId>ruby-maven</artifactId>
|
|
49
|
-
<version>[3.1.1.0
|
|
55
|
+
<version>[3.1.1.0,3.1.1.99999]</version>
|
|
50
56
|
<type>gem</type>
|
|
51
57
|
<scope>test</scope>
|
|
52
58
|
</dependency>
|
data/spec/spec_helper.rb
CHANGED
|
@@ -82,6 +82,59 @@ module ExampleGroupHelpers
|
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
+
def create_git_gem(gem_name)
|
|
86
|
+
before do
|
|
87
|
+
@gem_dir = Dir.mktmpdir("#{gem_name}-#{rand(100)}")
|
|
88
|
+
cur_dir = Dir.pwd
|
|
89
|
+
Dir.chdir(@gem_dir) do
|
|
90
|
+
`git init`
|
|
91
|
+
`git config user.email "warbler-test@null.com"`
|
|
92
|
+
`git config user.name "Warbler Test"`
|
|
93
|
+
|
|
94
|
+
# create the gemspec and Gemfile
|
|
95
|
+
File.open("Gemfile", "w") do |f|
|
|
96
|
+
f << <<-RUBY
|
|
97
|
+
source "http://rubygems.org/"
|
|
98
|
+
gemspec
|
|
99
|
+
RUBY
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
File.open("#{gem_name}.gemspec", "w") do |f|
|
|
103
|
+
f << <<-RUBY
|
|
104
|
+
# -*- encoding: utf-8 -*-
|
|
105
|
+
Gem::Specification.new do |gem|
|
|
106
|
+
gem.name = "#{gem_name}"
|
|
107
|
+
gem.version = '1.0'
|
|
108
|
+
gem.authors = ['John Doe']
|
|
109
|
+
gem.summary = "Gem for testing"
|
|
110
|
+
gem.platform = Gem::Platform::RUBY
|
|
111
|
+
gem.files = `git ls-files`.split("\n")
|
|
112
|
+
gem.add_runtime_dependency 'rake', [">= 10.4.2"]
|
|
113
|
+
end
|
|
114
|
+
RUBY
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
Dir.mkdir("lib")
|
|
118
|
+
Dir.mkdir("lib/#{gem_name}")
|
|
119
|
+
|
|
120
|
+
File.open("lib/#{gem_name}/version.rb", "w") do |f|
|
|
121
|
+
f << <<-RUBY
|
|
122
|
+
VERSION = "1.0"
|
|
123
|
+
RUBY
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# `bundle install --local`
|
|
127
|
+
`git add .`
|
|
128
|
+
`git commit -am "first commit"`
|
|
129
|
+
end
|
|
130
|
+
Dir.chdir(cur_dir)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
after do
|
|
134
|
+
FileUtils.remove_entry_secure @gem_dir
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
85
138
|
def run_out_of_process_with_drb
|
|
86
139
|
before :all do
|
|
87
140
|
DRb.start_service
|
|
@@ -21,6 +21,10 @@ describe Warbler::Jar, "with Bundler" do
|
|
|
21
21
|
@extra_config = block
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
def bundle_install(*args)
|
|
25
|
+
`cd #{Dir.pwd} && #{RUBY_EXE} -S bundle install #{args.join(' ')}`
|
|
26
|
+
end
|
|
27
|
+
|
|
24
28
|
let(:config) { drbclient.config(@extra_config) }
|
|
25
29
|
let(:jar) { drbclient.jar }
|
|
26
30
|
|
|
@@ -62,47 +66,30 @@ describe Warbler::Jar, "with Bundler" do
|
|
|
62
66
|
end
|
|
63
67
|
|
|
64
68
|
context 'with :git entries in the Gemfile' do
|
|
65
|
-
|
|
66
|
-
File.open("Gemfile", "w") {|f| f << "gem 'warbler', :git => '#{Warbler::WARBLER_HOME}'\n"}
|
|
67
|
-
`#{RUBY_EXE} -S bundle install --local`
|
|
68
|
-
end
|
|
69
|
+
create_git_gem("tester")
|
|
69
70
|
|
|
70
71
|
it "works with :git entries in Gemfiles" do
|
|
72
|
+
File.open("Gemfile", "w") {|f| f << "gem 'tester', :git => '#{@gem_dir}'\n"}
|
|
73
|
+
bundle_install '--local'
|
|
71
74
|
jar.apply(config)
|
|
72
|
-
file_list(%r{WEB-INF/gems/bundler/gems/
|
|
73
|
-
file_list(%r{WEB-INF/gems/bundler/gems/
|
|
75
|
+
file_list(%r{WEB-INF/gems/bundler/gems/tester[^/]*/lib/tester/version\.rb}).should_not be_empty
|
|
76
|
+
file_list(%r{WEB-INF/gems/bundler/gems/tester[^/]*/tester.gemspec}).should_not be_empty
|
|
74
77
|
end
|
|
75
78
|
|
|
76
|
-
it "
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
config.override_gem_home = false
|
|
80
|
-
end
|
|
79
|
+
it "bundles only the gemspec for :git entries that are excluded" do
|
|
80
|
+
File.open("Gemfile", "w") {|f| f << "gem 'rake'\ngroup :test do\ngem 'tester', :git => '#{@gem_dir}'\nend\n"}
|
|
81
|
+
bundle_install '--local'
|
|
81
82
|
jar.apply(config)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
stdin, stdout, stderr, wait_thr = Open3.popen3('java -jar foo.war -S rake -T')
|
|
85
|
-
wait_thr.value.success?.should be(true), stderr.readlines.join
|
|
86
|
-
else
|
|
87
|
-
`java -jar foo.war -S rake -T`
|
|
88
|
-
$?.exitstatus.should == 0
|
|
89
|
-
end
|
|
83
|
+
file_list(%r{WEB-INF/gems/bundler/gems/tester[^/]*/lib/tester/version\.rb}).should be_empty
|
|
84
|
+
file_list(%r{WEB-INF/gems/bundler/gems/tester[^/]*/tester.gemspec}).should_not be_empty
|
|
90
85
|
end
|
|
91
|
-
end
|
|
92
86
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
it "does not work with :path entries in Gemfiles" do
|
|
102
|
-
File.open("Gemfile", "w") {|f| f << "gem 'warbler', :path => '#{Warbler::WARBLER_HOME}'\n"}
|
|
103
|
-
`#{RUBY_EXE} -S bundle install --local`
|
|
104
|
-
silence { jar.apply(config) }
|
|
105
|
-
file_list(%r{warbler}).should be_empty
|
|
87
|
+
it "does not work with :path entries in Gemfiles" do
|
|
88
|
+
File.open("Gemfile", "w") {|f| f << "gem 'tester', :path => '#{@gem_dir}'\n"}
|
|
89
|
+
bundle_install '--local'
|
|
90
|
+
silence { jar.apply(config) }
|
|
91
|
+
file_list(%r{tester}).should be_empty
|
|
92
|
+
end
|
|
106
93
|
end
|
|
107
94
|
|
|
108
95
|
it "does not bundle dependencies in the test group by default" do
|
|
@@ -138,19 +125,23 @@ describe Warbler::Jar, "with Bundler" do
|
|
|
138
125
|
run_in_directory "spec/sample_jar"
|
|
139
126
|
cleanup_temp_files
|
|
140
127
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
128
|
+
context 'with :git entries in the Gemfile' do
|
|
129
|
+
create_git_gem("tester")
|
|
130
|
+
|
|
131
|
+
it "works with :git entries in Gemfiles" do
|
|
132
|
+
File.open("Gemfile", "w") {|f| f << "gem 'tester', :git => '#{@gem_dir}'\n"}
|
|
133
|
+
bundle_install '--local'
|
|
134
|
+
jar.apply(config)
|
|
135
|
+
file_list(%r{^bundler/gems/tester[^/]*/lib/tester/version\.rb}).should_not be_empty
|
|
136
|
+
file_list(%r{^bundler/gems/tester[^/]*/tester.gemspec}).should_not be_empty
|
|
137
|
+
jar.add_init_file(config)
|
|
138
|
+
contents = jar.contents('META-INF/init.rb')
|
|
139
|
+
contents.should =~ /ENV\['BUNDLE_GEMFILE'\] = File.expand_path(.*, __FILE__)/
|
|
140
|
+
end
|
|
150
141
|
end
|
|
151
142
|
|
|
152
143
|
it "adds BUNDLE_GEMFILE to init.rb" do
|
|
153
|
-
File.open("Gemfile", "w") {|f| f << "source
|
|
144
|
+
File.open("Gemfile", "w") {|f| f << "source 'http://rubygems.org/'" }
|
|
154
145
|
jar.add_init_file(config)
|
|
155
146
|
contents = jar.contents('META-INF/init.rb')
|
|
156
147
|
contents.should =~ /ENV\['BUNDLE_GEMFILE'\] = File.expand_path(.*, __FILE__)/
|
|
@@ -176,13 +167,55 @@ describe Warbler::Jar, "with Bundler" do
|
|
|
176
167
|
contents = jar.contents('META-INF/init.rb')
|
|
177
168
|
contents.split("\n").grep(/ENV\['BUNDLE_FROZEN'\] = '1'/).should_not be_empty
|
|
178
169
|
end
|
|
170
|
+
|
|
171
|
+
context "with the runnable feature" do
|
|
172
|
+
before do
|
|
173
|
+
File.open("Rakefile", "w") do |f|
|
|
174
|
+
f << <<-RUBY
|
|
175
|
+
task :test_task do
|
|
176
|
+
puts "success"
|
|
177
|
+
end
|
|
178
|
+
RUBY
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
use_config do |config|
|
|
182
|
+
config.features = %w{runnable}
|
|
183
|
+
end
|
|
184
|
+
jar.apply(config)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
after do
|
|
188
|
+
rm_rf "Rakefile"
|
|
189
|
+
rm_rf "foo.war"
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "adds WarMain and JarMain to file" do
|
|
193
|
+
file_list(%r{^WarMain\.class$}).should_not be_empty
|
|
194
|
+
file_list(%r{^JarMain\.class$}).should_not be_empty
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it "can run commands in the generated warfile" do
|
|
198
|
+
jar.create('foo.war')
|
|
199
|
+
if RUBY_VERSION >= '1.9'
|
|
200
|
+
stdin, stdout, stderr, wait_thr = Open3.popen3('java -jar foo.war -S rake test_task')
|
|
201
|
+
wait_thr.value.success?.should be(true)
|
|
202
|
+
|
|
203
|
+
# TODO need to update rake or we'll get an warning in stderr
|
|
204
|
+
# stderr.readlines.join.should eq("")
|
|
205
|
+
stdout.readlines.join.should include("success\n")
|
|
206
|
+
else
|
|
207
|
+
`java -jar foo.war -S rake -T`
|
|
208
|
+
$?.exitstatus.should == 0
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
179
212
|
end
|
|
180
213
|
|
|
181
214
|
context "when deployment" do
|
|
182
215
|
run_in_directory "spec/sample_bundler"
|
|
183
216
|
|
|
184
217
|
it "includes the bundler gem" do
|
|
185
|
-
|
|
218
|
+
bundle_install '--deployment'
|
|
186
219
|
jar.apply(config)
|
|
187
220
|
file_list(%r{gems/rake-0.8.7/lib}).should_not be_empty
|
|
188
221
|
file_list(%r{gems/bundler-}).should_not be_empty
|
metadata
CHANGED
|
@@ -1,39 +1,30 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: warbler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.4.
|
|
4
|
+
version: 1.4.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nick Sieger
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-04
|
|
11
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: rake
|
|
15
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - '>='
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.9.6
|
|
20
14
|
requirement: !ruby/object:Gem::Requirement
|
|
21
15
|
requirements:
|
|
22
16
|
- - '>='
|
|
23
17
|
- !ruby/object:Gem::Version
|
|
24
18
|
version: 0.9.6
|
|
19
|
+
name: rake
|
|
25
20
|
prerelease: false
|
|
26
21
|
type: :runtime
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: jruby-jars
|
|
29
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
30
23
|
requirements:
|
|
31
24
|
- - '>='
|
|
32
25
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
34
|
-
|
|
35
|
-
- !ruby/object:Gem::Version
|
|
36
|
-
version: '2.0'
|
|
26
|
+
version: 0.9.6
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
37
28
|
requirement: !ruby/object:Gem::Requirement
|
|
38
29
|
requirements:
|
|
39
30
|
- - '>='
|
|
@@ -42,18 +33,18 @@ dependencies:
|
|
|
42
33
|
- - <
|
|
43
34
|
- !ruby/object:Gem::Version
|
|
44
35
|
version: '2.0'
|
|
36
|
+
name: jruby-jars
|
|
45
37
|
prerelease: false
|
|
46
38
|
type: :runtime
|
|
47
|
-
- !ruby/object:Gem::Dependency
|
|
48
|
-
name: jruby-rack
|
|
49
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
40
|
requirements:
|
|
51
41
|
- - '>='
|
|
52
42
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 1.
|
|
43
|
+
version: 1.5.6
|
|
54
44
|
- - <
|
|
55
45
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: '
|
|
46
|
+
version: '2.0'
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
57
48
|
requirement: !ruby/object:Gem::Requirement
|
|
58
49
|
requirements:
|
|
59
50
|
- - '>='
|
|
@@ -62,18 +53,18 @@ dependencies:
|
|
|
62
53
|
- - <
|
|
63
54
|
- !ruby/object:Gem::Version
|
|
64
55
|
version: '1.3'
|
|
56
|
+
name: jruby-rack
|
|
65
57
|
prerelease: false
|
|
66
58
|
type: :runtime
|
|
67
|
-
- !ruby/object:Gem::Dependency
|
|
68
|
-
name: rubyzip
|
|
69
59
|
version_requirements: !ruby/object:Gem::Requirement
|
|
70
60
|
requirements:
|
|
71
61
|
- - '>='
|
|
72
62
|
- !ruby/object:Gem::Version
|
|
73
|
-
version:
|
|
63
|
+
version: 1.1.1
|
|
74
64
|
- - <
|
|
75
65
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: '1.
|
|
66
|
+
version: '1.3'
|
|
67
|
+
- !ruby/object:Gem::Dependency
|
|
77
68
|
requirement: !ruby/object:Gem::Requirement
|
|
78
69
|
requirements:
|
|
79
70
|
- - '>='
|
|
@@ -82,64 +73,73 @@ dependencies:
|
|
|
82
73
|
- - <
|
|
83
74
|
- !ruby/object:Gem::Version
|
|
84
75
|
version: '1.2'
|
|
76
|
+
name: rubyzip
|
|
85
77
|
prerelease: false
|
|
86
78
|
type: :runtime
|
|
87
|
-
- !ruby/object:Gem::Dependency
|
|
88
|
-
name: jbundler
|
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
90
80
|
requirements:
|
|
91
|
-
- -
|
|
81
|
+
- - '>='
|
|
92
82
|
- !ruby/object:Gem::Version
|
|
93
|
-
version: 0.
|
|
83
|
+
version: '0.9'
|
|
84
|
+
- - <
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '1.2'
|
|
87
|
+
- !ruby/object:Gem::Dependency
|
|
94
88
|
requirement: !ruby/object:Gem::Requirement
|
|
95
89
|
requirements:
|
|
96
90
|
- - ~>
|
|
97
91
|
- !ruby/object:Gem::Version
|
|
98
92
|
version: 0.5.5
|
|
93
|
+
name: jbundler
|
|
99
94
|
prerelease: false
|
|
100
95
|
type: :development
|
|
101
|
-
- !ruby/object:Gem::Dependency
|
|
102
|
-
name: ruby-maven
|
|
103
96
|
version_requirements: !ruby/object:Gem::Requirement
|
|
104
97
|
requirements:
|
|
105
98
|
- - ~>
|
|
106
99
|
- !ruby/object:Gem::Version
|
|
107
|
-
version:
|
|
100
|
+
version: 0.5.5
|
|
101
|
+
- !ruby/object:Gem::Dependency
|
|
108
102
|
requirement: !ruby/object:Gem::Requirement
|
|
109
103
|
requirements:
|
|
110
104
|
- - ~>
|
|
111
105
|
- !ruby/object:Gem::Version
|
|
112
106
|
version: 3.1.1.0
|
|
107
|
+
name: ruby-maven
|
|
113
108
|
prerelease: false
|
|
114
109
|
type: :development
|
|
115
|
-
- !ruby/object:Gem::Dependency
|
|
116
|
-
name: rspec
|
|
117
110
|
version_requirements: !ruby/object:Gem::Requirement
|
|
118
111
|
requirements:
|
|
119
112
|
- - ~>
|
|
120
113
|
- !ruby/object:Gem::Version
|
|
121
|
-
version:
|
|
114
|
+
version: 3.1.1.0
|
|
115
|
+
- !ruby/object:Gem::Dependency
|
|
122
116
|
requirement: !ruby/object:Gem::Requirement
|
|
123
117
|
requirements:
|
|
124
118
|
- - ~>
|
|
125
119
|
- !ruby/object:Gem::Version
|
|
126
120
|
version: '2.10'
|
|
121
|
+
name: rspec
|
|
127
122
|
prerelease: false
|
|
128
123
|
type: :development
|
|
129
|
-
- !ruby/object:Gem::Dependency
|
|
130
|
-
name: rdoc
|
|
131
124
|
version_requirements: !ruby/object:Gem::Requirement
|
|
132
125
|
requirements:
|
|
133
|
-
- -
|
|
126
|
+
- - ~>
|
|
134
127
|
- !ruby/object:Gem::Version
|
|
135
|
-
version: 2.
|
|
128
|
+
version: '2.10'
|
|
129
|
+
- !ruby/object:Gem::Dependency
|
|
136
130
|
requirement: !ruby/object:Gem::Requirement
|
|
137
131
|
requirements:
|
|
138
132
|
- - '>='
|
|
139
133
|
- !ruby/object:Gem::Version
|
|
140
134
|
version: 2.4.2
|
|
135
|
+
name: rdoc
|
|
141
136
|
prerelease: false
|
|
142
137
|
type: :development
|
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
140
|
+
- - '>='
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: 2.4.2
|
|
143
143
|
description: |-
|
|
144
144
|
Warbler is a gem to make a Java jar or war file out of any Ruby,
|
|
145
145
|
Rails, or Rack application. Warbler provides a minimal, flexible, Ruby-like way to
|
|
@@ -247,6 +247,7 @@ files:
|
|
|
247
247
|
- integration/simple_rack_test/src/test/java/org/jruby/warbler/AppTestIT.java
|
|
248
248
|
- lib/warbler.rb
|
|
249
249
|
- lib/warbler/application.rb
|
|
250
|
+
- lib/warbler/bundler_helper.rb
|
|
250
251
|
- lib/warbler/config.rb
|
|
251
252
|
- lib/warbler/executable_helper.rb
|
|
252
253
|
- lib/warbler/gems.rb
|
|
@@ -391,7 +392,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
391
392
|
version: '0'
|
|
392
393
|
requirements: []
|
|
393
394
|
rubyforge_project:
|
|
394
|
-
rubygems_version: 2.4.
|
|
395
|
+
rubygems_version: 2.4.6
|
|
395
396
|
signing_key:
|
|
396
397
|
specification_version: 4
|
|
397
398
|
summary: Warbler chirpily constructs .war files of your Rails applications.
|
|
@@ -562,3 +563,4 @@ test_files:
|
|
|
562
563
|
- spec/warbler/traits_spec.rb
|
|
563
564
|
- spec/warbler/war_spec.rb
|
|
564
565
|
- spec/warbler/web_server_spec.rb
|
|
566
|
+
has_rdoc:
|