warbler 1.3.7 → 1.3.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.
- data/.gitignore +4 -0
- data/Gemfile +4 -1
- data/History.txt +25 -0
- data/ext/JarMain.java +18 -3
- data/ext/WarMain.java +33 -13
- data/lib/warbler/templates/rails.erb +1 -1
- data/lib/warbler/version.rb +1 -1
- data/lib/warbler_jar.jar +0 -0
- data/warble.rb +1 -1
- metadata +2 -2
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
== 1.3.8
|
2
|
+
|
3
|
+
- Numerous fixes related to -S option and local environment.
|
4
|
+
- #162: Close the URLClassLoader before deleting tempJARs
|
5
|
+
- #161: Comment out config.dirs to match default
|
6
|
+
- #158: Warbler looking in the wrong directory for bundler gem
|
7
|
+
|
8
|
+
== 1.3.7
|
9
|
+
|
10
|
+
- #154: Use #load in .rb shims
|
11
|
+
- #153: Runnable war error
|
12
|
+
- #152: Mirror fallback for winstone-jenkins?
|
13
|
+
- #150: Don't delete contents of symlinked folder.
|
14
|
+
- #148: Resolving issue when an alternate BUNDLE_PATH is used
|
15
|
+
- #144: No such file to load -- bundler/setup (with bundler 1.3.4)
|
16
|
+
- #141: Support running executables from Bundler gems and project-local scripts
|
17
|
+
- #136: java -jar rails.war -S rake db:migrate
|
18
|
+
- #125: Fix self executable jar/wars when the filename contains '#' symbols
|
19
|
+
- #122: When comparing zip file entries, ignore trailing slashes
|
20
|
+
- #118: warble pluginize does not work on rails 3.x
|
21
|
+
- #117: Allow compile feature to work in 1.9 mode
|
22
|
+
- #112: Reset ENV['GEM_HOME'], limit search to within .jar
|
23
|
+
- #105: Pick executables deterministically and warn when doing so
|
24
|
+
- #104: Default executable is system-dependent
|
25
|
+
|
1
26
|
== 1.3.6
|
2
27
|
|
3
28
|
- #100: fix winstone URL
|
data/ext/JarMain.java
CHANGED
@@ -36,6 +36,8 @@ public class JarMain implements Runnable {
|
|
36
36
|
|
37
37
|
protected File extractRoot;
|
38
38
|
|
39
|
+
protected URLClassLoader classLoader;
|
40
|
+
|
39
41
|
JarMain(String[] args) {
|
40
42
|
this.args = args;
|
41
43
|
URL mainClass = getClass().getResource(MAIN);
|
@@ -125,12 +127,12 @@ public class JarMain implements Runnable {
|
|
125
127
|
|
126
128
|
protected Object newScriptingContainer(final URL[] jars) throws Exception {
|
127
129
|
System.setProperty("org.jruby.embed.class.path", "");
|
128
|
-
|
129
|
-
Class scriptingContainerClass = Class.forName("org.jruby.embed.ScriptingContainer", true,
|
130
|
+
classLoader = new URLClassLoader(jars);
|
131
|
+
Class scriptingContainerClass = Class.forName("org.jruby.embed.ScriptingContainer", true, classLoader);
|
130
132
|
Object scriptingContainer = scriptingContainerClass.newInstance();
|
131
133
|
debug("scripting container class loader urls: " + Arrays.toString(jars));
|
132
134
|
invokeMethod(scriptingContainer, "setArgv", (Object) args);
|
133
|
-
invokeMethod(scriptingContainer, "setClassLoader", new Class[] { ClassLoader.class },
|
135
|
+
invokeMethod(scriptingContainer, "setClassLoader", new Class[] { ClassLoader.class }, classLoader);
|
134
136
|
return scriptingContainer;
|
135
137
|
}
|
136
138
|
|
@@ -165,6 +167,10 @@ public class JarMain implements Runnable {
|
|
165
167
|
if (debug) System.out.println(msg);
|
166
168
|
if (debug && t != null) t.printStackTrace(System.out);
|
167
169
|
}
|
170
|
+
|
171
|
+
protected void warn(String msg) {
|
172
|
+
System.out.println("WARNING: " + msg);
|
173
|
+
}
|
168
174
|
|
169
175
|
protected void delete(File f) {
|
170
176
|
try {
|
@@ -194,6 +200,15 @@ public class JarMain implements Runnable {
|
|
194
200
|
}
|
195
201
|
|
196
202
|
public void run() {
|
203
|
+
// If the URLClassLoader isn't closed, on Windows, temp JARs won't be cleaned up
|
204
|
+
try {
|
205
|
+
invokeMethod(classLoader, "close");
|
206
|
+
}
|
207
|
+
catch(NoSuchMethodException e) { } // We're not being run on Java >= 7
|
208
|
+
catch(Exception e) {
|
209
|
+
System.err.println("error: " + e.toString());
|
210
|
+
}
|
211
|
+
|
197
212
|
if ( extractRoot != null ) delete(extractRoot);
|
198
213
|
}
|
199
214
|
|
data/ext/WarMain.java
CHANGED
@@ -63,14 +63,19 @@ 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
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
66
|
+
|
67
|
+
/**
|
68
|
+
* jruby arguments, consider the following command :
|
69
|
+
* `java -jar rails.was --1.9 -S rake db:migrate`
|
70
|
+
* arguments == [ "--1.9" ]
|
71
|
+
* executable == "rake"
|
72
|
+
* executableArgv == [ "db:migrate" ]
|
73
|
+
*/
|
72
74
|
private final String[] arguments;
|
73
|
-
|
75
|
+
|
76
|
+
/**
|
77
|
+
* null to launch webserver or != null to run a executable e.g. rake
|
78
|
+
*/
|
74
79
|
private final String executable;
|
75
80
|
private final String[] executableArgv;
|
76
81
|
|
@@ -90,6 +95,10 @@ public class WarMain extends JarMain {
|
|
90
95
|
arguments = argsList.subList(0, sIndex).toArray(new String[0]);
|
91
96
|
executable = argsList.get(sIndex + 1);
|
92
97
|
executableArgv = argsList.subList(sIndex + 2, argsList.size()).toArray(new String[0]);
|
98
|
+
|
99
|
+
if (executable.equals("bundle") && executableArgv.length > 0 && executableArgv[0].equals("exec")) {
|
100
|
+
warn("`bundle exec' may drop out of the Warbler environment and into the system environment");
|
101
|
+
}
|
93
102
|
}
|
94
103
|
}
|
95
104
|
|
@@ -212,13 +221,22 @@ public class WarMain extends JarMain {
|
|
212
221
|
@Override
|
213
222
|
protected int launchJRuby(final URL[] jars) throws Exception {
|
214
223
|
final Object scriptingContainer = newScriptingContainer(jars);
|
215
|
-
|
224
|
+
|
225
|
+
String jrubyStdlibJar = "";
|
226
|
+
for (URL url : jars) {
|
227
|
+
if (url.toString().matches("file:/.*jruby-stdlib-.*jar")) {
|
228
|
+
jrubyStdlibJar = url.toString();
|
229
|
+
debug("using jruby-stdlib: " + jrubyStdlibJar);
|
230
|
+
}
|
231
|
+
}
|
232
|
+
|
233
|
+
invokeMethod(scriptingContainer, "setHomeDirectory", "classpath:/META-INF/jruby.home");
|
216
234
|
invokeMethod(scriptingContainer, "setArgv", (Object) executableArgv);
|
217
|
-
//invokeMethod(scriptingContainer, "setHomeDirectory", "classpath:/META-INF/jruby.home");
|
218
235
|
invokeMethod(scriptingContainer, "setCurrentDirectory", extractRoot.getAbsolutePath());
|
219
|
-
|
220
|
-
|
221
|
-
|
236
|
+
invokeMethod(scriptingContainer, "runScriptlet", "$: << \"" + jrubyStdlibJar + "!/META-INF/jruby.home/lib/ruby/1.9/site_ruby\"");
|
237
|
+
invokeMethod(scriptingContainer, "runScriptlet", "$: << \"" + jrubyStdlibJar + "!/META-INF/jruby.home/lib/ruby/shared\"");
|
238
|
+
invokeMethod(scriptingContainer, "runScriptlet", "$: << \"" + jrubyStdlibJar + "!/META-INF/jruby.home/lib/ruby/1.9\"");
|
239
|
+
|
222
240
|
final Object provider = invokeMethod(scriptingContainer, "getProvider");
|
223
241
|
final Object rubyInstanceConfig = invokeMethod(provider, "getRubyInstanceConfig");
|
224
242
|
|
@@ -263,7 +281,9 @@ public class WarMain extends JarMain {
|
|
263
281
|
final String gemfile = new File(extractRoot, "Gemfile").getAbsolutePath();
|
264
282
|
debug("setting GEM_HOME to " + gemsDir);
|
265
283
|
debug("... and BUNDLE_GEMFILE to " + gemfile);
|
266
|
-
|
284
|
+
|
285
|
+
// ideally this would look up the config.override_gem_home setting
|
286
|
+
return "ENV['GEM_HOME'] = ENV['GEM_PATH'] = '"+ gemsDir +"' \n" +
|
267
287
|
"ENV['BUNDLE_GEMFILE'] ||= '"+ gemfile +"' \n" +
|
268
288
|
"require 'META-INF/init.rb' \n";
|
269
289
|
}
|
@@ -1 +1 @@
|
|
1
|
-
ENV['RAILS_ENV']
|
1
|
+
ENV['RAILS_ENV'] ||= '<%= config.webxml.rails.env %>'
|
data/lib/warbler/version.rb
CHANGED
data/lib/warbler_jar.jar
CHANGED
Binary file
|
data/warble.rb
CHANGED
@@ -11,7 +11,7 @@ Warbler::Config.new do |config|
|
|
11
11
|
# config.features = %w(gemjar)
|
12
12
|
|
13
13
|
# Application directories to be included in the webapp.
|
14
|
-
config.dirs = %w(app config db lib log vendor tmp)
|
14
|
+
# config.dirs = %w(app config db lib log script vendor tmp)
|
15
15
|
|
16
16
|
# Additional files/directories to include, above those in config.dirs
|
17
17
|
# config.includes = FileList["db"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warbler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|