warbler 2.0.0.rc2 → 2.0.0.rc3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93f1dd2729d5f7ed39af116cf2bb27e273461020
4
- data.tar.gz: c2dbf07c10202eea5fbf7b04ebf7f2b8c5e0b469
3
+ metadata.gz: 11eb3cb9e82388ec1b70b5ea6a5706449ea71b43
4
+ data.tar.gz: 3812f3bf1751fad830d4b918fad26505816700a5
5
5
  SHA512:
6
- metadata.gz: 8b71e381800c2ed1f2d69a49584fc6fe768ff628a4bd4dbcb4577742f88966496694c8f5cce455ef5bca9c41568caaae45a3649d60c177476cca0d85864b632c
7
- data.tar.gz: 4b1830b358b5cbe8028a470338ae6732ea19c1f53f9fe3d433fd43b81046cb44d2705cd03bd5b0e2e3b1150e9f70bb71f8c6c78780a4da369ce6f369ef6a1ce6
6
+ metadata.gz: 0b60b3bba36944c31cee619754322afa44eebfc708fee0016d1ca0170eee28972b69ad570bdb6c4540ece320a9a814c0ee7852419171538cbdbc3f05c2bb5776
7
+ data.tar.gz: 5057d8bbf554d78bfb9ce2bd13ee7e50903a7cacd3caf9e2475c8a81933ff65801853a6bf9d2ec093ae29a04a9822b9c6dad63d4d42d558656c6a08ef309b543
@@ -1,5 +1,5 @@
1
1
  rvm:
2
- - jruby-9.0.4.0
2
+ - jruby-9.0.5.0
3
3
  branches:
4
4
  only:
5
5
  - master
@@ -23,4 +23,4 @@ notifications:
23
23
  before_install:
24
24
  - sudo apt-get update && sudo apt-get install git
25
25
  - git fetch --unshallow
26
- - gem install bundler --pre
26
+ - gem install bundler
data/Gemfile CHANGED
@@ -7,3 +7,5 @@ group :development do
7
7
  gem "rcov", ">= 0.9.8", :platform => :mri_18
8
8
  gem "childprocess", :platform => :mri
9
9
  end
10
+
11
+ gem 'rubyzip', ENV['RUBYZIP_VERSION'] if ENV['RUBYZIP_VERSION']
data/Rakefile CHANGED
@@ -18,6 +18,12 @@ end
18
18
  require 'rake/clean'
19
19
  CLEAN << "pkg" << "doc" << Dir['integration/**/target']
20
20
 
21
+ unless Rake::Application.method_defined? :last_comment
22
+ Rake::Application.module_eval do
23
+ alias_method :last_comment, :last_description
24
+ end
25
+ end # Rake 11 compatibility (due rspec/core/rake_task < 3.0)
26
+
21
27
  require 'rspec/core/rake_task'
22
28
  RSpec::Core::RakeTask.new(:spec) do |t|
23
29
  t.rspec_opts = ['--color', "--format documentation"]
@@ -26,7 +26,7 @@ import java.util.jar.JarFile;
26
26
 
27
27
  public class JarMain implements Runnable {
28
28
 
29
- static final String MAIN = "/" + JarMain.class.getName().replace('.', '/') + ".class";
29
+ static final String MAIN = '/' + JarMain.class.getName().replace('.', '/') + ".class";
30
30
 
31
31
  protected final String[] args;
32
32
  protected final String archive;
@@ -78,7 +78,7 @@ public class JarMain implements Runnable {
78
78
  protected String getExtractEntryPath(final JarEntry entry) {
79
79
  final String name = entry.getName();
80
80
  if ( name.startsWith("META-INF/lib") && name.endsWith(".jar") ) {
81
- return name.substring(name.lastIndexOf("/") + 1);
81
+ return name.substring(name.lastIndexOf('/') + 1);
82
82
  }
83
83
  return null; // do not extract entry
84
84
  }
@@ -6,7 +6,6 @@
6
6
  */
7
7
 
8
8
  import java.lang.reflect.Method;
9
- import java.lang.reflect.Constructor;
10
9
  import java.io.InputStream;
11
10
  import java.io.ByteArrayInputStream;
12
11
  import java.io.SequenceInputStream;
@@ -21,7 +20,6 @@ import java.util.List;
21
20
  import java.util.Properties;
22
21
  import java.util.Map;
23
22
  import java.util.jar.JarEntry;
24
- import java.util.Set;
25
23
 
26
24
  /**
27
25
  * Used as a Main-Class in the manifest for a .war file, so that you can run
@@ -65,7 +63,7 @@ import java.util.Set;
65
63
  */
66
64
  public class WarMain extends JarMain {
67
65
 
68
- static final String MAIN = "/" + WarMain.class.getName().replace('.', '/') + ".class";
66
+ static final String MAIN = '/' + WarMain.class.getName().replace('.', '/') + ".class";
69
67
  static final String WEBSERVER_PROPERTIES = "/WEB-INF/webserver.properties";
70
68
  static final String WEBSERVER_JAR = "/WEB-INF/webserver.jar";
71
69
  static final String WEBSERVER_CONFIG = "/WEB-INF/webserver.xml";
@@ -219,7 +217,7 @@ public class WarMain extends JarMain {
219
217
  // 404.html -> public/404.html
220
218
  return "/public/" + name;
221
219
  }
222
- return "/" + name;
220
+ return '/' + name;
223
221
  }
224
222
 
225
223
  @Override
@@ -74,13 +74,13 @@ public class WarblerJar {
74
74
  entry.convertToString().getUnicodeValue());
75
75
  try {
76
76
  byte[] buf = new byte[16384];
77
- ByteList blist = new ByteList();
78
- int bytesRead = -1;
77
+ ByteList bytes = new ByteList();
78
+ int bytesRead;
79
79
  while ((bytesRead = entryStream.read(buf)) != -1) {
80
- blist.append(buf, 0, bytesRead);
80
+ bytes.append(buf, 0, bytesRead);
81
81
  }
82
82
  IRubyObject stringio = runtime.getModule("StringIO");
83
- return stringio.callMethod(context, "new", runtime.newString(blist));
83
+ return stringio.callMethod(context, "new", runtime.newString(bytes));
84
84
  } finally {
85
85
  close(entryStream);
86
86
  }
@@ -120,6 +120,10 @@ module Warbler
120
120
  # Ignored unless compile feature is used.
121
121
  attr_accessor :compile_gems
122
122
 
123
+ # Desired options passed to JRuby compiler if compiling to class files.
124
+ # Ignored unless compile feature is used.
125
+ attr_accessor :jrubyc_options
126
+
123
127
  # Warbler writes an "init" file into the war at this location. JRuby-Rack and possibly other
124
128
  # launchers may use this to initialize the Ruby environment.
125
129
  attr_accessor :init_filename
@@ -240,17 +244,8 @@ module Warbler
240
244
  end
241
245
  end
242
246
 
243
- # Deprecated
244
- def war_name
245
- $stderr.puts "config.war_name deprecated; replace with config.jar_name" #:nocov:
246
- jar_name #:nocov:
247
- end
248
-
249
- # Deprecated
250
- def war_name=(w)
251
- $stderr.puts "config.war_name deprecated; replace with config.jar_name" #:nocov:
252
- self.jar_name = w #:nocov:
253
- end
247
+ alias_method :war_name, :jar_name
248
+ alias_method :war_name=, :jar_name=
254
249
 
255
250
  private
256
251
  def warbler_vendor_excludes(warbler_home)
@@ -43,34 +43,49 @@ module Warbler
43
43
 
44
44
  if config.compile_gems
45
45
  ruby_files = gather_all_rb_files(config)
46
- run_javac(config, ruby_files.values)
46
+ run_jrubyc(config, ruby_files.values)
47
47
  replace_compiled_ruby_files_and_gems(config, ruby_files)
48
48
  else
49
49
  compiled_ruby_files = config.compiled_ruby_files - config.excludes.to_a
50
- run_javac(config, compiled_ruby_files)
50
+ run_jrubyc(config, compiled_ruby_files)
51
51
  replace_compiled_ruby_files(config, compiled_ruby_files)
52
52
  end
53
53
  end
54
54
 
55
- def run_javac(config, compiled_ruby_files)
56
- if config.webxml && config.webxml.context_params.has_key?('jruby.compat.version')
57
- compat_version = "--#{config.webxml.jruby.compat.version}"
58
- else
59
- compat_version = ''
60
- end
55
+ DEFAULT_COMPILED_FILES_SLICE = 2500
61
56
 
62
- compiled_ruby_files.each_slice(2500) do |slice|
57
+ def run_jrubyc(config, compiled_ruby_files)
58
+ slice_size = (ENV['WARBLER_COMPILED_FILES_SLICE'] || 0).to_i
59
+ slice_size = DEFAULT_COMPILED_FILES_SLICE if slice_size <= 0
60
+ compiled_ruby_files.each_slice(slice_size) do |files|
61
+ files = "\"#{files.join('" "')}\""
62
+ classpath = config.java_libs.map { |lib| "\"#{lib.gsub('"', '\\"')}\"" }.join(File::PATH_SEPARATOR)
63
63
  # Need to use the version of JRuby in the application to compile it
64
- javac_cmd = %Q{java -classpath #{config.java_libs.join(File::PATH_SEPARATOR)} #{java_version(config)} org.jruby.Main #{compat_version} -S jrubyc \"#{slice.join('" "')}\"}
64
+ javac_cmd = %Q{java -classpath #{classpath} #{java_version(config)} org.jruby.Main -S jrubyc #{jrubyc_options(config)} #{files}}
65
65
  if which('java').nil? && which('env')
66
- system %Q{env -i #{javac_cmd}}
66
+ sh_jrubyc %Q{env -i #{javac_cmd}}
67
67
  else
68
- system javac_cmd
68
+ sh_jrubyc javac_cmd
69
69
  end
70
- raise "Compile failed" if $?.exitstatus > 0
71
70
  end
72
71
  @compiled = true
73
72
  end
73
+ # @deprecated only due compatibility
74
+ alias_method :run_javac, :run_jrubyc
75
+
76
+ def sh_jrubyc(cmd)
77
+ sh(cmd) do |ok, res|
78
+ raise "Compilation of .rb files failed (#{res})" unless ok
79
+ end
80
+ end
81
+ private :sh_jrubyc
82
+
83
+ def jrubyc_options(config)
84
+ options = ENV['WARBLER_JRUBYC_OPTIONS'] || config.jrubyc_options
85
+ options = options.join(' ') if options.is_a?(Array)
86
+ options || ''
87
+ end
88
+ private :jrubyc_options
74
89
 
75
90
  def java_version(config)
76
91
  config.bytecode_version ? "-Djava.specification.version=#{config.bytecode_version}" : ''
@@ -158,10 +173,10 @@ module Warbler
158
173
  end
159
174
  rm_f path
160
175
  ensure_directory_entries
161
- puts "Creating #{path}"
162
176
  if Warbler::Config === config_or_path
163
177
  @files.delete("#{config_or_path.jar_name}/#{path}")
164
178
  end
179
+ puts "Creating #{path}" unless silent?
165
180
  create_jar path, @files
166
181
  end
167
182
 
@@ -203,7 +218,7 @@ module Warbler
203
218
  full_gem_path = Pathname.new(spec.full_gem_path)
204
219
 
205
220
  # skip gems whose full_gem_path does not exist
206
- ($stderr.puts "warning: skipping #{spec.name} (#{full_gem_path.to_s} does not exist)" ; return) unless full_gem_path.exist?
221
+ (warn "skipping #{spec.name} (#{full_gem_path.to_s} does not exist)" ; return) unless full_gem_path.exist?
207
222
 
208
223
  @files[apply_pathmaps(config, "#{spec.full_name}.gemspec", :gemspecs)] = StringIO.new(spec.to_ruby)
209
224
  FileList["#{full_gem_path.to_s}/**/*"].each do |src|
@@ -217,7 +232,7 @@ module Warbler
217
232
  def find_application_files(config)
218
233
  config.dirs.select do |d|
219
234
  exists = File.directory?(d)
220
- $stderr.puts "warning: application directory `#{d}' does not exist or is not a directory; skipping" unless exists
235
+ warn "application directory `#{d}' does not exist or is not a directory; skipping" unless exists
221
236
  exists
222
237
  end.each do |d|
223
238
  @files[apply_pathmaps(config, d, :application)] = nil
@@ -284,8 +299,8 @@ module Warbler
284
299
  zipfile.get_output_stream(entry) {|f| f << src.read }
285
300
  elsif src.nil? || File.directory?(src)
286
301
  if File.symlink?(entry) && ! defined?(JRUBY_VERSION)
287
- $stderr.puts "directory symlinks are not followed unless using JRuby; " +
288
- "#{entry.inspect} contents not in archive"
302
+ warn "directory symlinks are not followed unless using JRuby; " +
303
+ "#{entry.inspect} contents not in archive"
289
304
  end
290
305
  zipfile.mkdir(entry.dup) # in case it's frozen rubyzip 0.9.6.1 workaround
291
306
  elsif File.symlink?(src)
@@ -293,7 +308,7 @@ module Warbler
293
308
  elsif File.exist?(src)
294
309
  zipfile.add(entry, src)
295
310
  else
296
- $stderr.puts "File not found; #{entry.inspect} not in archive"
311
+ warn "file not found; #{entry.inspect} not in archive"
297
312
  end
298
313
  end
299
314
  end
@@ -314,7 +329,7 @@ module Warbler
314
329
  class War < Jar
315
330
  def initialize(*)
316
331
  super
317
- $stderr.puts "Warbler::War is deprecated. Please replace all occurrences with Warbler::Jar."
332
+ warn "Warbler::War is deprecated. Please replace all occurrences with Warbler::Jar."
318
333
  end
319
334
  end
320
335
  end
@@ -6,24 +6,25 @@
6
6
  #++
7
7
 
8
8
  module Warbler
9
- # This module exists for compatibility with Rake 0.9.
10
9
  module RakeHelper
10
+
11
11
  def self.included(base)
12
12
  base.class_eval do
13
13
  include Rake::DSL if defined?(Rake::DSL)
14
- if defined?(Rake::FileUtilsExt)
15
- include FileUtils
16
- include Rake::FileUtilsExt
17
- end
14
+ include Rake::FileUtilsExt # includes FileUtils
18
15
  end
19
16
  end
20
17
 
21
18
  def self.extended(base)
22
19
  base.extend Rake::DSL if defined?(Rake::DSL)
23
- if defined?(Rake::FileUtilsExt)
24
- base.extend FileUtils
25
- base.extend Rake::FileUtilsExt
26
- end
20
+ base.extend Rake::FileUtilsExt
21
+ end
22
+
23
+ private
24
+
25
+ def silent?
26
+ Rake.application.options.silent rescue nil
27
27
  end
28
+
28
29
  end
29
30
  end
@@ -47,7 +47,7 @@ module Warbler
47
47
  end
48
48
  @config ||= Config.new
49
49
  unless @config.kind_of? Config
50
- $stderr.puts "Warbler::Config not provided by override in initializer or #{Config::FILE}; using defaults"
50
+ warn "Warbler::Config not provided by override in initializer or #{Config::FILE}; using defaults"
51
51
  @config = Config.new
52
52
  end
53
53
  @name = name || @config.jar_extension
@@ -82,7 +82,7 @@ module Warbler
82
82
  @config.features.each do |feature|
83
83
  t = "#@name:#{feature}"
84
84
  unless Rake.application.lookup(t)
85
- $stderr.puts "unknown feature `#{feature}', ignoring"
85
+ warn "unknown feature `#{feature}', ignoring"
86
86
  next
87
87
  end
88
88
  Rake::Task[t].invoke
@@ -47,7 +47,7 @@ module Warbler
47
47
  full_gem_path = full_gem_path.dirname
48
48
  # if at top of the path, meaning we cannot find bundler.gemspec, abort.
49
49
  if full_gem_path.to_s =~ /^[\.\/]$/
50
- $stderr.puts("warning: Unable to detect bundler spec under '#{spec.full_gem_path}'' and is sub-dirs")
50
+ warn("Unable to detect bundler spec under '#{spec.full_gem_path}'' and its sub-dirs")
51
51
  exit
52
52
  end
53
53
  end
@@ -64,9 +64,9 @@ module Warbler
64
64
  config.bundler[:git_specs] << spec
65
65
  when ::Bundler::Source::Path
66
66
  unless bundler_source_is_warbled_gem_itself?(spec.source)
67
- $stderr.puts("warning: Bundler `path' components are not currently supported.",
68
- "The `#{spec.full_name}' component was not bundled.",
69
- "Your application may fail to boot!")
67
+ warn("Bundler `path' components are not currently supported.\n" +
68
+ "The `#{spec.full_name}' component was not bundled.\n" +
69
+ "Your application may fail to boot!")
70
70
  end
71
71
  else
72
72
  config.gems << spec
@@ -45,9 +45,12 @@ module Warbler
45
45
  def after_configure
46
46
  config.init_contents << "#{config.warbler_templates}/rails.erb"
47
47
 
48
- if threadsafe_enabled? or rails_4?
49
- config.webxml.jruby.min.runtimes = 1 unless Integer === config.webxml.jruby.min.runtimes
50
- config.webxml.jruby.max.runtimes = 1 unless Integer === config.webxml.jruby.max.runtimes
48
+ if config.webxml.jruby.min.runtimes.is_a?(OpenStruct) &&
49
+ config.webxml.jruby.max.runtimes.is_a?(OpenStruct) # not set
50
+ if rails_major_version(0) >= 4 || threadsafe_enabled?
51
+ config.webxml.jruby.min.runtimes = 1
52
+ config.webxml.jruby.max.runtimes = 1
53
+ end
51
54
  end
52
55
 
53
56
  config.includes += FileList["public/assets/.sprockets-manifest-*.json"].existing
@@ -70,14 +73,17 @@ module Warbler
70
73
  end
71
74
  end
72
75
 
73
- def rails_4?
76
+ def rails_major_version(default = 0)
74
77
  begin
75
- unless IO.readlines("Gemfile").grep(/^\s*gem\s('|")rails('|"),\s('|")4\.\d+\.\d+/).empty? &&
76
- IO.readlines("Gemfile.lock").grep(/^\s*rails\s\([=~><]*\s*4\.(\d+)\.(\d+).*\)$/).empty?
77
- return true
78
+ File.open("#{ENV['BUNDLE_GEMFILE'] || 'Gemfile'}.lock") do |file|
79
+ file.each_line do |line|
80
+ match = line.match /^\s*rails\s\(\s*(\d)\.\d+\.\d+.*\)$/
81
+ return match[1].to_i if match
82
+ end
78
83
  end
79
84
  rescue
80
85
  end
86
+ default
81
87
  end
82
88
  end
83
89
  end
@@ -68,8 +68,8 @@ module Warbler
68
68
  end
69
69
 
70
70
  def default_jar_files
71
- require 'jruby-jars'
72
- require 'jruby-rack'
71
+ require 'jruby-jars' unless defined? JRubyJars.core_jar_path
72
+ require 'jruby-rack' unless defined? JRubyJars.jruby_rack_jar_path
73
73
  FileList[JRubyJars.core_jar_path, JRubyJars.stdlib_jar_path, JRubyJars.jruby_rack_jar_path]
74
74
  end
75
75
 
@@ -134,7 +134,8 @@ module Warbler
134
134
  def move_jars_to_webinf_lib(jar, selector = nil)
135
135
  return unless selector # default is false
136
136
  selector = /.*/ if selector == true # move all if not a RegExp given
137
- default_jars = default_jar_files.map { |file| File.basename(file) }
137
+ default_jar_paths = default_jar_files
138
+ default_jars = default_jar_paths.map { |file| File.basename(file) }
138
139
  jar.files.keys.select { |k| k =~ /^WEB-INF\/.*\.jar$/ }.each do |k|
139
140
  if k.start_with?('WEB-INF/lib/') # .jar already in WEB-INF/lib
140
141
  if default_jars.include? k.sub('WEB-INF/lib/', '')
@@ -144,6 +145,8 @@ module Warbler
144
145
  next
145
146
  end
146
147
  next unless selector =~ File.basename(k)
148
+ # default jars might end up mapped twice as they're part of gems
149
+ next if default_jar_paths.include?(jar.files[k])
147
150
  name = k.sub('WEB-INF', '')[1..-1].gsub(/[\/\\]/, '-')
148
151
  jar.files["WEB-INF/lib/#{name}"] = jar.files[k]
149
152
  jar.files[k] = empty_jar
@@ -176,15 +179,6 @@ module Warbler
176
179
  @table = Hash.new { |h, k| h[k] = WebxmlOpenStruct.new(k) }
177
180
  end
178
181
 
179
- def servlet_context_listener
180
- case self.booter
181
- when :rack
182
- "org.jruby.rack.RackServletContextListener"
183
- else # :rails, default
184
- "org.jruby.rack.rails.RailsServletContextListener"
185
- end
186
- end
187
-
188
182
  def [](key)
189
183
  new_ostruct_member(key)
190
184
  send(key)
@@ -195,6 +189,35 @@ module Warbler
195
189
  send("#{key}=", value)
196
190
  end
197
191
 
192
+ def method_missing(mid, *args)
193
+ len = args.length
194
+ if mname = mid[/.*(?==\z)/m]
195
+ if len != 1
196
+ raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
197
+ end
198
+ modifiable[new_ostruct_member(mname)] = args[0]
199
+ elsif len == 0
200
+ @table[mid]
201
+ else
202
+ err = NoMethodError.new "undefined method `#{mid}' for #{self}", mid, args
203
+ err.set_backtrace caller(1)
204
+ raise err
205
+ end
206
+ end
207
+
208
+ def respond_to_missing?(mid, include_private = false)
209
+ @table.key?(mid.to_s.chomp('=').to_sym) || super
210
+ end
211
+
212
+ def servlet_context_listener
213
+ case self.booter
214
+ when :rack
215
+ "org.jruby.rack.RackServletContextListener"
216
+ else # :rails, default
217
+ "org.jruby.rack.rails.RailsServletContextListener"
218
+ end
219
+ end
220
+
198
221
  def context_params(escape = true)
199
222
  require 'cgi'
200
223
  params = {}
@@ -210,7 +233,7 @@ module Warbler
210
233
  end
211
234
  end
212
235
  extra_ignored = Array === ignored ? ignored : []
213
- params.delete_if {|k,v| ['ignored', *extra_ignored].include?(k.to_s) }
236
+ params.delete_if { |k,_| ['ignored', *extra_ignored].include?(k.to_s) }
214
237
  params
215
238
  end
216
239
 
@@ -6,5 +6,5 @@
6
6
  #++
7
7
 
8
8
  module Warbler
9
- VERSION = "2.0.0.rc2"
9
+ VERSION = "2.0.0.rc3"
10
10
  end
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 4.2'
4
+ gem 'rails-api', '0.4.0'
5
+
6
+ gem 'activerecord-jdbcpostgresql-adapter', '1.3.19'
@@ -73,12 +73,14 @@ module ExampleGroupHelpers
73
73
  end
74
74
  end
75
75
 
76
- def cleanup_temp_files(*except_files)
76
+ def cleanup_temp_files(options = { :include => nil })
77
+ except_files = Array(options[:except])
78
+ include_files = Array(options[:include])
77
79
  after(:each) do
78
80
  FileUtils.rm_rf FileList[*(["log", ".bundle", "tmp"] - except_files)]
79
81
  FileUtils.rm_f FileList[*(["*.war", "*.foobar", "**/config.ru", "*web.xml*", "config/web.xml*",
80
82
  "config/warble.rb", "file.txt", 'manifest', '*Gemfile*', 'MANIFEST.MF*', 'init.rb*',
81
- '**/*.class'] - except_files)]
83
+ '**/*.class'] + include_files - except_files)]
82
84
  end
83
85
  end
84
86
 
@@ -218,7 +218,7 @@ describe Warbler::Jar, "with Bundler" do
218
218
 
219
219
  context "in a rack app" do
220
220
  run_in_directory "spec/sample_rack_war"
221
- cleanup_temp_files '**/config.ru'
221
+ cleanup_temp_files except: '**/config.ru'
222
222
 
223
223
  it "should have default load path" do
224
224
  jar.add_init_file(config)
@@ -35,7 +35,7 @@ describe Warbler::Jar do
35
35
 
36
36
  context "in a jar project" do
37
37
  run_in_directory "spec/sample_jar"
38
- cleanup_temp_files
38
+ cleanup_temp_files include: '*.java'
39
39
 
40
40
  it "detects a Jar trait" do
41
41
  config.traits.should include(Warbler::Traits::Jar)
@@ -183,7 +183,7 @@ describe Warbler::Jar do
183
183
  jar.compile(config)
184
184
  jar.apply(config)
185
185
  file_list(%r{sample_jar.*\.rb$}).size.should == 2
186
- file_list(%r{gems.*\.class$}).size.should == 80
186
+ file_list(%r{gems.*\.class$}).size.should >= 80 # depending on RubyZip version
187
187
  end
188
188
 
189
189
  it "does not compile included gems by default" do
@@ -194,6 +194,14 @@ describe Warbler::Jar do
194
194
  file_list(%r{gems.*\.class$}).size.should == 0
195
195
  end
196
196
 
197
+ it "compiles with jrubyc options when specified" do
198
+ config.jrubyc_options = [ '--java' ]
199
+ config.compiled_ruby_files = %w(lib/sample_jar.rb)
200
+ jar.compile(config)
201
+ jar.apply(config)
202
+ expect( FileList['*'] ).to include 'SampleJar.java'
203
+ end
204
+
197
205
  end
198
206
 
199
207
  context "with a gemspec without a default executable" do
@@ -808,23 +816,23 @@ describe Warbler::Jar do
808
816
  rm_rf File.dirname(manifest_file)
809
817
  end
810
818
 
811
- context "When rails version is specified in Gemfile" do
819
+ context "when rails version is found in Gemfile.lock" do
812
820
  before :each do
813
- File.open("Gemfile", "a") { |f| f.puts "gem 'rails', '4.0.0'" }
814
- end
815
-
816
- after :each do
817
- rm "Gemfile"
821
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../rails4_stub/Gemfile', File.dirname(__FILE__))
818
822
  end
819
823
 
820
824
  it_should_behave_like "threaded environment"
821
825
  it_should_behave_like "asset pipeline"
822
826
  end
823
827
 
824
- context "when rails version is not specified in Gemfile" do
828
+ context "when rails version is not found in Gemfile.lock" do
825
829
  before :each do
826
- File.open("Gemfile", "a") { |f| f.puts "gem 'rails'" }
827
- File.open("Gemfile.lock", "a") { |f| f.puts " rails (4.0.0)" }
830
+ File.open("Gemfile", 'w') { |f| f.puts "gem 'rails-name'\n\n" }
831
+ File.open("Gemfile.lock", 'w') do |f|
832
+ f.puts " rails-name (4.0.0)"
833
+ f.puts " apry-rails (4.2.0)"
834
+ f.puts ""
835
+ end
828
836
  end
829
837
 
830
838
  after :each do
@@ -832,7 +840,11 @@ describe Warbler::Jar do
832
840
  rm "Gemfile.lock"
833
841
  end
834
842
 
835
- it_should_behave_like "threaded environment"
843
+ it "doesn't set runtime numbers to 1" do
844
+ config.webxml.jruby.min.runtimes.should_not == 1
845
+ config.webxml.jruby.max.runtimes.should_not == 1
846
+ end
847
+
836
848
  it_should_behave_like "asset pipeline"
837
849
  end
838
850
  end
data/warble.rb CHANGED
@@ -57,12 +57,12 @@ Warbler::Config.new do |config|
57
57
 
58
58
  # The most recent versions of gems are used.
59
59
  # You can specify versions of gems by using a hash assignment:
60
- # config.gems["rails"] = "2.3.10"
60
+ # config.gems["rails"] = "4.2.5"
61
61
 
62
62
  # You can also use regexps or Gem::Dependency objects for flexibility or
63
63
  # finer-grained control.
64
64
  # config.gems << /^sinatra-/
65
- # config.gems << Gem::Dependency.new("sinatra", "= 1.4.5")
65
+ # config.gems << Gem::Dependency.new("sinatra", "= 1.4.7")
66
66
 
67
67
  # Include gem dependencies not mentioned specifically. Default is
68
68
  # true, uncomment to turn off.
@@ -152,9 +152,6 @@ Warbler::Config.new do |config|
152
152
  # Application booter to use, either :rack or :rails (autodetected by default)
153
153
  # config.webxml.booter = :rails
154
154
 
155
- # Set JRuby to run in 1.9 mode.
156
- # config.webxml.jruby.compat.version = "1.9"
157
-
158
155
  # When using the :rack booter, "Rackup" script to use.
159
156
  # - For 'rackup.path', the value points to the location of the rackup
160
157
  # script in the web archive file. You need to make sure this file
@@ -24,8 +24,8 @@ bundle up all of your application files for deployment to a Java environment.}
24
24
 
25
25
  gem.add_runtime_dependency 'rake', [">= 10.1.0"]
26
26
  gem.add_runtime_dependency 'jruby-jars', [">= 9.0.0.0"]
27
- gem.add_runtime_dependency 'jruby-rack', [">= 1.1.1", '< 1.3']
28
- gem.add_runtime_dependency 'rubyzip', [">= 1.0", "< 1.2"]
27
+ gem.add_runtime_dependency 'jruby-rack', [">= 1.1.1", "< 1.3"]
28
+ gem.add_runtime_dependency 'rubyzip', ["~> 1.0", "< 1.4"]
29
29
  gem.add_development_dependency 'jbundler', "~> 0.9"
30
30
  gem.add_development_dependency 'rspec', "~> 2.10"
31
31
  gem.add_development_dependency 'rdoc', ">= 2.4.2"
@@ -1,8 +1,9 @@
1
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
2
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
4
- version="3.1">
5
- <!-- <display-name>Uncomment and put name :here: for Tomcat Dashboard</display-name> -->
1
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee"
2
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
4
+ version="3.0">
5
+ <!--
6
+ <display-name>Uncomment and put name :here: for Tomcat Dashboard</display-name>-->
6
7
 
7
8
  <% webxml.context_params.each do |k,v| %>
8
9
  <context-param>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warbler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc2
4
+ version: 2.0.0.rc3
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-12-08 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -61,23 +61,23 @@ dependencies:
61
61
  - !ruby/object:Gem::Dependency
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
64
+ - - "~>"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '1.0'
67
67
  - - "<"
68
68
  - !ruby/object:Gem::Version
69
- version: '1.2'
69
+ version: '1.4'
70
70
  name: rubyzip
71
71
  prerelease: false
72
72
  type: :runtime
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ">="
75
+ - - "~>"
76
76
  - !ruby/object:Gem::Version
77
77
  version: '1.0'
78
78
  - - "<"
79
79
  - !ruby/object:Gem::Version
80
- version: '1.2'
80
+ version: '1.4'
81
81
  - !ruby/object:Gem::Dependency
82
82
  requirement: !ruby/object:Gem::Requirement
83
83
  requirements:
@@ -262,6 +262,8 @@ files:
262
262
  - spec/drb_default_id_conv.rb
263
263
  - spec/drb_helper.rb
264
264
  - spec/m2_home/conf/settings.xml
265
+ - spec/rails4_stub/Gemfile
266
+ - spec/rails4_stub/Gemfile.lock
265
267
  - spec/sample_bundler/.bundle/config
266
268
  - spec/sample_bundler/Gemfile
267
269
  - spec/sample_bundler/Gemfile.lock
@@ -569,6 +571,8 @@ test_files:
569
571
  - spec/drb_default_id_conv.rb
570
572
  - spec/drb_helper.rb
571
573
  - spec/m2_home/conf/settings.xml
574
+ - spec/rails4_stub/Gemfile
575
+ - spec/rails4_stub/Gemfile.lock
572
576
  - spec/sample_bundler/.bundle/config
573
577
  - spec/sample_bundler/Gemfile
574
578
  - spec/sample_bundler/Gemfile.lock