pancake 0.1.27 → 0.1.28

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/TODO CHANGED
@@ -1,8 +1,7 @@
1
1
  TODO:
2
2
 
3
3
  * Add default middleware to the short stack
4
- * Add a default base template and some default css to the short stack
5
- * Add bundler support
6
- * Do some introductory posts
4
+ * Add before/after filters to the short stack
5
+ * move the mount apps bootloader to after the before_build_stack bootloader which will allow us to mount application later and allow devs to add new things just before building the stack.
7
6
  * optimise template lookup
8
7
 
@@ -71,6 +71,12 @@ module Pancake
71
71
  _bootloaders[name]
72
72
  end
73
73
 
74
+ # Provides removal of a bootloader, by replacing it as an empty lambda
75
+ # :api: public
76
+ def delete(name)
77
+ !!self[name] && _bootloaders[name] = nil
78
+ end
79
+
74
80
  # Add a bootloader. Inside the block we're inside a class definition.
75
81
  # Requirements: define a +run!+ method
76
82
  #
@@ -119,6 +125,7 @@ module Pancake
119
125
  options[:stack_class] ||= stack
120
126
 
121
127
  each(conditions) do |name, bl|
128
+ next if bl.nil?
122
129
  bl.call(options)
123
130
  end
124
131
  end
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  require 'pancake'
4
4
  require ::File.join(::File.expand_path(::File.dirname(__FILE__)), "<%= stack_name %>")
5
5
 
6
- # get the application to run. The applicadtion in the Pancake.start block
6
+ # get the application to run. The application in the Pancake.start block
7
7
  # is the master application. It will have all requests directed to it through the
8
8
  # pancake middleware
9
9
  # This should be a very minimal file, but should be used when any stand alone code needs to be included
@@ -1,7 +1,7 @@
1
1
  require 'pancake'
2
2
  require ::File.join(::File.expand_path(::File.dirname(__FILE__)), "..", "<%= stack_name %>")
3
3
 
4
- # get the application to run. The applicadtion in the Pancake.start block
4
+ # get the application to run. The application in the Pancake.start block
5
5
  # is the master application. It will have all requests directed to it through the
6
6
  # pancake middleware
7
7
  # This should be a very minimal file, but should be used when any stand alone code needs to be included
@@ -37,7 +37,7 @@ module Pancake
37
37
  # @see http://github.com/joshbuddy/usher
38
38
  # @since 0.1.2
39
39
  # @author Daniel Neighman
40
- class Router < Usher::Interface::RackInterface
40
+ class Router < Usher::Interface::Rack
41
41
  attr_writer :router
42
42
 
43
43
  CONFIGURATION_KEY = "pancake.request.configuration".freeze
@@ -113,7 +113,7 @@ module Pancake
113
113
  end
114
114
 
115
115
  # Adds a route to the router.
116
- # @see Usher::Interface::RackInterface#add
116
+ # @see Usher::Interface::Rack#add
117
117
  def add(path, opts = {}, &block)
118
118
  opts = cooerce_options_to_usher(opts)
119
119
  route = super(path, opts)
@@ -162,13 +162,16 @@ module Pancake
162
162
  opts
163
163
  end
164
164
 
165
- # Overwrites the method in Rack::Interface::RackInterface to mash
165
+ # Overwrites the method in Rack::Interface::Rack to mash
166
166
  # the usher.params into the rack request.params
167
167
  # @api private
168
168
  def after_match(request, response)
169
169
  super
170
170
  consume_path!(request, response) if !response.partial_match? && response.path.route.consuming
171
171
  request.params.merge!(request.env['usher.params']) unless request.env['usher.params'].empty?
172
+
173
+ request.params.merge!(response.destination) if response.destination.is_a?(Hash)
174
+
172
175
  request.env[ROUTE_KEY] = response.path.route
173
176
  request.env['rack.request.query_hash'] = Hashie::Mash.new(request.params) unless request.params.kind_of?(Hashie::Mash)
174
177
  end
@@ -25,7 +25,7 @@ end
25
25
  Pancake::Stack::BootLoader.add(:load_mounted_inits, :level => :init) do
26
26
  def run!
27
27
  # Mount any stacks this stack may have in it.
28
- stack_class.paths_for(:mounts).each{|f| require f}
28
+ stack_class.paths_for(:mounts).each{|f| require f.join}
29
29
  end
30
30
  end
31
31
 
@@ -170,8 +170,7 @@ module Pancake
170
170
  name = options.delete(:_name)
171
171
  options[:conditions] ||= {}
172
172
  options[:conditions][:request_method] = method.to_s.upcase unless method == :any
173
- options[:default_values] ||= {}
174
- options[:default_values][:action] = action_name
173
+ options[:action] ||= action_name
175
174
  r = router.add(path, options)
176
175
  r.name(name) if name
177
176
  r
data/lib/pancake.rb CHANGED
@@ -13,7 +13,7 @@ require 'extlib/logger'
13
13
  require 'extlib/mash'
14
14
  require 'extlib/hash'
15
15
  require 'usher'
16
- require 'usher/interface/rack_interface'
16
+ require 'usher/interface/rack'
17
17
  require 'tilt'
18
18
 
19
19
  module Pancake
@@ -30,6 +30,15 @@ describe "Pancake::Stack::BootLoader" do
30
30
  FooStack::BootLoader[:my_initializer].should inherit_from(Pancake::BootLoaderMixin::Base)
31
31
  end
32
32
 
33
+ it "should allow me to remove a bootloader from another bootloader" do
34
+ FooStack::BootLoader.add(:foo){ def run!; $captures << :foo; end}
35
+ FooStack::BootLoader.add(:bar){ def run!; FooStack::BootLoader.delete(:removed); end }
36
+ FooStack::BootLoader.add(:removed){ def run!; $captures << :removed; end}
37
+ FooStack.new
38
+
39
+ $captures.should == [:foo]
40
+ end
41
+
33
42
  it "should allow me to add multiple boot loaders" do
34
43
  FooStack::BootLoader.add(:foo){ def run!; :foo; end}
35
44
  FooStack::BootLoader.add(:bar){ def run!; :bar; end}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pancake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.27
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Neighman
@@ -9,7 +9,7 @@ autorequire: pancake
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-30 00:00:00 +11:00
12
+ date: 2009-12-18 00:00:00 +11:00
13
13
  default_executable: pancake-gen
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -101,6 +101,7 @@ extensions: []
101
101
  extra_rdoc_files:
102
102
  - LICENSE
103
103
  - README.textile
104
+ - TODO
104
105
  files:
105
106
  - LICENSE
106
107
  - README.textile