pancake 0.2.0 → 0.3.0

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.
Files changed (108) hide show
  1. data/bin/pancake +96 -0
  2. data/lib/pancake.rb +5 -7
  3. data/lib/pancake/configuration.rb +2 -23
  4. data/lib/pancake/core_ext/object.rb +1 -1
  5. data/lib/pancake/defaults/configuration.rb +21 -1
  6. data/lib/pancake/generators.rb +0 -3
  7. data/lib/pancake/hooks/inheritable_inner_classes.rb +15 -2
  8. data/lib/pancake/master.rb +34 -1
  9. data/lib/pancake/mixins/render.rb +1 -2
  10. data/lib/pancake/mixins/stack_helper.rb +1 -1
  11. data/lib/pancake/router.rb +18 -63
  12. data/lib/pancake/stack/configuration.rb +3 -5
  13. data/lib/pancake/stack/router.rb +10 -33
  14. data/lib/pancake/stack/stack.rb +70 -50
  15. data/{spec/helpers → lib/pancake/test}/helpers.rb +3 -3
  16. data/lib/pancake/test/matchers.rb +20 -0
  17. data/lib/pancake/vendor/hashie/.document +5 -0
  18. data/lib/pancake/vendor/hashie/.gitignore +7 -0
  19. data/lib/pancake/vendor/hashie/Gemfile +11 -0
  20. data/lib/pancake/vendor/hashie/Gemfile.lock +25 -0
  21. data/lib/pancake/{generators/templates/short/%stack_name%/LICENSE.tt → vendor/hashie/LICENSE} +1 -1
  22. data/lib/pancake/vendor/hashie/README.rdoc +101 -0
  23. data/lib/pancake/{generators/templates/micro/%stack_name%/Rakefile.tt → vendor/hashie/Rakefile} +3 -13
  24. data/lib/pancake/vendor/hashie/VERSION +1 -0
  25. data/lib/pancake/vendor/hashie/hashie.gemspec +33 -0
  26. data/lib/pancake/vendor/hashie/lib/hashie.rb +5 -0
  27. data/lib/pancake/vendor/hashie/lib/hashie/clash.rb +86 -0
  28. data/lib/pancake/vendor/hashie/lib/hashie/dash.rb +108 -0
  29. data/lib/pancake/vendor/hashie/lib/hashie/hash.rb +22 -0
  30. data/lib/pancake/vendor/hashie/lib/hashie/hash_extensions.rb +49 -0
  31. data/lib/pancake/vendor/hashie/lib/hashie/mash.rb +148 -0
  32. data/lib/pancake/vendor/hashie/spec/hashie/clash_spec.rb +42 -0
  33. data/lib/pancake/vendor/hashie/spec/hashie/dash_spec.rb +103 -0
  34. data/lib/pancake/vendor/hashie/spec/hashie/hash_spec.rb +22 -0
  35. data/lib/pancake/vendor/hashie/spec/hashie/mash_spec.rb +135 -0
  36. data/lib/pancake/vendor/hashie/spec/spec.opts +2 -0
  37. data/lib/pancake/{generators/templates/short/%stack_name%/spec/spec_helper.rb.tt → vendor/hashie/spec/spec_helper.rb} +7 -7
  38. data/spec/pancake/configuration_spec.rb +1 -1
  39. data/spec/pancake/constants_spec.rb +1 -1
  40. data/spec/pancake/defaults/configuration_spec.rb +1 -1
  41. data/spec/pancake/hooks/on_inherit_spec.rb +13 -13
  42. data/spec/pancake/inheritance_spec.rb +22 -22
  43. data/spec/pancake/middleware_spec.rb +6 -5
  44. data/spec/pancake/middlewares/logger_spec.rb +1 -1
  45. data/spec/pancake/middlewares/static_spec.rb +1 -1
  46. data/spec/pancake/mime_types_spec.rb +1 -1
  47. data/spec/pancake/mixins/publish_spec.rb +24 -24
  48. data/spec/pancake/mixins/render/template_spec.rb +1 -1
  49. data/spec/pancake/mixins/render/view_context_spec.rb +1 -1
  50. data/spec/pancake/mixins/render_spec.rb +1 -1
  51. data/spec/pancake/mixins/request_helper_spec.rb +1 -1
  52. data/spec/pancake/mixins/stack_helper_spec.rb +3 -3
  53. data/spec/pancake/pancake_spec.rb +1 -1
  54. data/spec/pancake/paths_spec.rb +30 -30
  55. data/spec/pancake/stack/router_spec.rb +24 -62
  56. data/spec/pancake/stack/stack_configuration_spec.rb +1 -1
  57. data/spec/pancake/stack/stack_spec.rb +47 -4
  58. data/spec/spec_helper.rb +3 -3
  59. metadata +56 -128
  60. data/bin/pancake-gen +0 -30
  61. data/lib/pancake/bootloaders.rb +0 -187
  62. data/lib/pancake/generators/base.rb +0 -12
  63. data/lib/pancake/generators/micro_generator.rb +0 -17
  64. data/lib/pancake/generators/short_generator.rb +0 -18
  65. data/lib/pancake/generators/templates/common/dotgitignore +0 -22
  66. data/lib/pancake/generators/templates/common/dothtaccess +0 -17
  67. data/lib/pancake/generators/templates/micro/%stack_name%/%stack_name%.rb.tt +0 -8
  68. data/lib/pancake/generators/templates/micro/%stack_name%/config.ru.tt +0 -12
  69. data/lib/pancake/generators/templates/micro/%stack_name%/pancake_init.rb.tt +0 -1
  70. data/lib/pancake/generators/templates/micro/%stack_name%/public/.empty_directory +0 -0
  71. data/lib/pancake/generators/templates/micro/%stack_name%/tmp/.empty_directory +0 -0
  72. data/lib/pancake/generators/templates/micro/%stack_name%/views/root.html.haml +0 -1
  73. data/lib/pancake/generators/templates/short/%stack_name%/README.tt +0 -7
  74. data/lib/pancake/generators/templates/short/%stack_name%/Rakefile.tt +0 -56
  75. data/lib/pancake/generators/templates/short/%stack_name%/VERSION.tt +0 -1
  76. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%.rb.tt +0 -12
  77. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/%stack_name%.rb.tt +0 -6
  78. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config.ru.tt +0 -10
  79. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config/config.rb.tt +0 -23
  80. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config/environments/development.rb.tt +0 -15
  81. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config/environments/production.rb.tt +0 -16
  82. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/config/environments/staging.rb.tt +0 -17
  83. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/models/.empty_directory +0 -0
  84. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/mounts/.empty_directory +0 -0
  85. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/public/.empty_directory +0 -0
  86. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/tasks/%stack_name%.rake.tt +0 -4
  87. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/tmp/.empty_directory +0 -0
  88. data/lib/pancake/generators/templates/short/%stack_name%/lib/%stack_name%/views/root.html.haml +0 -2
  89. data/lib/pancake/generators/templates/short/%stack_name%/pancake_init.rb.tt +0 -1
  90. data/lib/pancake/generators/templates/short/%stack_name%/spec/%stack_name%_spec.rb.tt +0 -11
  91. data/lib/pancake/stack/app.rb +0 -10
  92. data/lib/pancake/stack/bootloader.rb +0 -114
  93. data/lib/pancake/stack/middleware.rb +0 -0
  94. data/lib/pancake/stacks/short.rb +0 -3
  95. data/lib/pancake/stacks/short/bootloaders.rb +0 -5
  96. data/lib/pancake/stacks/short/controller.rb +0 -184
  97. data/lib/pancake/stacks/short/default/views/base.html.haml +0 -5
  98. data/lib/pancake/stacks/short/default/views/error.html.haml +0 -12
  99. data/lib/pancake/stacks/short/stack.rb +0 -207
  100. data/spec/helpers/matchers.rb +0 -25
  101. data/spec/pancake/bootloaders_spec.rb +0 -119
  102. data/spec/pancake/stack/app_spec.rb +0 -28
  103. data/spec/pancake/stack/bootloader_spec.rb +0 -41
  104. data/spec/pancake/stack/middleware_spec.rb +0 -0
  105. data/spec/pancake/stacks/short/controller_spec.rb +0 -442
  106. data/spec/pancake/stacks/short/middlewares_spec.rb +0 -22
  107. data/spec/pancake/stacks/short/router_spec.rb +0 -150
  108. data/spec/pancake/stacks/short/stack_spec.rb +0 -117
@@ -1,22 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
-
3
- describe "short stack middleware" do
4
- before do
5
- class ::FooBar < Pancake::Stacks::Short
6
- add_root(__FILE__)
7
- end
8
- end
9
-
10
- after do
11
- clear_constants :FooBar
12
- end
13
-
14
- it "should include the Pancake::Middlewares::Static middleware" do
15
- FooBar.stackup
16
- middleware = FooBar.middlewares.detect do |m|
17
- m.middleware == Pancake::Middlewares::Static
18
- end
19
- middleware.should_not be_nil
20
- middleware.args.should == [FooBar]
21
- end
22
- end
@@ -1,150 +0,0 @@
1
- require File.join(File.expand_path(File.dirname(__FILE__)),'..', '..', '..', 'spec_helper')
2
-
3
- describe Pancake::Stacks::Short, "routes" do
4
- before do
5
- class ::RoutedShortStack < Pancake::Stacks::Short
6
- roots << Pancake.get_root(__FILE__)
7
-
8
- get "/", :_name => :root do
9
- "get - /"
10
- end
11
-
12
- get "/foo", :_name => :foo do
13
- "get - foo"
14
- end
15
-
16
- get "/bar", :_name => :bar do
17
- "get - bar"
18
- end
19
-
20
- post "/foo" do
21
- "post - foo"
22
- end
23
-
24
- post "/bar" do
25
- "post - bar"
26
- end
27
-
28
- put "/foo" do
29
- "put - foo"
30
- end
31
-
32
- put "/bar" do
33
- "put - bar"
34
- end
35
-
36
- delete "/foo" do
37
- "delete - foo"
38
- end
39
-
40
- delete "/bar" do
41
- "delete - bar"
42
- end
43
-
44
- any "/any/foo" do
45
- "any - foo"
46
- end
47
-
48
- get "/baz/:var(/:date)" do
49
- "done: var == #{params[:var]} : date == #{params[:date]}"
50
- end.name(:baz)
51
- end
52
- @app = RoutedShortStack.stackup
53
- end
54
- after do
55
- clear_constants "RoutedShortStack", "FooApp", "BarApp"
56
- end
57
-
58
- def app
59
- @app
60
- end
61
-
62
- %w(foo bar).each do |item|
63
- %w(get post put delete).each do |method|
64
- it "should #{method} /#{item}" do
65
- result = self.send(method, "/#{item}")
66
- result.status.should == 200
67
- result.body.should == "#{method} - #{item}"
68
- end
69
- end # get post put delete
70
- end # foo bar
71
-
72
- it "should return a not found if we try to get an action that has not been defined" do
73
- result = get "/blah"
74
- result.status.should == 404
75
- end
76
-
77
-
78
- it "should handle tricky routes" do
79
- result = get "/baz/hassox"
80
- result.status.should == 200
81
- result.body.should == "done: var == hassox : date == "
82
- end
83
-
84
- it "should handle tricky routes with optional parameters" do
85
- result = get "/baz/hassox/2009-08-21"
86
- result.status.should == 200
87
- result.body.should == "done: var == hassox : date == 2009-08-21"
88
- end
89
-
90
- it "should handle the any request method" do
91
- [:get, :post, :put, :delete].each do |meth|
92
- result = self.send(meth, "/any/foo")
93
- result.status.should == 200
94
- result.body.should == "any - foo"
95
- end
96
- end
97
-
98
- describe "url generation" do
99
- it "should generate a simple named url" do
100
- Pancake.url(RoutedShortStack, :foo).should == "/foo"
101
- end
102
-
103
- it "should generate a complex named url" do
104
- Pancake.url(RoutedShortStack, :baz, :var => "bar").should == "/baz/bar"
105
- Pancake.url(RoutedShortStack, :baz, :var => "bar", :date => "today").should == "/baz/bar/today"
106
- end
107
-
108
- it "should generate it's url when it's nested" do
109
- class ::FooApp < Pancake::Stack; end
110
- FooApp.router.mount(RoutedShortStack, "/short/stack")
111
- FooApp.router.mount_applications!
112
- Pancake.url(RoutedShortStack, :foo).should == "/short/stack/foo"
113
- Pancake.url(RoutedShortStack, :baz, :var => "var", :date => "today").should == "/short/stack/baz/var/today"
114
- end
115
- end
116
-
117
- describe "inherited route generation" do
118
- before do
119
- class ::FooApp < RoutedShortStack; end
120
- @app = FooApp.stackup
121
- end
122
-
123
- it "should generate an inherited simple url" do
124
- Pancake.url(FooApp, :foo).should == "/foo"
125
- end
126
-
127
- it "should generate a complex url" do
128
- Pancake.url(FooApp, :baz, :var => "the_var", :date => "today").should == "/baz/the_var/today"
129
- end
130
-
131
- %w(foo bar).each do |item|
132
- %w(get post put delete).each do |method|
133
- it "should #{method} /#{item}" do
134
- result = self.send(method, "/#{item}")
135
- result.status.should == 200
136
- result.body.should == "#{method} - #{item}"
137
- end
138
- end # get post put delete
139
- end # foo bar
140
-
141
- it "should match the nested route without affecting the parent" do
142
- class ::BarApp < Pancake::Stack; end
143
- BarApp.router.mount(FooApp, "/mount/point")
144
- BarApp.router.mount_applications!
145
-
146
- Pancake.url(FooApp, :foo).should == "/mount/point/foo"
147
- Pancake.url(RoutedShortStack, :foo).should == "/foo"
148
- end
149
- end
150
- end
@@ -1,117 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../../spec_helper'
2
-
3
- describe Pancake::Stacks::Short do
4
-
5
- before do
6
- @master_before = [Pancake.master_stack, Pancake.master_templates]
7
- $captures = []
8
- class ::ShortMiddle
9
- attr_accessor :app
10
- def initialize(app)
11
- @app = app
12
- end
13
-
14
- def call(env)
15
- $captures << ShortMiddle
16
- @app.call(env)
17
- end
18
- end
19
-
20
- class ::ShortFoo < Pancake::Stacks::Short
21
- roots << Pancake.get_root(__FILE__)
22
- add_root(__FILE__, "..", "..", "fixtures", "stacks", "short", "foobar")
23
- add_root(__FILE__, "..", "..", "fixtures", "stacks", "short", "foobar", "other_root")
24
- use ShortMiddle
25
-
26
-
27
- get "/foo" do
28
- "HERE"
29
- end
30
-
31
- get "/" do
32
- $captures << self.class
33
- render :inherited_from_base
34
- end
35
- end
36
-
37
- @app = ShortFoo
38
- Pancake.master_stack = ShortFoo
39
- Pancake.master_templates = ShortFoo
40
- end
41
-
42
- after do
43
- clear_constants :ShortFoo, :ShortMiddle, :OtherFoo, "ShortFoo::Router"
44
- Pancake.master_stack, Pancake.master_templates = @master_before
45
- end
46
-
47
- def app
48
- @app.stackup
49
- end
50
-
51
- it "should provide access through the stack interface to the templates" do
52
- ShortFoo.template(:inherited_from_base).should be_an_instance_of(Pancake::Mixins::Render::Template)
53
- end
54
-
55
- it "should go through the middleware to get to the actions" do
56
- get "/foo"
57
- $captures.should == [ShortMiddle]
58
- end
59
-
60
- describe "inheritance" do
61
- before do
62
- class ::OtherFoo < ShortFoo; end
63
- ShortFoo.router.mount(OtherFoo, "/other")
64
- end
65
-
66
- it "should render the same template in the child as it does in the parent" do
67
- get "/"
68
- $captures.pop.should == ShortFoo::Controller
69
- last_response.should match(/inherited from base/)
70
- result = get "/other/"
71
- $captures.pop.should == OtherFoo::Controller
72
- last_response.should match(/inherited from base/)
73
- end
74
- end
75
-
76
- describe "helpers" do
77
- before do
78
- $captures = []
79
- class ::ShortFoo
80
- helpers do
81
- def in_helper?
82
- $captures << :in_helper?
83
- end
84
- end
85
- end
86
- end
87
-
88
- it "should allow me to setup a helper method in the stack" do
89
- ShortFoo.get("/with_helper"){ in_helper?; "OK" }
90
- result = get "/with_helper"
91
- result.should be_successful
92
- $captures.should include(:in_helper?)
93
- end
94
-
95
- it "should provide the helpers in child stacks" do
96
- class ::OtherFoo < ShortFoo; end
97
- OtherFoo.get("/helper_action"){ in_helper?; "OK" }
98
- @app = OtherFoo
99
- result = get "/helper_action"
100
- result.should be_successful
101
- $captures.should include(:in_helper?)
102
- end
103
-
104
- it "should let me mixin modules to the helpers" do
105
- module ::OtherFoo
106
- def other_helper
107
- $captures << :other_helper
108
- end
109
- end
110
- ShortFoo.helpers{ include OtherFoo }
111
- ShortFoo.get("/foo"){ other_helper; "OK" }
112
- result = get "/foo"
113
- result.should be_successful
114
- $captures.should include(:other_helper)
115
- end
116
- end
117
- end