pancake 0.1.16 → 0.1.17
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +5 -5
- data/Rakefile +2 -1
- data/lib/pancake/mixins/request_helper.rb +1 -1
- data/lib/pancake/router.rb +1 -0
- data/lib/pancake/stacks/short/controller.rb +2 -1
- data/lib/pancake.rb +3 -3
- data/spec/pancake/mixins/request_helper_spec.rb +9 -0
- data/spec/pancake/stack/router_spec.rb +8 -6
- metadata +13 -3
data/README.textile
CHANGED
@@ -289,18 +289,18 @@ This will generate the basic stack for you. It's generated as a gem and based o
|
|
289
289
|
provides :html, :xml, :json
|
290
290
|
|
291
291
|
get "(/)", :_name => :home do
|
292
|
-
vars
|
292
|
+
vars.some_models = SomeModel.all
|
293
293
|
render :welcome
|
294
294
|
end
|
295
295
|
|
296
296
|
get "/new", :_name => :new do
|
297
|
-
vars
|
297
|
+
vars.some_model = SomeModel.new(params.some_model)
|
298
298
|
render :new
|
299
299
|
end
|
300
300
|
|
301
301
|
post "(/)" do
|
302
|
-
vars
|
303
|
-
if vars
|
302
|
+
vars.some_model = SomeModel.new(params.some_model)
|
303
|
+
if vars.some_model.save
|
304
304
|
redirect url(:home)
|
305
305
|
else
|
306
306
|
render :new
|
@@ -311,7 +311,7 @@ end
|
|
311
311
|
|
312
312
|
h4. The Vars
|
313
313
|
|
314
|
-
In the example above you can see the "vars" method. This method provides a place for variables on a per-request basis for later use. In this case, the data is stored so that we can access it in the views. It could just as easily be used to share information between middlewares.
|
314
|
+
In the example above you can see the "vars" method. This method provides a place for variables on a per-request basis for later use. In this case, the data is stored so that we can access it in the views. It could just as easily be used to share information between middlewares. This is a "Hashie::Mash":http://github.com/intridea/hashie/ which is like a Hash with indifferent access, that can access keys via method calls. The vars method is also aliased as "v".
|
315
315
|
|
316
316
|
This is a way to separate the concerns of Controller and View. These contexts are supposed to be separate. Breaking the encapsulation of instance variables does not need to be done in a short stack.
|
317
317
|
|
data/Rakefile
CHANGED
@@ -12,10 +12,11 @@ begin
|
|
12
12
|
gem.authors = ["Daniel Neighman"]
|
13
13
|
gem.add_development_dependency "rspec"
|
14
14
|
gem.add_dependency "usher", ">=0.5.10"
|
15
|
-
gem.
|
15
|
+
gem.add_development_dependency "extlib"
|
16
16
|
gem.add_dependency "thor"
|
17
17
|
gem.add_dependency "rack"
|
18
18
|
gem.add_dependency "tilt", ">=0.3"
|
19
|
+
gem.add_dependency "hashie", ">=0.1.3"
|
19
20
|
gem.add_dependency "mynyml-rack-accept-media-types"
|
20
21
|
gem.require_path = 'lib'
|
21
22
|
gem.autorequire = 'pancake'
|
data/lib/pancake/router.rb
CHANGED
@@ -168,6 +168,7 @@ module Pancake
|
|
168
168
|
consume_path!(request, response) if !response.partial_match? && response.path.route.consuming
|
169
169
|
request.params.merge!(request.env['usher.params']) unless request.env['usher.params'].empty?
|
170
170
|
request.env[ROUTE_KEY] = response.path.route
|
171
|
+
request.env['rack.request.query_hash'] = Hashie::Mash.new(request.params) unless request.params.kind_of?(Hashie::Mash)
|
171
172
|
end
|
172
173
|
end
|
173
174
|
end
|
@@ -83,8 +83,9 @@ module Pancake
|
|
83
83
|
handle_request_exception(e)
|
84
84
|
rescue Exception => e
|
85
85
|
if Pancake.handle_errors?
|
86
|
-
server_error = Errors::Server.new
|
86
|
+
server_error = Errors::Server.new(e.message)
|
87
87
|
server_error.exceptions << e
|
88
|
+
server_error.set_backtrace e.backtrace
|
88
89
|
else
|
89
90
|
server_error = e
|
90
91
|
end
|
data/lib/pancake.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'hashie'
|
2
3
|
require 'extlib/class'
|
3
4
|
require 'extlib/boolean'
|
4
5
|
require 'extlib/module'
|
@@ -8,14 +9,13 @@ require 'extlib/object'
|
|
8
9
|
require 'extlib/symbol'
|
9
10
|
require 'extlib/blank'
|
10
11
|
require "extlib/dictionary"
|
11
|
-
require 'extlib/mash'
|
12
12
|
require 'extlib/logger'
|
13
|
+
require 'extlib/mash'
|
14
|
+
require 'extlib/hash'
|
13
15
|
require 'usher'
|
14
16
|
require 'usher/interface/rack_interface'
|
15
17
|
require 'tilt'
|
16
18
|
|
17
|
-
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
|
18
|
-
|
19
19
|
module Pancake
|
20
20
|
autoload :Logger, "pancake/logger"
|
21
21
|
autoload :Constants, "pancake/constants"
|
@@ -32,5 +32,14 @@ describe Pancake::Mixins::RequestHelper do
|
|
32
32
|
foo.v[:data] = :some_data
|
33
33
|
env[Pancake::Mixins::RequestHelper::VARS_KEY][:data].should == :some_data
|
34
34
|
end
|
35
|
+
|
36
|
+
it "should store v as a Hashie" do
|
37
|
+
env = {}
|
38
|
+
foo = FooBar.new
|
39
|
+
foo.env = env
|
40
|
+
foo.v.should be_a_kind_of(Hashie::Mash)
|
41
|
+
foo.v.data = :some_data
|
42
|
+
foo.v.data.should == :some_data
|
43
|
+
end
|
35
44
|
end
|
36
45
|
end
|
@@ -95,12 +95,14 @@ describe "stack router" do
|
|
95
95
|
result.body.should include("stacked up")
|
96
96
|
end
|
97
97
|
|
98
|
-
it "should
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
98
|
+
it "should provide the rack params as a Hashie" do
|
99
|
+
FooApp.router.add("/hashie") do |e|
|
100
|
+
r = Rack::Request.new(e)
|
101
|
+
r.params.should be_a_kind_of(Hashie::Mash)
|
102
|
+
Rack::Response.new("OK").finish
|
103
|
+
end
|
104
|
+
@app = FooApp.stackup
|
105
|
+
get "/hashie"
|
104
106
|
end
|
105
107
|
end
|
106
108
|
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.
|
4
|
+
version: 0.1.17
|
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-
|
12
|
+
date: 2009-11-13 00:00:00 +11:00
|
13
13
|
default_executable: pancake-gen
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: extlib
|
37
|
-
type: :
|
37
|
+
type: :development
|
38
38
|
version_requirement:
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
@@ -72,6 +72,16 @@ dependencies:
|
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: "0.3"
|
74
74
|
version:
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: hashie
|
77
|
+
type: :runtime
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.1.3
|
84
|
+
version:
|
75
85
|
- !ruby/object:Gem::Dependency
|
76
86
|
name: mynyml-rack-accept-media-types
|
77
87
|
type: :runtime
|