From 453c522e01f1cde4c6a5762e932cc142059a08ef Mon Sep 17 00:00:00 2001 From: Daniele Gozzi Date: Fri, 11 Jul 2014 22:34:17 +0200 Subject: [PATCH 1/4] Github changed its base CDN address. --- lib/juicer/install/yui_compressor_installer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/juicer/install/yui_compressor_installer.rb b/lib/juicer/install/yui_compressor_installer.rb index b8190b7..5085ce3 100644 --- a/lib/juicer/install/yui_compressor_installer.rb +++ b/lib/juicer/install/yui_compressor_installer.rb @@ -16,7 +16,7 @@ def initialize(install_dir = Juicer.home) @latest = nil @href = nil @website = 'https://github.com/yui/yuicompressor/downloads' - @cdn = 'http://cloud.github.com' + @cdn = 'https://cloud.github.com' end # From 3a705050687421a88135bd7ba8e428655298793a Mon Sep 17 00:00:00 2001 From: Daniele Gozzi Date: Fri, 11 Jul 2014 22:37:06 +0200 Subject: [PATCH 2/4] Honor $JAVA_OPTS when calling java. --- lib/juicer/minifyer/closure_compiler.rb | 2 +- lib/juicer/minifyer/yui_compressor.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/juicer/minifyer/closure_compiler.rb b/lib/juicer/minifyer/closure_compiler.rb index 768b2ae..f802b9b 100644 --- a/lib/juicer/minifyer/closure_compiler.rb +++ b/lib/juicer/minifyer/closure_compiler.rb @@ -62,7 +62,7 @@ def save(file, output = nil, type = nil) out_dir = File.dirname(output) FileUtils.mkdir_p(out_dir) unless File.exists?(out_dir) - execute(%Q{-jar "#{locate_jar}"#{jar_args} --js_output_file "#{output}" --js "#{file}"}) + execute(%Q{#{ENV['JAVA_OPTS']} -jar "#{locate_jar}"#{jar_args} --js_output_file "#{output}" --js "#{file}"}) File.delete(file) if use_tmp end diff --git a/lib/juicer/minifyer/yui_compressor.rb b/lib/juicer/minifyer/yui_compressor.rb index d6eb785..67bd570 100644 --- a/lib/juicer/minifyer/yui_compressor.rb +++ b/lib/juicer/minifyer/yui_compressor.rb @@ -57,7 +57,7 @@ def save(file, output = nil, type = nil) output = File.join(Dir::tmpdir, File.basename(file) + '.min.tmp.' + type.to_s) if use_tmp FileUtils.mkdir_p(File.dirname(output)) - result = execute(%Q{-jar "#{locate_jar}"#{jar_args} -o "#{output}" "#{file}"}) + result = execute(%Q{#{ENV['JAVA_OPTS']} -jar "#{locate_jar}"#{jar_args} -o "#{output}" "#{file}"}) if use_tmp # If no output file is provided, YUI compressor will output.puts IO.read(output) # compress to a temp file. This file should be cleared From b63aa538bf81cffd8e6314e3503e6067d79ecf5c Mon Sep 17 00:00:00 2001 From: Daniele Gozzi Date: Fri, 11 Jul 2014 22:37:06 +0200 Subject: [PATCH 3/4] Honor $JAVA_OPTS when calling java. --- lib/juicer/minifyer/closure_compiler.rb | 2 +- lib/juicer/minifyer/yui_compressor.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/juicer/minifyer/closure_compiler.rb b/lib/juicer/minifyer/closure_compiler.rb index 768b2ae..f802b9b 100644 --- a/lib/juicer/minifyer/closure_compiler.rb +++ b/lib/juicer/minifyer/closure_compiler.rb @@ -62,7 +62,7 @@ def save(file, output = nil, type = nil) out_dir = File.dirname(output) FileUtils.mkdir_p(out_dir) unless File.exists?(out_dir) - execute(%Q{-jar "#{locate_jar}"#{jar_args} --js_output_file "#{output}" --js "#{file}"}) + execute(%Q{#{ENV['JAVA_OPTS']} -jar "#{locate_jar}"#{jar_args} --js_output_file "#{output}" --js "#{file}"}) File.delete(file) if use_tmp end diff --git a/lib/juicer/minifyer/yui_compressor.rb b/lib/juicer/minifyer/yui_compressor.rb index d6eb785..67bd570 100644 --- a/lib/juicer/minifyer/yui_compressor.rb +++ b/lib/juicer/minifyer/yui_compressor.rb @@ -57,7 +57,7 @@ def save(file, output = nil, type = nil) output = File.join(Dir::tmpdir, File.basename(file) + '.min.tmp.' + type.to_s) if use_tmp FileUtils.mkdir_p(File.dirname(output)) - result = execute(%Q{-jar "#{locate_jar}"#{jar_args} -o "#{output}" "#{file}"}) + result = execute(%Q{#{ENV['JAVA_OPTS']} -jar "#{locate_jar}"#{jar_args} -o "#{output}" "#{file}"}) if use_tmp # If no output file is provided, YUI compressor will output.puts IO.read(output) # compress to a temp file. This file should be cleared From 8239149920a7d04d986e4f36a3b792eb97cc219b Mon Sep 17 00:00:00 2001 From: Daniele Gozzi Date: Tue, 12 Aug 2014 00:23:47 +0200 Subject: [PATCH 4/4] Avoid to spawn a shell with IO.popen(). --- lib/juicer/binary.rb | 6 +++--- lib/juicer/jslint.rb | 14 +++++++++++++- lib/juicer/minifyer/closure_compiler.rb | 2 +- lib/juicer/minifyer/java_base.rb | 12 ++++++++++++ lib/juicer/minifyer/yui_compressor.rb | 2 +- test/unit/juicer/css_cache_buster_test.rb | 2 +- test/unit/juicer/jslint_test.rb | 2 +- .../juicer/minifyer/closure_compressor_test.rb | 8 ++++---- test/unit/juicer/minifyer/yui_compressor_test.rb | 12 ++++++------ 9 files changed, 42 insertions(+), 18 deletions(-) diff --git a/lib/juicer/binary.rb b/lib/juicer/binary.rb index 617f1a2..917eac4 100644 --- a/lib/juicer/binary.rb +++ b/lib/juicer/binary.rb @@ -29,8 +29,8 @@ def path # Run command # - def execute(params = nil) - cmd = IO.popen("#{self.command} #{params}", "r") + def execute(*params) + cmd = IO.popen(([self.command] + params).flatten, "r") results = cmd.gets(nil) cmd.close results @@ -107,7 +107,7 @@ def set_opts(options) def command return @command if !@opt_set && @command @opt_set = false - @command = "#{@binary} #{options}" + @command = [@binary, options] end # Locate the binary to execute. The binary is searched for in the diff --git a/lib/juicer/jslint.rb b/lib/juicer/jslint.rb index 9d13d9f..38df76c 100644 --- a/lib/juicer/jslint.rb +++ b/lib/juicer/jslint.rb @@ -18,6 +18,18 @@ def initialize(options = {}) path << options[:bin_path] if options[:bin_path] end + # Constructs the command to use + # + def command + java_opts = [] + if ENV['JAVA_OPTS'].nil? + java_opts = [] + else + java_opts = ENV['JAVA_OPTS'].split(" ") + end + @command = ([@binary] + java_opts).flatten + end + # # Checks if a files has problems. Also includes experimental support for CSS # files. CSS files should begin with the line @charset "UTF-8"; @@ -32,7 +44,7 @@ def check(file) raise FileNotFoundError.new("Unable to locate JsLint '#{js_file}'") if !js_file || !File.exists?(js_file) raise FileNotFoundError.new("Unable to locate input file '#{file}'") unless File.exists?(file) - lines = execute(%Q{-jar "#{rhino}" "#{locate_lib}" "#{file}"}).split("\n") + lines = execute("-jar", rhino, locate_lib, file).split("\n") return Report.new if lines.length == 1 && lines[0] =~ /jslint: No problems/ report = Report.new diff --git a/lib/juicer/minifyer/closure_compiler.rb b/lib/juicer/minifyer/closure_compiler.rb index f802b9b..9360489 100644 --- a/lib/juicer/minifyer/closure_compiler.rb +++ b/lib/juicer/minifyer/closure_compiler.rb @@ -62,7 +62,7 @@ def save(file, output = nil, type = nil) out_dir = File.dirname(output) FileUtils.mkdir_p(out_dir) unless File.exists?(out_dir) - execute(%Q{#{ENV['JAVA_OPTS']} -jar "#{locate_jar}"#{jar_args} --js_output_file "#{output}" --js "#{file}"}) + execute("-jar", "#{locate_jar}#{jar_args}", "--js_output_file", output, "--js", file) File.delete(file) if use_tmp end diff --git a/lib/juicer/minifyer/java_base.rb b/lib/juicer/minifyer/java_base.rb index c4cc287..2b0a4ee 100644 --- a/lib/juicer/minifyer/java_base.rb +++ b/lib/juicer/minifyer/java_base.rb @@ -55,6 +55,18 @@ def set_opts(args) @jar_args = " #{args}" end + # Constructs the command to use + # + def command + java_opts = [] + if ENV['JAVA_OPTS'].nil? + java_opts = [] + else + java_opts = ENV['JAVA_OPTS'].split(" ") + end + @command = ([@binary] + java_opts).flatten + end + def jar_args @jar_args end diff --git a/lib/juicer/minifyer/yui_compressor.rb b/lib/juicer/minifyer/yui_compressor.rb index 67bd570..c6f01f3 100644 --- a/lib/juicer/minifyer/yui_compressor.rb +++ b/lib/juicer/minifyer/yui_compressor.rb @@ -57,7 +57,7 @@ def save(file, output = nil, type = nil) output = File.join(Dir::tmpdir, File.basename(file) + '.min.tmp.' + type.to_s) if use_tmp FileUtils.mkdir_p(File.dirname(output)) - result = execute(%Q{#{ENV['JAVA_OPTS']} -jar "#{locate_jar}"#{jar_args} -o "#{output}" "#{file}"}) + result = execute("-jar", "#{locate_jar}#{jar_args}", "-o", output, file) if use_tmp # If no output file is provided, YUI compressor will output.puts IO.read(output) # compress to a temp file. This file should be cleared diff --git a/test/unit/juicer/css_cache_buster_test.rb b/test/unit/juicer/css_cache_buster_test.rb index ffaf84e..017a7b4 100644 --- a/test/unit/juicer/css_cache_buster_test.rb +++ b/test/unit/juicer/css_cache_buster_test.rb @@ -80,7 +80,7 @@ def teardown buster = Juicer::CssCacheBuster.new :document_root => path("") buster.save file, output - buster.urls(output).each { |url| assert url !~ /(jcb=\d+).*(jcb=\d+)/, url } + buster.urls(output).each { |url| assert url !~ /(jcb=\d+).*(jcb=\d+)/, url.to_s } end end diff --git a/test/unit/juicer/jslint_test.rb b/test/unit/juicer/jslint_test.rb index 70e5471..62e89d8 100644 --- a/test/unit/juicer/jslint_test.rb +++ b/test/unit/juicer/jslint_test.rb @@ -19,7 +19,7 @@ def teardown context "verifying file with jslint" do should "shell out to rhino/jslint" do jslint = Juicer::JsLint.new(:bin_path => @path) - jslint.expects(:execute).with("-jar \"#{@path}/rhino1_7R3.jar\" \"#{@path}/jslint-1.0.js\" \"#{@file}\"").returns("jslint: No problems") + jslint.expects(:execute).with("-jar", "#{@path}/rhino1_7R3.jar", "#{@path}/jslint-1.0.js", @file).returns("jslint: No problems") assert jslint.check(@file).ok? end diff --git a/test/unit/juicer/minifyer/closure_compressor_test.rb b/test/unit/juicer/minifyer/closure_compressor_test.rb index 2a1eba8..c8c6240 100644 --- a/test/unit/juicer/minifyer/closure_compressor_test.rb +++ b/test/unit/juicer/minifyer/closure_compressor_test.rb @@ -6,25 +6,25 @@ def setup @jar = "compiler.jar" @input = "in-file.css" @output = "out-file.css" - @cmd = %Q{-jar "#@jar"} + @cmd = "-jar", @jar @closure = Juicer::Minifyer::ClosureCompiler.new @closure.stubs(:locate_jar).returns(@jar) end context "#save" do should "overwrite existing file" do - @closure.expects(:execute).with(%Q{#@cmd --js_output_file "#@output" --js "#@output"}) + @closure.expects(:execute).with(*@cmd, "--js_output_file", @output, "--js", @output) @closure.save(@output, @output) end should "write compressed input to output" do - @closure.expects(:execute).with(%Q{#@cmd --js_output_file "#@output" --js "#@input"}) + @closure.expects(:execute).with(*@cmd , "--js_output_file", @output, "--js", @input) @closure.save(@input, @output) end should "create non-existant path" do output = "some/nested/directory" - @closure.expects(:execute).with(%Q{#@cmd --js_output_file "#{output}/file.css" --js "#@input"}) + @closure.expects(:execute).with(*@cmd, "--js_output_file", "#{output}/file.css", "--js", @input) FileUtils.expects(:mkdir_p).with(output) @closure.save(@input, "#{output}/file.css") end diff --git a/test/unit/juicer/minifyer/yui_compressor_test.rb b/test/unit/juicer/minifyer/yui_compressor_test.rb index 6fbed06..8f10036 100644 --- a/test/unit/juicer/minifyer/yui_compressor_test.rb +++ b/test/unit/juicer/minifyer/yui_compressor_test.rb @@ -5,35 +5,35 @@ def setup @jar = "yuicompressor-2.4.2.jar" @input = "in-file.css" @output = "out-file.css" - @cmd = %Q{-jar "#@jar"} + @cmd = "-jar", @jar @yui_compressor = Juicer::Minifyer::YuiCompressor.new @yui_compressor.stubs(:locate_jar).returns(@jar) end context "#save" do should "overwrite existing file" do - @yui_compressor.expects(:execute).with(%Q{#@cmd -o "#@output" "#@output"}) + @yui_compressor.expects(:execute).with(*@cmd, "-o", @output, @output) @yui_compressor.save(@output) end should "use provided symbol type" do - @yui_compressor.expects(:execute).with(%Q{#@cmd -o "#@output" "#@input"}) + @yui_compressor.expects(:execute).with(*@cmd, "-o", @output, @input) @yui_compressor.save(@input, @output, :css) end should "use provided string type" do - @yui_compressor.expects(:execute).with(%Q{#@cmd -o "#@output" "#@input"}) + @yui_compressor.expects(:execute).with(*@cmd, "-o", @output, @input) @yui_compressor.save(@input, @output, "css") end should "write compressed input to output" do - @yui_compressor.expects(:execute).with(%Q{#@cmd -o "#@output" "#@input"}) + @yui_compressor.expects(:execute).with(*@cmd, "-o", @output, @input) @yui_compressor.save(@input, @output) end should "create non-existant path" do output = "some/nested/directory" - @yui_compressor.expects(:execute).with(%Q{#@cmd -o "#{output}/file.css" "#@input"}) + @yui_compressor.expects(:execute).with(*@cmd, "-o", "#{output}/file.css", @input) FileUtils.expects(:mkdir_p).with(output) @yui_compressor.save(@input, "#{output}/file.css") end