rack-raker 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rack'
4
+ gem 'rake'
5
+
6
+ group :development do
7
+ gem 'test-spec'
8
+ end
data/Rakefile CHANGED
@@ -1,10 +1,13 @@
1
- require 'rake'
1
+ require 'bundler'
2
2
  require 'rake/testtask'
3
3
 
4
+ Bundler::GemHelper.install_tasks
5
+
4
6
  task :default => :test
5
7
 
6
- Rake::TestTask.new('test') do |t|
7
- t.pattern = 'test/**/*_test.rb'
8
- t.warning = true
9
- t.verbose = true
8
+ desc 'Run the tests'
9
+ task :test do
10
+ require 'rake/runtest'
11
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), 'lib')
12
+ Rake.run_tests 'test/**/*_test.rb'
10
13
  end
data/config.ru CHANGED
@@ -1,13 +1,15 @@
1
1
  require 'rack'
2
- require 'lib/rack/raker'
2
+ $LOAD_PATH << 'lib'
3
+ require 'rack/raker'
3
4
 
4
- use Rack::Reloader, 5
5
+ use Rack::Reloader, 0
5
6
 
6
7
  rakefile = ::File.join(::File.dirname(__FILE__), 'Rakefile')
7
8
 
9
+ # Raker::Middleware
8
10
  use Rack::Raker, rakefile
9
- # To test Raker::Middleware
10
11
  require 'rack/lobster'
11
12
  run Rack::Lobster.new
12
13
 
14
+ # # Raker::App
13
15
  # run Rack::Raker.new(rakefile)
@@ -1,13 +1,11 @@
1
1
  module Rack
2
2
  module Raker
3
3
 
4
- VERSION = '0.0.1'
5
-
6
4
  autoload :App, 'rack/raker/app'
7
5
  autoload :Middleware, 'rack/raker/middleware'
8
6
  autoload :TaskManager, 'rack/raker/task_manager'
7
+ autoload :VERSION, 'rack/raker/version'
9
8
 
10
- # TODO: Add optional URL map.
11
9
  def self.new(*args)
12
10
  if args.first.class == String
13
11
  # run
@@ -1,33 +1,71 @@
1
- require 'sinatra/base'
1
+ require 'erb'
2
2
 
3
3
  module Rack
4
4
  module Raker
5
- class App < Sinatra::Base
5
+ class App
6
+ def initialize(rakefile, *args)
7
+ @rakefile = rakefile
8
+ @users = args.pop if args.last.is_a?(Hash)
9
+ @path = (args.first || '/rake').chomp('/')
10
+ @manager = TaskManager.new(@rakefile)
11
+ end
6
12
 
7
- set :root, ::File.dirname(__FILE__) + '/app'
13
+ def call(env)
14
+ request = Request.new(env)
8
15
 
9
- def initialize(*args)
10
- @args = args
11
- @rakefile = args.first
12
- @manager = TaskManager.new(@rakefile)
16
+ if request.path_info =~ /^#{@path}\/$/
17
+ process 'index', lambda { index }, env
18
+ elsif request.path_info =~ /^#{@path}\/([^\/]+)\/$/ && @manager.has?($1)
19
+ process 'show', lambda { show($1) }, env
20
+ elsif request.path_info.start_with?(@path) && request.path_info[-1] != 47
21
+ [301, {'Content-Type' => 'text/plain','Location' => "#{request.path}/"}, ['moved permanently']]
22
+ else
23
+ [404, {'Content-Type' => 'text/plain'}, ['not found']]
24
+ end
13
25
  end
14
26
 
15
- # TODO: Show task descriptions (or make an actual UI).
16
- get '/rake/?' do
27
+ def index
17
28
  @tasks = @manager.tasks
18
- erb :index
19
29
  end
20
30
 
21
- get '/rake/:task' do |task|
22
- @task = task
23
- @output = @manager.run(task)
24
- # TODO: Maybe show a helpful failure message.
25
- redirect '/' unless @output
26
- erb :show
31
+ def show(task)
32
+ @output, @error = nil, nil
33
+ begin
34
+ @output = @manager.run(task)
35
+ rescue Exception => ex
36
+ @error = ex.message
37
+ end
38
+ end
39
+
40
+ private
41
+
42
+ def process(action, block, env)
43
+ if @users.nil?
44
+ process_internal(action, block)
45
+ else
46
+ app = Rack::Auth::Digest::MD5.new(lambda { process_internal(action, block) }) do |username|
47
+ @users[username]
48
+ end
49
+ app.realm = 'Rack::Raker'
50
+ app.opaque = opaque
51
+ app.call(env)
52
+ end
53
+ end
54
+
55
+ def opaque
56
+ @opaque ||= @users.key?('opaque') ? @users.delete('opaque') : 'rack-raker'
57
+ end
58
+
59
+ def process_internal(action, block)
60
+ block.call
61
+ html = render('layout') { render(action) }
62
+ [200, {'Content-Type' => 'text/html'}, [html]]
27
63
  end
28
64
 
29
- not_found do
30
- redirect '/rake'
65
+ def render(view)
66
+ path = ::File.join(::File.dirname(__FILE__), "views/#{view}.erb")
67
+ content = ::File.open(path) { |file| file.read }
68
+ ERB.new(content).result(binding)
31
69
  end
32
70
 
33
71
  end # App
@@ -3,16 +3,14 @@ module Rack
3
3
  class Middleware
4
4
 
5
5
  def initialize(*args)
6
- @args = args
7
- @app = args.shift
8
- @rakefile = args.first
6
+ @rack = args.shift
7
+ @app = App.new(*args)
9
8
  end
10
9
 
11
10
  def call(env)
12
- request = Request.new(env)
13
- @status, @headers, @body = @app.call(env)
14
- return [@status, @headers, @body] unless request.path =~ /^\/rake/
15
- Raker::App.new(@rakefile).call(env)
11
+ res = @app.call(env)
12
+ res = @rack.call(env) if res[0] == 404
13
+ res
16
14
  end
17
15
 
18
16
  end # Middleware
@@ -1,27 +1,42 @@
1
+ require 'open3'
2
+
1
3
  module Rack
2
4
  module Raker
3
5
  class TaskManager
4
6
 
7
+ class RakefileNotFound < Exception; end
8
+
5
9
  attr_accessor :tasks
6
10
 
7
11
  def initialize(rakefile)
12
+ raise RakefileNotFound unless ::File.exists?(rakefile)
8
13
  @rakefile = rakefile
9
14
  end
10
15
 
16
+ def rake
17
+ @rake ||= %x[ whereis rake ].match(/rake: ([^\s]+)/)[1]
18
+ end
19
+
11
20
  # Return an array of Rake tasks.
12
21
  def tasks
13
- output = %x[ rake -f #{@rakefile} -s -T ]
22
+ output = %x[ #{rake} -f #{@rakefile} -s -T ]
14
23
  @tasks ||= output.split("\n").map do |task|
15
- task.match(/^rake\s([\w:]+)/)[1]
16
- end
24
+ task.match(/^rake\s([^\s]+)\s+#\s(.+)/)[1..2]
25
+ end.compact
26
+ end
27
+
28
+ def has?(task)
29
+ tasks.select { |name,desc| task == name }.size == 1
17
30
  end
18
31
 
19
32
  # Run the specified Rake +task+ and returns the (string) output, or false upon failure.
20
33
  # TODO: Maybe move the +rake_opts+ elsewhere.
21
34
  def run(task, rake_opts = ['-s'])
22
- output = %x[ rake -f #{@rakefile} #{rake_opts.join(' ')} #{task} 2>/dev/null ]
23
- output = false if output.empty?
24
- output
35
+ Open3.popen3("#{rake} -f #{@rakefile} #{rake_opts.join(' ')} #{task}") do |stdinn, stdout, stderr|
36
+ err = stderr.read.split(/\n/).delete_if { |line| /[^:]+:\d+: warning: .+/ =~ line }.join("\n")
37
+ raise err unless err.empty?
38
+ stdout.read
39
+ end
25
40
  end
26
41
 
27
42
  end # TaskManager
@@ -0,0 +1,5 @@
1
+ module Rack
2
+ module Raker
3
+ VERSION = '0.1.1'
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ <h3><code>$ rake -T</code></h3>
2
+
3
+ <table>
4
+ <% @tasks.each do |task, desc| %>
5
+ <tr>
6
+ <td><a href="<%= "#{@path}/#{task}/" %>"><%= task %></a></td>
7
+ <td><%= desc %></td>
8
+ </tr>
9
+ <% end %>
10
+ </table>
@@ -0,0 +1,32 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Rack::Raker</title>
5
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
6
+ <style type="text/css">
7
+ html, body { padding: 0; margin: 0; font-family: Arial,Verdana,Helvetica; font-size:14px; height:100%; }
8
+ #container { min-height:100%; position:relative; }
9
+ h1 { background: #000; margin: 0; padding: 8px; color: #FFF; }
10
+ h3 { margin: 20px; color: #900; }
11
+ h3 a { color: #900; }
12
+ .body { margin: 0 20px; padding: 0 0 80px; }
13
+ table { margin: 0; border: 1px solid #ccc; padding: 0; border-spacing: 0; border-collapse: collapse; }
14
+ table tr td { margin: 20px;border:solid 1px #ccc;padding:6px; }
15
+ div.footer { padding:20px 0;background:#efefef;margin-top:20px;border-top:solid 1px #ccc;color:#999; font-size:13px; text-indent:20px; position:absolute; bottom:0; width:100%; }
16
+ div.footer a { color:#999; }
17
+ pre { background:#ffd;padding:20px;margin:10px;border:solid 1px #fc0; }
18
+ pre.error { background:#fcc;border-color:#f00; }
19
+ a.back { color:#333; margin:20px; font-size:12px; display:block; }
20
+ </style>
21
+ </head>
22
+
23
+ <body>
24
+ <div id="container">
25
+ <h1>Rack::Raker</h1>
26
+ <div class="body">
27
+ <%= yield %>
28
+ </div>
29
+ <div class="footer">Powered by <a href="http://rubygems.org/gems/rack-raker">Rack::Raker</a> v<%= Rack::Raker::VERSION %></div>
30
+ </div>
31
+ </body>
32
+ </html>
@@ -0,0 +1,11 @@
1
+ <h3><code>$ <a href="<%= @path %>/">rake -T</a></code></h3>
2
+
3
+ <h3><code>$ rake <%= @task %></code></h3>
4
+
5
+ <% unless @output.nil? %>
6
+ <pre><%= @output %></pre>
7
+ <% else %>
8
+ <pre class="error"><%= @error %></pre>
9
+ <% end %>
10
+
11
+ <a class="back" href="<%= @path %>/">&lt; Back</a>
@@ -1,37 +1,36 @@
1
- Gem::Specification.new do |s|
2
- s.specification_version = 2 if s.respond_to? :specification_version=
3
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
1
+ require 'rake'
4
2
 
5
- s.name = 'rack-raker'
6
- s.version = '0.0.1'
7
- s.date = '2009-11-02'
8
- s.homepage = 'http://oshuma.github.com/rack-raker'
3
+ require File.expand_path("../lib/rack/raker/version", __FILE__)
9
4
 
10
- s.authors = ['Dale Campbell']
11
- s.email = 'oshuma@gmail.com'
5
+ Gem::Specification.new do |s|
6
+ s.name = 'rack-raker'
7
+ s.version = Rack::Raker::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ['Dale Campbell','Felipe Oliveira']
10
+ s.email = ['oshuma@gmail.com','felipecvo@gmail.com']
11
+ s.homepage = 'http://rubygems.org/gems/rack-raker'
12
+ s.summary = 'Rack Rake middleware/app.'
13
+ s.description = s.summary
12
14
 
13
- s.description = 'Rack Rake middleware/app.'
14
- s.summary = 'Rack Rake middleware/app.'
15
+ s.required_rubygems_version = ">= 1.3.6"
16
+ s.rubyforge_project = "rack-raker"
15
17
 
16
18
  s.add_dependency 'rack', '>= 0.4'
19
+
20
+ s.add_development_dependency "bundler", ">= 1.0.0"
21
+ s.add_development_dependency "test-spec", ">= 0.9.0"
22
+
17
23
  s.require_paths = %w[lib]
18
24
 
19
- s.files = %w[
20
- README
21
- Rakefile
22
- config.ru
23
- rack-raker.gemspec
24
- lib/rack/raker.rb
25
- lib/rack/raker/app.rb
26
- lib/rack/raker/app/views/index.erb
27
- lib/rack/raker/app/views/layout.erb
28
- lib/rack/raker/app/views/show.erb
29
- lib/rack/raker/middleware.rb
30
- lib/rack/raker/task_manager.rb
31
- test/Rakefile
32
- test/test_helper.rb
33
- test/task_manager_test.rb
34
- ]
25
+ s.files = FileList[
26
+ 'Gemfile',
27
+ 'README',
28
+ 'Rakefile',
29
+ 'config.ru',
30
+ 'rack-raker.gemspec',
31
+ 'lib/**/*',
32
+ 'test/**/*',
33
+ ].to_a
35
34
 
36
35
  s.test_files = s.files.select { |path| path =~ /^test\/.*_test.rb/ }
37
36
 
@@ -0,0 +1,69 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ describe 'App' do
4
+ include Rack::Test::Methods
5
+
6
+ before(:each) do
7
+ @tasks = [
8
+ ['raker:awesome','Namespaced awesome task'],
9
+ ['raker:util','Do some utility stuff'],
10
+ ['some_task','Some other task']
11
+ ]
12
+ @rakefile = File.join(File.dirname(__FILE__), 'Rakefile')
13
+ end
14
+
15
+ def app(raker_app = nil)
16
+ raker_app || Rack::Raker::App.new(@rakefile)
17
+ end
18
+
19
+ it 'should respond to the default index path' do
20
+ get '/rake/'
21
+ last_response.should.be.ok
22
+ end
23
+
24
+ it 'should list the tasks' do
25
+ get '/rake/'
26
+ @tasks.each do |task_name, task_desc|
27
+ last_response.body.should.include?(task_name)
28
+ last_response.body.should.include?(task_desc)
29
+ end
30
+ end
31
+
32
+ it 'should run the given task' do
33
+ task = @tasks.first.first
34
+ get "/rake/#{task}/"
35
+ last_response.should.be.ok
36
+ end
37
+
38
+ it 'should return 404 if task not found' do
39
+ get "/rake/not_a_real_task/"
40
+ last_response.should.be.not_found
41
+ end
42
+
43
+ it 'should redirect if not end with slash' do
44
+ get "/rake/task"
45
+ last_response.should.be.redirect
46
+ end
47
+
48
+ it 'should respond in different url' do
49
+ custom_app = Rack::Raker::App.new(@rakefile, '/myapp/rack-rake/')
50
+ resp = Rack::MockRequest.new(custom_app).get('/myapp/rack-rake/')
51
+ resp.should.be.ok
52
+ end
53
+
54
+ it 'should link to tasks with new path' do
55
+ custom_app = Rack::Raker::App.new(@rakefile, '/myapp/rack-rake/')
56
+ resp = Rack::MockRequest.new(custom_app).get('/myapp/rack-rake/')
57
+ resp.should.be.ok
58
+ @tasks.each do |task, desc|
59
+ resp.body.should.include?("/myapp/rack-rake/#{task}/")
60
+ end
61
+ end
62
+
63
+ it 'should link to home with new path' do
64
+ custom_app = Rack::Raker::App.new(@rakefile, '/myapp/rack-rake/')
65
+ resp = Rack::MockRequest.new(custom_app).get("/myapp/rack-rake/#{@tasks.first.first}/")
66
+ resp.should.be.ok
67
+ resp.body.should.include?('"/myapp/rack-rake/"')
68
+ end
69
+ end
@@ -0,0 +1,76 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ describe 'Raker' do
4
+ before(:each) do
5
+ @rakefile = File.join(File.dirname(__FILE__), 'Rakefile')
6
+ end
7
+
8
+ it 'should require authentication' do
9
+ app = Rack::Raker.new(@rakefile, '/rake', { 'user' => 'raker' })
10
+ res = Rack::MockRequest.new(app).get('/rake/')
11
+ res.status.should.be 401
12
+ end
13
+
14
+ it 'should authenticate user' do
15
+ app = Rack::Raker.new(@rakefile, '/rake', { 'user' => 'raker' })
16
+ @request = Rack::MockRequest.new(app)
17
+
18
+ request_with_digest_auth('GET', '/rake/', 'user', 'raker') do |response|
19
+ response.status.should.be 200
20
+ end
21
+ end
22
+ end
23
+
24
+ def request(method, path, headers = {}, &block)
25
+ response = @request.request(method, path, headers)
26
+ block.call(response) if block
27
+ return response
28
+ end
29
+
30
+ def request_with_digest_auth(method, path, username, password, options = {}, &block)
31
+ request_options = {}
32
+ request_options[:input] = options.delete(:input) if options.include? :input
33
+
34
+ response = request(method, path, request_options)
35
+
36
+ return response unless response.status == 401
37
+
38
+ if wait = options.delete(:wait)
39
+ sleep wait
40
+ end
41
+
42
+ challenge = response['WWW-Authenticate'].split(' ', 2).last
43
+
44
+ params = Rack::Auth::Digest::Params.parse(challenge)
45
+
46
+ params['username'] = username
47
+ params['nc'] = '00000001'
48
+ params['cnonce'] = 'nonsensenonce'
49
+ params['uri'] = path
50
+
51
+ params['method'] = method
52
+
53
+ params.update options
54
+
55
+ params['response'] = MockDigestRequest.new(params).response(password)
56
+
57
+ request(method, path, request_options.merge('HTTP_AUTHORIZATION' => "Digest #{params}"), &block)
58
+ end
59
+
60
+ class MockDigestRequest
61
+ def initialize(params)
62
+ @params = params
63
+ end
64
+ def method_missing(sym)
65
+ if @params.has_key? k = sym.to_s
66
+ return @params[k]
67
+ end
68
+ super
69
+ end
70
+ def method
71
+ @params['method']
72
+ end
73
+ def response(password)
74
+ Rack::Auth::Digest::MD5.new(nil).send :digest, self, password
75
+ end
76
+ end
@@ -1,8 +1,12 @@
1
1
  require File.join(File.dirname(__FILE__), 'test_helper')
2
2
 
3
- describe TaskManager do
3
+ describe 'TaskManager' do
4
4
  before(:each) do
5
- @tasks = ['raker:awesome', 'raker:util', 'some_task']
5
+ @tasks = [
6
+ ['raker:awesome','Namespaced awesome task'],
7
+ ['raker:util','Do some utility stuff'],
8
+ ['some_task','Some other task']
9
+ ]
6
10
  @rakefile = File.join(File.dirname(__FILE__), 'Rakefile')
7
11
  @manager = TaskManager.new(@rakefile)
8
12
  end
@@ -12,6 +16,20 @@ describe TaskManager do
12
16
  end
13
17
 
14
18
  it 'should run the given task' do
15
- @manager.run(@tasks.first).should.not.be false
19
+ @manager.run(@tasks.first.first).should.not.be false
20
+ end
21
+
22
+ it 'should raise RakefileNotFound' do
23
+ lambda do
24
+ TaskManager.new('/not_a_real/Rakefile')
25
+ end.should.raise TaskManager::RakefileNotFound
26
+ end
27
+
28
+ it 'should return true if the given task exists' do
29
+ @manager.has?(@tasks.first.first).should.be true
30
+ end
31
+
32
+ it 'should return false if the given task does not exists' do
33
+ @manager.has?('no_one').should.be false
16
34
  end
17
35
  end
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'test/spec'
3
- require File.expand_path("#{File.dirname(__FILE__)}/../lib/rack/raker")
3
+ require 'rack/test'
4
4
 
5
+ require File.expand_path("#{File.dirname(__FILE__)}/../lib/rack/raker")
5
6
  include Rack::Raker
metadata CHANGED
@@ -1,29 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-raker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
5
11
  platform: ruby
6
12
  authors:
7
13
  - Dale Campbell
14
+ - Felipe Oliveira
8
15
  autorequire:
9
16
  bindir: bin
10
17
  cert_chain: []
11
18
 
12
- date: 2009-11-02 00:00:00 -06:00
19
+ date: 2010-12-18 00:00:00 -05:00
13
20
  default_executable:
14
21
  dependencies:
15
22
  - !ruby/object:Gem::Dependency
16
23
  name: rack
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
20
27
  requirements:
21
28
  - - ">="
22
29
  - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ - 4
23
34
  version: "0.4"
24
- version:
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: bundler
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 23
46
+ segments:
47
+ - 1
48
+ - 0
49
+ - 0
50
+ version: 1.0.0
51
+ type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: test-spec
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 59
62
+ segments:
63
+ - 0
64
+ - 9
65
+ - 0
66
+ version: 0.9.0
67
+ type: :development
68
+ version_requirements: *id003
25
69
  description: Rack Rake middleware/app.
26
- email: oshuma@gmail.com
70
+ email:
71
+ - oshuma@gmail.com
72
+ - felipecvo@gmail.com
27
73
  executables: []
28
74
 
29
75
  extensions: []
@@ -31,22 +77,26 @@ extensions: []
31
77
  extra_rdoc_files:
32
78
  - README
33
79
  files:
80
+ - Gemfile
34
81
  - README
35
82
  - Rakefile
36
83
  - config.ru
37
84
  - rack-raker.gemspec
38
- - lib/rack/raker.rb
39
- - lib/rack/raker/app.rb
40
- - lib/rack/raker/app/views/index.erb
41
- - lib/rack/raker/app/views/layout.erb
42
- - lib/rack/raker/app/views/show.erb
85
+ - lib/rack/raker/version.rb
43
86
  - lib/rack/raker/middleware.rb
87
+ - lib/rack/raker/app.rb
44
88
  - lib/rack/raker/task_manager.rb
45
- - test/Rakefile
46
- - test/test_helper.rb
89
+ - lib/rack/raker/views/show.erb
90
+ - lib/rack/raker/views/index.erb
91
+ - lib/rack/raker/views/layout.erb
92
+ - lib/rack/raker.rb
47
93
  - test/task_manager_test.rb
94
+ - test/app_test.rb
95
+ - test/test_helper.rb
96
+ - test/raker_test.rb
97
+ - test/Rakefile
48
98
  has_rdoc: true
49
- homepage: http://oshuma.github.com/rack-raker
99
+ homepage: http://rubygems.org/gems/rack-raker
50
100
  licenses: []
51
101
 
52
102
  post_install_message:
@@ -60,23 +110,33 @@ rdoc_options:
60
110
  require_paths:
61
111
  - lib
62
112
  required_ruby_version: !ruby/object:Gem::Requirement
113
+ none: false
63
114
  requirements:
64
115
  - - ">="
65
116
  - !ruby/object:Gem::Version
117
+ hash: 3
118
+ segments:
119
+ - 0
66
120
  version: "0"
67
- version:
68
121
  required_rubygems_version: !ruby/object:Gem::Requirement
122
+ none: false
69
123
  requirements:
70
124
  - - ">="
71
125
  - !ruby/object:Gem::Version
72
- version: "0"
73
- version:
126
+ hash: 23
127
+ segments:
128
+ - 1
129
+ - 3
130
+ - 6
131
+ version: 1.3.6
74
132
  requirements: []
75
133
 
76
- rubyforge_project:
77
- rubygems_version: 1.3.5
134
+ rubyforge_project: rack-raker
135
+ rubygems_version: 1.3.7
78
136
  signing_key:
79
- specification_version: 2
137
+ specification_version: 3
80
138
  summary: Rack Rake middleware/app.
81
139
  test_files:
82
140
  - test/task_manager_test.rb
141
+ - test/app_test.rb
142
+ - test/raker_test.rb
@@ -1,7 +0,0 @@
1
- <h3><code>$ rake -T</code></h3>
2
-
3
- <ul>
4
- <% @tasks.each do |task| %>
5
- <li><a href="/rake/<%= task %>"><%= task %></a></li>
6
- <% end %>
7
- </ul>
@@ -1,12 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>Rack::Raker</title>
5
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
6
- </head>
7
-
8
- <body>
9
- <h1>Rack::Raker</h1>
10
- <%= yield %>
11
- </body>
12
- </html>
@@ -1,7 +0,0 @@
1
- <h3><code>$ <a href="/rake">rake -T</a></code></h3>
2
-
3
- <h3><code>$ rake <%= @task %></code></h3>
4
-
5
- <pre>
6
- <%= @output %>
7
- </pre>