Sha256: 6e772522013a03d3603b0a0e413bf990f0cc0db8d0c5edf9294a6a678201dafa

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

module RequirejsOptimizer

  module Step

    class Optimize < Base

      def perform(*)
        raise RequirejsOptimizer::Errors::RjsOptimizationFailed unless optimize
      end

      private

      def optimize
        optimize_command = "#{runtime_cmdline} #{RequirejsOptimizer.root.join 'bin', 'r.js'} -o app/assets/javascripts/#{RequirejsOptimizer.base_folder}/require.build.js"
        puts optimize_command
        puts "\n"
        system(optimize_command)
      end

      def runtime_cmdline
        runtime = rails_runtime if defined? Rails

        if runtime.nil?
          if node_exists?
            runtime = :node
          elsif java_exists?
            runtime = :rhino
          else
            raise RequirejsOptimizer::Errors::JavaScriptRuntimeUnavailable
          end
        end

        puts "\nOptimizing with #{runtime} using:"

        if runtime == :node
          "node"
        else
          js = RequirejsOptimizer.root.join 'lib', 'rhino', 'js.jar'
          compiler = RequirejsOptimizer.root.join 'lib', 'closure', 'compiler.jar'

          "java #{java_opts} -classpath #{js}:#{compiler} org.mozilla.javascript.tools.shell.Main"
        end

      end

      def node_exists?
        system("which node 2>&1 > /dev/null")
      end

      def java_exists?
        system("which java 2>&1 > /dev/null")
      end

      def rails_runtime
        if Rails.configuration.respond_to? :requirejs_optimizer_runtime
          runtime = Rails.configuration.requirejs_optimizer_runtime.to_sym

          if ([:rhino, :node] & [runtime]).none?
            raise RequirejsOptimizer::Errors::UnknownJavaScriptRuntime.new runtime
          end
        end

        runtime
      end

      def java_opts
        if Rails.configuration.respond_to? :requirejs_optimizer_java_opts
          opts = Rails.configuration.requirejs_optimizer_java_opts
        else
          opts = ''
        end

        opts
      end

    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
requirejs_optimizer-0.4.2 lib/requirejs_optimizer/step/optimize.rb
requirejs_optimizer-0.4.1 lib/requirejs_optimizer/step/optimize.rb