Sha256: 6d728b7f74b4d39bb3d4fcc18d40a9cab2d7b259e652d29044a1516641851466

Contents?: true

Size: 1.65 KB

Versions: 1

Compression:

Stored size: 1.65 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/modules/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 -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

    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
requirejs_optimizer-0.2.0 lib/requirejs_optimizer/step/optimize.rb