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 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[:some_models] = SomeModel.all
292
+ vars.some_models = SomeModel.all
293
293
  render :welcome
294
294
  end
295
295
 
296
296
  get "/new", :_name => :new do
297
- vars[:some_model] = SomeModel.new(params[:some_model])
297
+ vars.some_model = SomeModel.new(params.some_model)
298
298
  render :new
299
299
  end
300
300
 
301
301
  post "(/)" do
302
- vars[:some_model] = SomeModel.new(params[:some_model])
303
- if vars[:some_model].save
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.add_dependency "extlib"
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'
@@ -13,7 +13,7 @@ module Pancake
13
13
  # v[:user] == vault[:user]
14
14
  # # This is now stored in the environment and is available later
15
15
  def vars
16
- env[VARS_KEY] ||= {}
16
+ env[VARS_KEY] ||= Hashie::Mash.new
17
17
  env[VARS_KEY]
18
18
  end
19
19
  alias_method :v, :vars
@@ -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 activate the class with the activate option" do
99
-
100
- end
101
-
102
- it "should pass the given args to the class to create it" do
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.16
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 00:00:00 +11:00
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: :runtime
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