From c744560f3388e627579242b5bbc3ff287e4431a8 Mon Sep 17 00:00:00 2001 From: Derek Kastner Date: Thu, 15 Mar 2012 17:31:33 -0400 Subject: [PATCH] Use sprocket engine instead, handle pre-processing --- lib/nodeify/java_script.rb | 25 ++++++++++++++++++++----- lib/nodeify/rails.rb | 4 ++-- nodeify.gemspec | 3 ++- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/nodeify/java_script.rb b/lib/nodeify/java_script.rb index b621bc1..b24eb0f 100644 --- a/lib/nodeify/java_script.rb +++ b/lib/nodeify/java_script.rb @@ -1,10 +1,25 @@ -require 'sprockets' +require 'tilt' +require 'sandbox' module Nodeify - class JavaScript < Sprockets::Processor - def render(context, options) - @source = `node -e "var browserify = require('browserify'), _ = process.stdout.write(browserify({ entry: '#{file}', require: { http: 'dkastner-http-browserify' } }).bundle());"` - @source + class JavaScript < Tilt::Template + attr_accessor :body + + def initialize(*arg) + super + end + + def prepare + end + + def evaluate(context, options) + output = '' + Sandbox.play do |path| + file_path = File.join(path, File.basename(file)) + File.open(file_path, 'w') { |f| f.puts data } + output = `node -e "var browserify = require('browserify'), _ = process.stdout.write(browserify({ entry: '#{file_path}', require: { http: 'dkastner-http-browserify' } }).bundle());"` + end + output end end end diff --git a/lib/nodeify/rails.rb b/lib/nodeify/rails.rb index df8952f..2c9ca6b 100644 --- a/lib/nodeify/rails.rb +++ b/lib/nodeify/rails.rb @@ -7,8 +7,8 @@ module Nodeify class Rails < Rails::Railtie initializer "nodeify.sprockets.environment" do |app| - app.assets.unregister_preprocessor 'application/javascript', Sprockets::DirectiveProcessor - app.assets.register_bundle_processor 'application/javascript', Nodeify::JavaScript + app.assets.unregister_processor 'application/javascript', Sprockets::DirectiveProcessor + app.assets.register_engine '.js', Nodeify::JavaScript end end end diff --git a/nodeify.gemspec b/nodeify.gemspec index 04511e3..f4967e2 100644 --- a/nodeify.gemspec +++ b/nodeify.gemspec @@ -18,7 +18,8 @@ Gem::Specification.new do |s| s.require_paths = ["lib"] s.add_dependency 'rails', '~> 3.1' - s.add_dependency 'sprockets' + s.add_dependency 'sandbox' + s.add_dependency 'tilt' s.add_development_dependency 'jeweler' s.add_development_dependency 'rspec' end