From 215870fcbf226e0980525e80fb6a8166338bce36 Mon Sep 17 00:00:00 2001 From: Collin Miller Date: Mon, 30 Nov 2009 02:25:48 -0500 Subject: [PATCH] middleware and executable --- Rakefile.rb | 2 ++ bin/jabs | 8 ++++---- examples/config.ru | 10 ++++++++++ lib/jabs.rb | 6 +++--- lib/jabs/middleware.rb | 27 +++++++++++++++++++++++++++ lib/middleware.rb | 13 ------------- 6 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 examples/config.ru create mode 100644 lib/jabs/middleware.rb delete mode 100644 lib/middleware.rb diff --git a/Rakefile.rb b/Rakefile.rb index dd65195..814390c 100644 --- a/Rakefile.rb +++ b/Rakefile.rb @@ -56,6 +56,8 @@ gemspec.homepage = "http://github.com/collin/jabs" gemspec.authors = ["Collin Miller"] + gemspec.executables << 'jabs' + gemspec.add_dependency('fold', '0.5.0') gemspec.add_dependency('johnson', '1.1.2') gemspec.add_dependency('colored', '1.1') diff --git a/bin/jabs b/bin/jabs index 53ede91..b2e22e5 100755 --- a/bin/jabs +++ b/bin/jabs @@ -1,4 +1,4 @@ -ruby -e "\ -require 'rubygems'; require 'jabs' -puts Jabs::Engine.new(STDIN.read).render -" \ No newline at end of file +#!/usr/bin/env ruby -KU + +require 'jabs' +puts Jabs::Engine.new(STDIN.read).render \ No newline at end of file diff --git a/examples/config.ru b/examples/config.ru new file mode 100644 index 0000000..c499e9f --- /dev/null +++ b/examples/config.ru @@ -0,0 +1,10 @@ +require 'lib/jabs' +require 'pathname' + +puts Pathname.new(__FILE__).dirname.expand_path+'src' +puts "OF" + +use Jabs::Rack::Static, :urls => '/src', :root => Pathname.new(__FILE__).dirname.expand_path +run lambda { |env| + [200, {'Content-Type'=>'text/html'}, "JABS"] +} \ No newline at end of file diff --git a/lib/jabs.rb b/lib/jabs.rb index c7ab671..8b217df 100755 --- a/lib/jabs.rb +++ b/lib/jabs.rb @@ -1,8 +1,8 @@ -#! /usr/bin/env ruby - -require 'rubygems' require 'fold' +require 'rack' require 'johnson' +require 'pathname' +puts require Pathname.new(__FILE__).dirname.expand_path+'jabs/middleware' module Johnson module Nodes diff --git a/lib/jabs/middleware.rb b/lib/jabs/middleware.rb new file mode 100644 index 0000000..4d6705e --- /dev/null +++ b/lib/jabs/middleware.rb @@ -0,0 +1,27 @@ +module Jabs + + module Rack + class Static < ::Rack::Static + def initialize(app, options={}) + super(app, options) + root = options[:root] || Dir.pwd + @file_server = Jabs::Rack::File.new(root) + end + end + + class File < ::Rack::File + def serving + @path += ".jabs" unless @path[/\.jabs$/] + status, headers, body = * super + return [status, headers, body] unless status == 200 + + jabs = Jabs::Engine.new(open(body.path).read).render + + headers['Content-Type'] = 'text/javascript' + headers['Content-Length'] = jabs.size.to_s + + [status, headers, jabs] + end + end + end +end \ No newline at end of file diff --git a/lib/middleware.rb b/lib/middleware.rb deleted file mode 100644 index 94e0fb9..0000000 --- a/lib/middleware.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'rack' - -module Jabs - class Middleware < Rack::File - def serving - @path += ".jabs" unless @path[/\.jabs$/] - status, headers, body = *super - return [status, headers, body] unless status == 200 - headers['Content-Type'] = 'text/javascript' - [status, headers, Jabs::Engine.new(body).render] - end - end -end \ No newline at end of file