renee 0.3.11 → 0.4.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (231) hide show
  1. data/Gemfile +17 -0
  2. data/Gemfile-renee +8 -0
  3. data/Gemfile-renee-core +8 -0
  4. data/Gemfile-renee-render +9 -0
  5. data/Gemfile-renee-session +9 -0
  6. data/Gemfile-renee-url-generation +8 -0
  7. data/MIT-LICENSE.txt +7 -0
  8. data/README-renee-core.md +242 -0
  9. data/README-renee-render.md +38 -0
  10. data/README-renee-session.md +3 -0
  11. data/README-renee-url-generation.md +3 -0
  12. data/README.md +131 -6
  13. data/Rakefile +109 -9
  14. data/TODO.txt +45 -0
  15. data/config.ru +26 -0
  16. data/examples/blog/blog.rb +3 -1
  17. data/examples/blog/config.ru +24 -19
  18. data/examples/blog/views/edit.erb +10 -1
  19. data/examples/blog/views/show.erb +5 -0
  20. data/lib/renee.rb +11 -4
  21. data/lib/renee/core.rb +98 -0
  22. data/lib/renee/core/chaining.rb +66 -0
  23. data/lib/renee/core/env_accessors.rb +72 -0
  24. data/lib/renee/core/exceptions.rb +15 -0
  25. data/lib/renee/core/matcher.rb +61 -0
  26. data/lib/renee/core/plugins.rb +31 -0
  27. data/lib/renee/core/rack_interaction.rb +50 -0
  28. data/lib/renee/core/request_context.rb +56 -0
  29. data/lib/renee/core/responding.rb +112 -0
  30. data/lib/renee/core/response.rb +78 -0
  31. data/lib/renee/core/routing.rb +319 -0
  32. data/lib/renee/core/transform.rb +18 -0
  33. data/lib/renee/render.rb +221 -0
  34. data/lib/renee/session.rb +50 -0
  35. data/lib/renee/url_generation.rb +117 -0
  36. data/lib/renee/util.rb +7 -0
  37. data/lib/renee/version.rb +2 -4
  38. data/plan.txt +19 -0
  39. data/renee-core.gemspec +26 -0
  40. data/renee-render.gemspec +30 -0
  41. data/renee-session.gemspec +28 -0
  42. data/renee-url-generation.gemspec +24 -0
  43. data/renee.gemspec +5 -6
  44. data/site/MIT-LICENSE.txt +7 -0
  45. data/site/public/css/app.css +75 -0
  46. data/site/public/docs/renee-core/Renee.html +208 -0
  47. data/site/public/docs/renee-core/Renee/Core.html +366 -0
  48. data/site/public/docs/renee-core/Renee/Core/Chaining.html +192 -0
  49. data/site/public/docs/renee-core/Renee/Core/ClassMethods.html +725 -0
  50. data/site/public/docs/renee-core/Renee/Core/ClientError.html +317 -0
  51. data/site/public/docs/renee-core/Renee/Core/EnvAccessors.html +152 -0
  52. data/site/public/docs/renee-core/Renee/Core/EnvAccessors/ClassMethods.html +354 -0
  53. data/site/public/docs/renee-core/Renee/Core/Matcher.html +675 -0
  54. data/site/public/docs/renee-core/Renee/Core/Plugins.html +475 -0
  55. data/site/public/docs/renee-core/Renee/Core/RackInteraction.html +488 -0
  56. data/site/public/docs/renee-core/Renee/Core/RequestContext.html +511 -0
  57. data/site/public/docs/renee-core/Renee/Core/Responding.html +877 -0
  58. data/site/public/docs/renee-core/Renee/Core/Response.html +691 -0
  59. data/site/public/docs/renee-core/Renee/Core/Routing.html +1589 -0
  60. data/site/public/docs/renee-core/Renee/Core/Transform.html +249 -0
  61. data/site/public/docs/renee-core/Renee/Core/URLGeneration.html +597 -0
  62. data/site/public/docs/renee-core/_index.html +244 -0
  63. data/site/public/docs/renee-core/class_list.html +47 -0
  64. data/site/public/docs/renee-core/css/common.css +1 -0
  65. data/site/public/docs/renee-core/css/full_list.css +55 -0
  66. data/site/public/docs/renee-core/css/style.css +322 -0
  67. data/site/public/docs/renee-core/file.README-renee-core.html +341 -0
  68. data/site/public/docs/renee-core/file.README.html +212 -0
  69. data/site/public/docs/renee-core/file_list.html +49 -0
  70. data/site/public/docs/renee-core/frames.html +13 -0
  71. data/site/public/docs/renee-core/index.html +341 -0
  72. data/site/public/docs/renee-core/js/app.js +205 -0
  73. data/site/public/docs/renee-core/js/full_list.js +167 -0
  74. data/site/public/docs/renee-core/js/jquery.js +16 -0
  75. data/site/public/docs/renee-core/method_list.html +590 -0
  76. data/site/public/docs/renee-core/top-level-namespace.html +103 -0
  77. data/site/public/docs/renee-render/Renee.html +116 -0
  78. data/site/public/docs/renee-render/Renee/Core.html +346 -0
  79. data/site/public/docs/renee-render/Renee/Core/Chaining.html +125 -0
  80. data/site/public/docs/renee-render/Renee/Core/ClassMethods.html +620 -0
  81. data/site/public/docs/renee-render/Renee/Core/ClientError.html +317 -0
  82. data/site/public/docs/renee-render/Renee/Core/EnvAccessors.html +152 -0
  83. data/site/public/docs/renee-render/Renee/Core/EnvAccessors/ClassMethods.html +354 -0
  84. data/site/public/docs/renee-render/Renee/Core/Matcher.html +675 -0
  85. data/site/public/docs/renee-render/Renee/Core/RackInteraction.html +488 -0
  86. data/site/public/docs/renee-render/Renee/Core/RequestContext.html +421 -0
  87. data/site/public/docs/renee-render/Renee/Core/Responding.html +873 -0
  88. data/site/public/docs/renee-render/Renee/Core/Response.html +691 -0
  89. data/site/public/docs/renee-render/Renee/Core/Routing.html +1682 -0
  90. data/site/public/docs/renee-render/Renee/Core/Transform.html +249 -0
  91. data/site/public/docs/renee-render/Renee/Core/URLGeneration.html +597 -0
  92. data/site/public/docs/renee-render/Renee/Render.html +873 -0
  93. data/site/public/docs/renee-render/Renee/Render/ClassMethods.html +382 -0
  94. data/site/public/docs/renee-render/Renee/Render/TemplateNotFound.html +126 -0
  95. data/site/public/docs/renee-render/_index.html +143 -0
  96. data/site/public/docs/renee-render/class_list.html +47 -0
  97. data/site/public/docs/renee-render/css/common.css +1 -0
  98. data/site/public/docs/renee-render/css/full_list.css +55 -0
  99. data/site/public/docs/renee-render/css/style.css +322 -0
  100. data/site/public/docs/renee-render/file.README-renee-render.html +104 -0
  101. data/site/public/docs/renee-render/file.README.html +212 -0
  102. data/site/public/docs/renee-render/file_list.html +49 -0
  103. data/site/public/docs/renee-render/frames.html +13 -0
  104. data/site/public/docs/renee-render/index.html +104 -0
  105. data/site/public/docs/renee-render/js/app.js +205 -0
  106. data/site/public/docs/renee-render/js/full_list.js +167 -0
  107. data/site/public/docs/renee-render/js/jquery.js +16 -0
  108. data/site/public/docs/renee-render/method_list.html +110 -0
  109. data/site/public/docs/renee-render/top-level-namespace.html +103 -0
  110. data/site/public/docs/renee-session/Renee.html +106 -0
  111. data/site/public/docs/renee-session/Renee/Session.html +173 -0
  112. data/site/public/docs/renee-session/Renee/Session/ClassMethods.html +470 -0
  113. data/site/public/docs/renee-session/_index.html +136 -0
  114. data/site/public/docs/renee-session/class_list.html +47 -0
  115. data/site/public/docs/renee-session/css/common.css +1 -0
  116. data/site/public/docs/renee-session/css/full_list.css +55 -0
  117. data/site/public/docs/renee-session/css/style.css +322 -0
  118. data/site/public/docs/renee-session/file.README-renee-core.html +341 -0
  119. data/site/public/docs/renee-session/file.README-renee-session.html +69 -0
  120. data/site/public/docs/renee-session/file_list.html +49 -0
  121. data/site/public/docs/renee-session/frames.html +13 -0
  122. data/site/public/docs/renee-session/index.html +69 -0
  123. data/site/public/docs/renee-session/js/app.js +205 -0
  124. data/site/public/docs/renee-session/js/full_list.js +167 -0
  125. data/site/public/docs/renee-session/js/jquery.js +16 -0
  126. data/site/public/docs/renee-session/method_list.html +102 -0
  127. data/site/public/docs/renee-session/top-level-namespace.html +103 -0
  128. data/site/public/docs/renee-url-generation/Renee.html +208 -0
  129. data/site/public/docs/renee-url-generation/Renee/Core.html +366 -0
  130. data/site/public/docs/renee-url-generation/Renee/Core/Chaining.html +192 -0
  131. data/site/public/docs/renee-url-generation/Renee/Core/ClassMethods.html +725 -0
  132. data/site/public/docs/renee-url-generation/Renee/Core/ClientError.html +317 -0
  133. data/site/public/docs/renee-url-generation/Renee/Core/EnvAccessors.html +152 -0
  134. data/site/public/docs/renee-url-generation/Renee/Core/EnvAccessors/ClassMethods.html +354 -0
  135. data/site/public/docs/renee-url-generation/Renee/Core/Matcher.html +675 -0
  136. data/site/public/docs/renee-url-generation/Renee/Core/Plugins.html +475 -0
  137. data/site/public/docs/renee-url-generation/Renee/Core/RackInteraction.html +488 -0
  138. data/site/public/docs/renee-url-generation/Renee/Core/RequestContext.html +511 -0
  139. data/site/public/docs/renee-url-generation/Renee/Core/Responding.html +877 -0
  140. data/site/public/docs/renee-url-generation/Renee/Core/Response.html +691 -0
  141. data/site/public/docs/renee-url-generation/Renee/Core/Routing.html +1589 -0
  142. data/site/public/docs/renee-url-generation/Renee/Core/Transform.html +249 -0
  143. data/site/public/docs/renee-url-generation/_index.html +244 -0
  144. data/site/public/docs/renee-url-generation/class_list.html +47 -0
  145. data/site/public/docs/renee-url-generation/css/common.css +1 -0
  146. data/site/public/docs/renee-url-generation/css/full_list.css +55 -0
  147. data/site/public/docs/renee-url-generation/css/style.css +322 -0
  148. data/site/public/docs/renee-url-generation/file.README-renee-url-generation.html +69 -0
  149. data/site/public/docs/renee-url-generation/file_list.html +49 -0
  150. data/site/public/docs/renee-url-generation/frames.html +13 -0
  151. data/site/public/docs/renee-url-generation/index.html +69 -0
  152. data/site/public/docs/renee-url-generation/js/app.js +205 -0
  153. data/site/public/docs/renee-url-generation/js/full_list.js +167 -0
  154. data/site/public/docs/renee-url-generation/js/jquery.js +16 -0
  155. data/site/public/docs/renee-url-generation/method_list.html +590 -0
  156. data/site/public/docs/renee-url-generation/top-level-namespace.html +103 -0
  157. data/site/public/docs/renee/Renee.html +232 -0
  158. data/site/public/docs/renee/Renee/Application.html +367 -0
  159. data/site/public/docs/renee/Renee/Core.html +370 -0
  160. data/site/public/docs/renee/Renee/Core/Chaining.html +192 -0
  161. data/site/public/docs/renee/Renee/Core/ClassMethods.html +725 -0
  162. data/site/public/docs/renee/Renee/Core/ClientError.html +317 -0
  163. data/site/public/docs/renee/Renee/Core/EnvAccessors.html +152 -0
  164. data/site/public/docs/renee/Renee/Core/EnvAccessors/ClassMethods.html +354 -0
  165. data/site/public/docs/renee/Renee/Core/Matcher.html +675 -0
  166. data/site/public/docs/renee/Renee/Core/Plugins.html +475 -0
  167. data/site/public/docs/renee/Renee/Core/RackInteraction.html +488 -0
  168. data/site/public/docs/renee/Renee/Core/RequestContext.html +511 -0
  169. data/site/public/docs/renee/Renee/Core/Responding.html +877 -0
  170. data/site/public/docs/renee/Renee/Core/Response.html +691 -0
  171. data/site/public/docs/renee/Renee/Core/Routing.html +1589 -0
  172. data/site/public/docs/renee/Renee/Core/Transform.html +249 -0
  173. data/site/public/docs/renee/Renee/Core/URLGeneration.html +597 -0
  174. data/site/public/docs/renee/Renee/Render.html +877 -0
  175. data/site/public/docs/renee/Renee/Render/ClassMethods.html +382 -0
  176. data/site/public/docs/renee/Renee/Render/TemplateNotFound.html +126 -0
  177. data/site/public/docs/renee/Renee/Session.html +177 -0
  178. data/site/public/docs/renee/Renee/Session/ClassMethods.html +470 -0
  179. data/site/public/docs/renee/Renee/URLGeneration.html +142 -0
  180. data/site/public/docs/renee/Renee/URLGeneration/ClassMethods.html +593 -0
  181. data/site/public/docs/renee/Renee/Util.html +163 -0
  182. data/site/public/docs/renee/_index.html +336 -0
  183. data/site/public/docs/renee/class_list.html +47 -0
  184. data/site/public/docs/renee/css/common.css +1 -0
  185. data/site/public/docs/renee/css/full_list.css +55 -0
  186. data/site/public/docs/renee/css/style.css +322 -0
  187. data/site/public/docs/renee/file.README.html +212 -0
  188. data/site/public/docs/renee/file_list.html +49 -0
  189. data/site/public/docs/renee/frames.html +13 -0
  190. data/site/public/docs/renee/index.html +212 -0
  191. data/site/public/docs/renee/js/app.js +205 -0
  192. data/site/public/docs/renee/js/full_list.js +167 -0
  193. data/site/public/docs/renee/js/jquery.js +16 -0
  194. data/site/public/docs/renee/method_list.html +758 -0
  195. data/site/public/docs/renee/top-level-namespace.html +202 -0
  196. data/site/public/img/favicon.ico +0 -0
  197. data/site/public/img/reneeclean.png +0 -0
  198. data/site/public/img/russiangithub.png +0 -0
  199. data/site/public/img/stoneposter.png +0 -0
  200. data/site/public/img/vospit.jpeg +0 -0
  201. data/site/views/chaining.md +32 -0
  202. data/site/views/index.md +219 -0
  203. data/site/views/layouts/app.haml +16 -0
  204. data/site/views/rack-integration.md +51 -0
  205. data/site/views/responding.md +103 -0
  206. data/site/views/route-generation.md +82 -0
  207. data/site/views/routing.md +261 -0
  208. data/site/views/settings.md +19 -0
  209. data/site/views/team-renee.md +13 -0
  210. data/site/views/tutorial.md +57 -0
  211. data/site/views/variable-types.md +57 -0
  212. data/test.watchr +61 -0
  213. data/test/renee-core/chaining_test.rb +33 -0
  214. data/test/renee-core/env_accessors_test.rb +43 -0
  215. data/test/renee-core/include_test.rb +14 -0
  216. data/test/renee-core/request_context_test.rb +70 -0
  217. data/test/renee-core/responding_test.rb +128 -0
  218. data/test/renee-core/routing_test.rb +443 -0
  219. data/test/renee-core/test_helper.rb +4 -0
  220. data/test/renee-core/variable_type_test.rb +57 -0
  221. data/test/renee-render/render_test.rb +162 -0
  222. data/test/renee-render/test_helper.rb +9 -0
  223. data/test/renee-session/session_test.rb +31 -0
  224. data/test/renee-session/test_helper.rb +9 -0
  225. data/test/renee-url-generation/test_helper.rb +10 -0
  226. data/test/renee-url-generation/url_generation_test.rb +63 -0
  227. data/test/{blog_test.rb → renee/blog_test.rb} +10 -5
  228. data/test/renee/test_helper.rb +56 -0
  229. data/test/test_helper.rb +23 -10
  230. metadata +333 -156
  231. data/.yardopts +0 -6
@@ -0,0 +1,162 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ describe Renee::Render do
4
+ describe "#render" do
5
+ after { remove_views }
6
+
7
+ it "should allow rendering string with engine" do
8
+ mock_app {
9
+ path("/a") { get { inline! "<p>test</p>", :erb } }
10
+ path("/b") { get { inline! "<p><%= foo %></p>", :erb, :locals => { :foo => "bar" } } }
11
+ path("/c") { get { halt inline("<p><%= foo %></p>", :erb, :locals => { :foo => "bar" }) } }
12
+ }
13
+ get('/a')
14
+ assert_equal 200, response.status
15
+ assert_equal "<p>test</p>", response.body
16
+ get('/b')
17
+ assert_equal 200, response.status
18
+ assert_equal "<p>bar</p>", response.body
19
+ get('/c')
20
+ assert_equal 200, response.status
21
+ assert_equal "<p>bar</p>", response.body
22
+ end # string, with engine
23
+
24
+ it "should allow rendering template file with engine" do
25
+ create_view :index, "%p test", :haml
26
+ create_view :foo, "%p= foo", :haml
27
+ mock_app {
28
+ path("/a") { get { render! 'index', :haml } }
29
+ path("/b") { get { render! 'foo', :haml, :locals => { :foo => "bar" } } }
30
+ path("/c") { get { halt render('foo', :haml, :locals => { :foo => "bar" }) } }
31
+ }
32
+ get('/a')
33
+ assert_equal 200, response.status
34
+ assert_equal "<p>test</p>\n", response.body
35
+ get('/b')
36
+ assert_equal 200, response.status
37
+ assert_equal "<p>bar</p>\n", response.body
38
+ get('/c')
39
+ assert_equal 200, response.status
40
+ assert_equal "<p>bar</p>\n", response.body
41
+ end # template, with engine
42
+
43
+ it "should allow rendering template file with unspecified engine" do
44
+ create_view :index, "%p test", :haml
45
+ create_view :foo, "%p= foo", :haml
46
+ mock_app {
47
+ path("/a") { get { render! "index" } }
48
+ path("/b") { get { render! "foo.haml", :locals => { :foo => "bar" } } }
49
+ }
50
+ get('/a')
51
+ assert_equal 200, response.status
52
+ assert_equal "<p>test</p>\n", response.body
53
+ get('/b')
54
+ assert_equal 200, response.status
55
+ assert_equal "<p>bar</p>\n", response.body
56
+ end # template, unspecified engine
57
+
58
+ it "should allow rendering template file with engine and layout" do
59
+ create_view :index, "%p test", :haml
60
+ create_view :foo, "%p= foo", :haml
61
+ create_view :layout, "%div.wrapper= yield", :haml
62
+ mock_app {
63
+ path("/a") { get { render! 'index', :haml, :layout => :layout } }
64
+ path("/b") { get { render! 'foo', :layout => :layout, :locals => { :foo => "bar" } } }
65
+ }
66
+ get('/a')
67
+ assert_equal 200, response.status
68
+ assert_equal %Q{<div class='wrapper'><p>test</p></div>\n}, response.body
69
+ get('/b')
70
+ assert_equal 200, response.status
71
+ assert_equal %Q{<div class='wrapper'><p>bar</p></div>\n}, response.body
72
+ end # with engine and layout specified
73
+
74
+ it "should allow rendering template file with engine and layout" do
75
+ create_view :index, "%p test", :haml
76
+ create_view :foo, "%p= foo", :haml
77
+ create_view :layout, "%div.wrapper= yield", :haml
78
+ create_view :layout2, "%div.wrapper2= yield", :haml
79
+ mock_app {
80
+ path("/a") { get { render! 'index', :haml } }
81
+ path("/b") { get { render! 'foo', :layout => :layout2, :locals => { :foo => "bar" } } }
82
+ path("/c") { get { render! 'foo', :layout => nil, :locals => { :foo => "bar" } } }
83
+ }.setup {
84
+ default_layout :layout
85
+ }
86
+ get('/a')
87
+ assert_equal 200, response.status
88
+ assert_equal %Q{<div class='wrapper'><p>test</p></div>\n}, response.body
89
+ get('/b')
90
+ assert_equal 200, response.status
91
+ assert_equal %Q{<div class='wrapper2'><p>bar</p></div>\n}, response.body
92
+ get('/c')
93
+ assert_equal 200, response.status
94
+ assert_equal %Q{<p>bar</p>\n}, response.body
95
+ end # with engine and layout specified
96
+
97
+ it "should allow rendering template with different layout engines" do
98
+ create_view :index, "%p test", :haml
99
+ create_view :foo, "%p= foo", :haml
100
+ create_view :base, "<div class='wrapper'><%= yield %></div>", :erb
101
+ mock_app {
102
+ path("/a") { get { render! 'index', :haml, :layout => 'base', :layout_engine => :erb } }
103
+ path("/b") { get { render! 'foo', :haml, :layout => 'base', :locals => { :foo => "bar" } } }
104
+ }
105
+ get('/a')
106
+ assert_equal 200, response.status
107
+ assert_equal %Q{<div class='wrapper'><p>test</p>\n</div>}, response.body
108
+ get('/b')
109
+ assert_equal 200, response.status
110
+ assert_equal %Q{<div class='wrapper'><p>bar</p>\n</div>}, response.body
111
+ end # different layout and template engines
112
+
113
+ it "should fail properly rendering template file with invalid engine" do
114
+ create_view :index, "%p test", :haml
115
+ mock_app {
116
+ get { render! :fake, :index }
117
+ }
118
+ assert_raises(Renee::Render::TemplateNotFound) { get('/') }
119
+ end # template, invalid engine
120
+
121
+ it "should fail properly rendering missing template file with engine" do
122
+ create_view :index, "%p test", :haml
123
+ mock_app {
124
+ get { render! :haml, :foo }
125
+ }
126
+ assert_raises(Renee::Render::TemplateNotFound) { get('/') }
127
+ end # missing template, with engine
128
+
129
+ it "should allow partials to be rendered with locals" do
130
+ create_view "_foo", %Q{start\n%p= bar\nend}, :haml
131
+ create_view :index, %Q{%p test\n= partial("foo", :locals => { :bar => "banana"})\n%p bar}, :haml
132
+ mock_app {
133
+ path("/").get { render! "index" }
134
+ }
135
+ get('/')
136
+ assert_equal 200, response.status
137
+ assert_equal "<p>test</p>\nstart\n<p>banana</p>\nend\n<p>bar</p>\n", response.body
138
+ end # partials, locals
139
+
140
+ it "should allow partials to be rendered with object" do
141
+ create_view "_foo", %Q{start\n%p= foo\nend}, :haml
142
+ create_view :index, %Q{%p test\n= partial("foo", :object => "banana")\n%p bar}, :haml
143
+ mock_app {
144
+ path("/").get { render! "index" }
145
+ }
146
+ get('/')
147
+ assert_equal 200, response.status
148
+ assert_equal "<p>test</p>\nstart\n<p>banana</p>\nend\n<p>bar</p>\n", response.body
149
+ end # partials, object
150
+
151
+ it "should allow partials to be rendered with collection" do
152
+ create_view "_foo", %Q{%p= foo}, :haml
153
+ create_view :index, %Q{%p test\n= partial("foo", :collection => ["banana", "strawberry"])\n%p bar}, :haml
154
+ mock_app {
155
+ path("/").get { render! "index" }
156
+ }
157
+ get('/')
158
+ assert_equal 200, response.status
159
+ assert_equal "<p>test</p>\n<p>banana</p>\n\n<p>strawberry</p>\n<p>bar</p>\n", response.body
160
+ end # partials, collection
161
+ end
162
+ end
@@ -0,0 +1,9 @@
1
+ $: << File.expand_path('../../../renee/core/lib', __FILE__)
2
+ $: << File.expand_path('../../lib', __FILE__)
3
+ require 'renee/core'
4
+ require 'renee/render'
5
+
6
+ Renee::Core.send(:include, Renee::Render)
7
+
8
+ # Load shared test helpers
9
+ require File.expand_path('../../test_helper', __FILE__)
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ describe Renee::Session do
4
+ before do
5
+ @app = Class.new(Renee::Core) do
6
+ include Renee::Session
7
+ session :cookie
8
+ end
9
+ end
10
+
11
+ it "should create a session" do
12
+ @app.app do
13
+ session[:test] = 'hello'
14
+ path('test').get.halt "why #{session[:test]}"
15
+ end
16
+ get '/test'
17
+ assert_equal "why hello", response.body
18
+ end
19
+
20
+ it "should persist values across multiple calls" do
21
+ @app.app do
22
+ out = session[:test] || "first"
23
+ session[:test] = 'hello'
24
+ path('test').get.halt out
25
+ end
26
+ get '/test'
27
+ assert_equal "first", response.body
28
+ get '/test'
29
+ assert_equal "hello", response.body
30
+ end
31
+ end
@@ -0,0 +1,9 @@
1
+ $: << File.expand_path('../../../renee/core/lib', __FILE__)
2
+ $: << File.expand_path('../../lib', __FILE__)
3
+ require 'renee/core'
4
+ require 'renee/session'
5
+
6
+ Renee::Core.send(:include, Renee::Session)
7
+
8
+ # Load shared test helpers
9
+ require File.expand_path('../../test_helper', __FILE__)
@@ -0,0 +1,10 @@
1
+ $: << File.expand_path('../../lib', __FILE__)
2
+ require 'renee/url_generation'
3
+ # Load shared test helpers
4
+ require File.expand_path('../../test_helper', __FILE__)
5
+
6
+ class MiniTest::Spec
7
+ def generator
8
+ Class.new { include Renee::URLGeneration }
9
+ end
10
+ end
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require File.expand_path('../test_helper', __FILE__)
4
+
5
+ describe Renee::URLGeneration do
6
+ before do
7
+ @r = generator
8
+ end
9
+
10
+ it "should allow registration and generation of paths" do
11
+ @r.register(:test, '/test/time')
12
+ @r.register(:test_var, '/test/:id')
13
+ assert_equal '/test/time', @r.path(:test)
14
+ assert_equal '/test/123', @r.path(:test_var, :id => 123)
15
+ assert_equal '/test/123', @r.path(:test_var, 123)
16
+ end
17
+
18
+ it "should allow registration and generation of urls" do
19
+ @r.register(:test, 'http://localhost:8080/test/:time')
20
+ assert_equal 'http://localhost:8080/test/123', @r.url(:test, 123)
21
+ assert_equal 'http://localhost:8080/test/654', @r.url(:test, :time => '654')
22
+ end
23
+
24
+ it "should escape values when generating" do
25
+ @r.register(:test, '/:test')
26
+ assert_equal '/f%C3%B8%C3%B8', @r.path(:test, "føø")
27
+ end
28
+
29
+ it "should encode extra values as query string params" do
30
+ @r.register(:test, '/:test')
31
+ assert_equal '/foo?bar=baz', @r.path(:test, 'foo', :bar => :baz)
32
+ assert_equal '/foo?bar=baz', @r.path(:test, :test => 'foo', :bar => :baz)
33
+ end
34
+
35
+ it "should allow default values" do
36
+ @r.register(:test, '/:test', :test => 'foo')
37
+ assert_equal '/foo', @r.path(:test)
38
+ assert_equal '/baz', @r.path(:test, :test => 'baz')
39
+ end
40
+
41
+ it "should include default vars as query string vars" do
42
+ @r.register(:test, '/:foo', :test => 'foo')
43
+ assert_equal '/foo?test=foo', @r.path(:test, 'foo')
44
+ assert_equal '/foo?test=foo', @r.path(:test, :foo => 'foo')
45
+ end
46
+
47
+ it "should allow #prefix calls for nesting common path parts" do
48
+ r = @r
49
+ r.prefix('/foo') do
50
+ r.register(:foo_bar, '/bar')
51
+ end
52
+ assert_equal '/foo/bar', r.path(:foo_bar)
53
+ end
54
+
55
+ it "should allow passing defaults and overriding them on a per-register basis" do
56
+ @r.prefix('/foo', :bar => 'baz') do
57
+ register(:foo_bar, '/bar', :bar => 'bam')
58
+ register(:foo_baz, '/baz')
59
+ end
60
+ assert_equal '/foo/bar?bar=bam', @r.path(:foo_bar)
61
+ assert_equal '/foo/baz?bar=baz', @r.path(:foo_baz)
62
+ end
63
+ end
@@ -19,7 +19,8 @@ describe "Blog example" do
19
19
 
20
20
  it "should allow a POST to /" do
21
21
  post('/', :title => 'my title', :contents => 'hey hey hey')
22
- assert_equal 201, response.status
22
+ assert_equal 302, response.status
23
+ assert_equal '/1', response.headers['Location']
23
24
  get('/')
24
25
  assert_equal 200, response.status
25
26
  assert_equal " <p>
@@ -42,7 +43,8 @@ describe "Blog example" do
42
43
  it "should allow a PUT to /" do
43
44
  post('/', :title => 'my title', :contents => 'hey hey hey')
44
45
  put('/1', :title => 'my real title', :contents => 'hey hey hey')
45
- assert_equal 200, response.status
46
+ assert_equal 302, response.status
47
+ assert_equal '/1', response.headers['Location']
46
48
  get('/')
47
49
  assert_equal 200, response.status
48
50
  assert_equal " <p>
@@ -64,12 +66,15 @@ describe "Blog example" do
64
66
 
65
67
  it "should allow a DELETE to /" do
66
68
  post('/', :title => 'my title', :contents => 'hey hey hey')
67
- assert_equal 201, response.status
69
+ assert_equal 302, response.status
70
+ assert_equal '/1', response.headers['Location']
71
+ url = response.headers['Location']
68
72
  get('/.json')
69
73
  assert_equal 200, response.status
70
74
  assert_equal "[{\"contents\":\"hey hey hey\"}]", response.body
71
- delete('/1')
72
- assert_equal 200, response.status
75
+ delete(url)
76
+ assert_equal 302, response.status
77
+ assert_equal '/', response.headers['Location']
73
78
  get('/.json')
74
79
  assert_equal 200, response.status
75
80
  assert_equal "[]", response.body
@@ -0,0 +1,56 @@
1
+ require 'rubygems'
2
+ gem 'minitest'
3
+ require 'minitest/autorun'
4
+ gem 'rack-test'
5
+ require 'rack/test'
6
+ $: << File.expand_path('../../lib', __FILE__)
7
+ require 'renee'
8
+
9
+ class ColoredIO
10
+ ESC = "\e["
11
+ NND = "#{ESC}0m"
12
+
13
+ def initialize(io)
14
+ @io = io
15
+ end
16
+
17
+ def print(o)
18
+ case o
19
+ when "."
20
+ @io.send(:print, "#{ESC}32m#{o}#{NND}")
21
+ when "E"
22
+ @io.send(:print, "#{ESC}33m#{o}#{NND}")
23
+ when "F"
24
+ @io.send(:print, "#{ESC}31m#{o}#{NND}")
25
+ else
26
+ @io.send(:print, o)
27
+ end
28
+ end
29
+
30
+ def puts(*o)
31
+ super
32
+ end
33
+ end
34
+
35
+ MiniTest::Unit.output = ColoredIO.new(MiniTest::Unit.output)
36
+
37
+ ## TEST HELPERS
38
+ class MiniTest::Spec
39
+ include Rack::Test::Methods
40
+
41
+ def default_views_path
42
+ File.dirname(__FILE__) + "/views"
43
+ end
44
+
45
+ def blog_app
46
+ file = File.expand_path("../../../examples/blog/config.ru", __FILE__)
47
+ app = Rack::Builder.parse_file(file).first
48
+ @app = Rack::Lint.new(app)
49
+ end
50
+
51
+ def app
52
+ @app
53
+ end
54
+
55
+ alias :response :last_response
56
+ end
data/test/test_helper.rb CHANGED
@@ -3,10 +3,6 @@ gem 'minitest'
3
3
  require 'minitest/autorun'
4
4
  gem 'rack-test'
5
5
  require 'rack/test'
6
- $: << File.expand_path('../../../renee_core/lib', __FILE__)
7
- $: << File.expand_path('../../../renee_render/lib', __FILE__)
8
- $: << File.expand_path('../../lib', __FILE__)
9
- require 'renee'
10
6
 
11
7
  class ColoredIO
12
8
  ESC = "\e["
@@ -40,18 +36,35 @@ MiniTest::Unit.output = ColoredIO.new(MiniTest::Unit.output)
40
36
  class MiniTest::Spec
41
37
  include Rack::Test::Methods
42
38
 
43
- def default_views_path
44
- File.dirname(__FILE__) + "/views"
39
+ # Sets up a Sinatra::Base subclass defined with the block
40
+ # given. Used in setup or individual spec methods to establish
41
+ # the application.
42
+ def mock_app(&block)
43
+ path = default_views_path
44
+ @app = Renee.core(&block).setup {
45
+ views_path(path) if respond_to?(:views_path)
46
+ }
45
47
  end
46
48
 
47
- def blog_app
48
- file = File.join(File.dirname(__FILE__), '..', 'examples', 'blog', 'config.ru')
49
- Rack::Lint.new(Rack::Builder.parse_file(file)[0])
49
+ def default_views_path
50
+ File.dirname(__FILE__) + "/views"
50
51
  end
51
52
 
52
53
  def app
53
- @app
54
+ Rack::Lint.new(@app)
54
55
  end
55
56
 
56
57
  alias :response :last_response
58
+
59
+ # create_view :index, "test", :haml
60
+ def create_view(name, content, engine=:erb)
61
+ FileUtils.mkdir_p(default_views_path)
62
+ file = File.join(default_views_path, name.to_s + ".#{engine}")
63
+ File.open(file, 'w') { |io| io.write content }
64
+ end
65
+
66
+ # Removes the view folder after the test
67
+ def remove_views
68
+ FileUtils.rm_rf(File.dirname(__FILE__) + "/views")
69
+ end
57
70
  end
metadata CHANGED
@@ -1,233 +1,410 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: renee
3
- version: !ruby/object:Gem::Version
4
- hash: 5
5
- prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 11
10
- version: 0.3.11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0.pre1
5
+ prerelease: 6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Josh Hull
14
9
  - Nathan Esquenazi
15
10
  - Arthur Chiu
16
11
  autorequire:
17
12
  bindir: bin
18
13
  cert_chain: []
19
-
20
- date: 2011-12-22 00:00:00 Z
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
14
+ date: 2012-01-23 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rack
18
+ requirement: &70348684672460 !ruby/object:Gem::Requirement
24
19
  none: false
25
- requirements:
26
- - - "="
27
- - !ruby/object:Gem::Version
28
- hash: 5
29
- segments:
30
- - 0
31
- - 3
32
- - 11
33
- version: 0.3.11
34
- requirement: *id001
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 1.3.0
35
24
  type: :runtime
36
25
  prerelease: false
37
- name: renee-core
38
- - !ruby/object:Gem::Dependency
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: *70348684672460
27
+ - !ruby/object:Gem::Dependency
28
+ name: tilt
29
+ requirement: &70348684671900 !ruby/object:Gem::Requirement
40
30
  none: false
41
- requirements:
42
- - - "="
43
- - !ruby/object:Gem::Version
44
- hash: 5
45
- segments:
46
- - 0
47
- - 3
48
- - 11
49
- version: 0.3.11
50
- requirement: *id002
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 1.3.3
51
35
  type: :runtime
52
36
  prerelease: false
53
- name: renee-render
54
- - !ruby/object:Gem::Dependency
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
37
+ version_requirements: *70348684671900
38
+ - !ruby/object:Gem::Dependency
39
+ name: callsite
40
+ requirement: &70348684671340 !ruby/object:Gem::Requirement
56
41
  none: false
57
- requirements:
42
+ requirements:
58
43
  - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 21
61
- segments:
62
- - 2
63
- - 6
64
- - 1
65
- version: 2.6.1
66
- requirement: *id003
67
- type: :development
44
+ - !ruby/object:Gem::Version
45
+ version: 0.0.6
46
+ type: :runtime
68
47
  prerelease: false
48
+ version_requirements: *70348684671340
49
+ - !ruby/object:Gem::Dependency
69
50
  name: minitest
70
- - !ruby/object:Gem::Dependency
71
- version_requirements: &id004 !ruby/object:Gem::Requirement
51
+ requirement: &70348684670800 !ruby/object:Gem::Requirement
72
52
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- requirement: *id004
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 2.6.1
81
57
  type: :development
82
58
  prerelease: false
59
+ version_requirements: *70348684670800
60
+ - !ruby/object:Gem::Dependency
83
61
  name: rake
84
- - !ruby/object:Gem::Dependency
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
62
+ requirement: &70348684670240 !ruby/object:Gem::Requirement
86
63
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
94
- requirement: *id005
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
95
68
  type: :development
96
69
  prerelease: false
70
+ version_requirements: *70348684670240
71
+ - !ruby/object:Gem::Dependency
97
72
  name: bundler
98
- - !ruby/object:Gem::Dependency
99
- version_requirements: &id006 !ruby/object:Gem::Requirement
73
+ requirement: &70348684669300 !ruby/object:Gem::Requirement
100
74
  none: false
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- hash: 11
105
- segments:
106
- - 0
107
- - 5
108
- - 0
109
- version: 0.5.0
110
- requirement: *id006
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
111
79
  type: :development
112
80
  prerelease: false
81
+ version_requirements: *70348684669300
82
+ - !ruby/object:Gem::Dependency
113
83
  name: rack-test
114
- - !ruby/object:Gem::Dependency
115
- version_requirements: &id007 !ruby/object:Gem::Requirement
84
+ requirement: &70348684668700 !ruby/object:Gem::Requirement
116
85
  none: false
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- hash: 7
121
- segments:
122
- - 2
123
- - 2
124
- - 0
125
- version: 2.2.0
126
- requirement: *id007
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.5.0
127
90
  type: :development
128
91
  prerelease: false
92
+ version_requirements: *70348684668700
93
+ - !ruby/object:Gem::Dependency
129
94
  name: haml
130
- - !ruby/object:Gem::Dependency
131
- version_requirements: &id008 !ruby/object:Gem::Requirement
95
+ requirement: &70348684668200 !ruby/object:Gem::Requirement
132
96
  none: false
133
- requirements:
134
- - - ">="
135
- - !ruby/object:Gem::Version
136
- hash: 3
137
- segments:
138
- - 0
139
- version: "0"
140
- requirement: *id008
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: 2.2.0
141
101
  type: :development
142
102
  prerelease: false
103
+ version_requirements: *70348684668200
104
+ - !ruby/object:Gem::Dependency
143
105
  name: json
144
- - !ruby/object:Gem::Dependency
145
- version_requirements: &id009 !ruby/object:Gem::Requirement
106
+ requirement: &70348684667640 !ruby/object:Gem::Requirement
146
107
  none: false
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- hash: 3
151
- segments:
152
- - 0
153
- version: "0"
154
- requirement: *id009
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
155
112
  type: :development
156
113
  prerelease: false
157
- name: yard
158
- - !ruby/object:Gem::Dependency
159
- version_requirements: &id010 !ruby/object:Gem::Requirement
114
+ version_requirements: *70348684667640
115
+ - !ruby/object:Gem::Dependency
116
+ name: shotgun
117
+ requirement: &70348684666920 !ruby/object:Gem::Requirement
160
118
  none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
166
- - 0
167
- version: "0"
168
- requirement: *id010
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
169
123
  type: :development
170
124
  prerelease: false
171
- name: shotgun
125
+ version_requirements: *70348684666920
172
126
  description: The super-friendly web framework.
173
- email:
127
+ email:
174
128
  - joshbuddy@gmail.com
175
129
  - nesquena@gmail.com
176
130
  - mr.arthur.chiu@gmail.com
177
131
  executables: []
178
-
179
132
  extensions: []
180
-
181
133
  extra_rdoc_files: []
182
-
183
- files:
184
- - .yardopts
134
+ files:
135
+ - Gemfile
136
+ - Gemfile-renee
137
+ - Gemfile-renee-core
138
+ - Gemfile-renee-render
139
+ - Gemfile-renee-session
140
+ - Gemfile-renee-url-generation
141
+ - MIT-LICENSE.txt
142
+ - README-renee-core.md
143
+ - README-renee-render.md
144
+ - README-renee-session.md
145
+ - README-renee-url-generation.md
185
146
  - README.md
186
147
  - Rakefile
148
+ - TODO.txt
149
+ - config.ru
187
150
  - examples/blog/blog.rb
188
151
  - examples/blog/config.ru
189
152
  - examples/blog/views/edit.erb
190
153
  - examples/blog/views/index.erb
191
154
  - examples/blog/views/show.erb
192
155
  - lib/renee.rb
156
+ - lib/renee/core.rb
157
+ - lib/renee/core/chaining.rb
158
+ - lib/renee/core/env_accessors.rb
159
+ - lib/renee/core/exceptions.rb
160
+ - lib/renee/core/matcher.rb
161
+ - lib/renee/core/plugins.rb
162
+ - lib/renee/core/rack_interaction.rb
163
+ - lib/renee/core/request_context.rb
164
+ - lib/renee/core/responding.rb
165
+ - lib/renee/core/response.rb
166
+ - lib/renee/core/routing.rb
167
+ - lib/renee/core/transform.rb
168
+ - lib/renee/render.rb
169
+ - lib/renee/session.rb
170
+ - lib/renee/url_generation.rb
171
+ - lib/renee/util.rb
193
172
  - lib/renee/version.rb
173
+ - plan.txt
174
+ - renee-core.gemspec
175
+ - renee-render.gemspec
176
+ - renee-session.gemspec
177
+ - renee-url-generation.gemspec
194
178
  - renee.gemspec
195
- - test/blog_test.rb
179
+ - site/MIT-LICENSE.txt
180
+ - site/public/css/app.css
181
+ - site/public/docs/renee-core/Renee.html
182
+ - site/public/docs/renee-core/Renee/Core.html
183
+ - site/public/docs/renee-core/Renee/Core/Chaining.html
184
+ - site/public/docs/renee-core/Renee/Core/ClassMethods.html
185
+ - site/public/docs/renee-core/Renee/Core/ClientError.html
186
+ - site/public/docs/renee-core/Renee/Core/EnvAccessors.html
187
+ - site/public/docs/renee-core/Renee/Core/EnvAccessors/ClassMethods.html
188
+ - site/public/docs/renee-core/Renee/Core/Matcher.html
189
+ - site/public/docs/renee-core/Renee/Core/Plugins.html
190
+ - site/public/docs/renee-core/Renee/Core/RackInteraction.html
191
+ - site/public/docs/renee-core/Renee/Core/RequestContext.html
192
+ - site/public/docs/renee-core/Renee/Core/Responding.html
193
+ - site/public/docs/renee-core/Renee/Core/Response.html
194
+ - site/public/docs/renee-core/Renee/Core/Routing.html
195
+ - site/public/docs/renee-core/Renee/Core/Transform.html
196
+ - site/public/docs/renee-core/Renee/Core/URLGeneration.html
197
+ - site/public/docs/renee-core/_index.html
198
+ - site/public/docs/renee-core/class_list.html
199
+ - site/public/docs/renee-core/css/common.css
200
+ - site/public/docs/renee-core/css/full_list.css
201
+ - site/public/docs/renee-core/css/style.css
202
+ - site/public/docs/renee-core/file.README-renee-core.html
203
+ - site/public/docs/renee-core/file.README.html
204
+ - site/public/docs/renee-core/file_list.html
205
+ - site/public/docs/renee-core/frames.html
206
+ - site/public/docs/renee-core/index.html
207
+ - site/public/docs/renee-core/js/app.js
208
+ - site/public/docs/renee-core/js/full_list.js
209
+ - site/public/docs/renee-core/js/jquery.js
210
+ - site/public/docs/renee-core/method_list.html
211
+ - site/public/docs/renee-core/top-level-namespace.html
212
+ - site/public/docs/renee-render/Renee.html
213
+ - site/public/docs/renee-render/Renee/Core.html
214
+ - site/public/docs/renee-render/Renee/Core/Chaining.html
215
+ - site/public/docs/renee-render/Renee/Core/ClassMethods.html
216
+ - site/public/docs/renee-render/Renee/Core/ClientError.html
217
+ - site/public/docs/renee-render/Renee/Core/EnvAccessors.html
218
+ - site/public/docs/renee-render/Renee/Core/EnvAccessors/ClassMethods.html
219
+ - site/public/docs/renee-render/Renee/Core/Matcher.html
220
+ - site/public/docs/renee-render/Renee/Core/RackInteraction.html
221
+ - site/public/docs/renee-render/Renee/Core/RequestContext.html
222
+ - site/public/docs/renee-render/Renee/Core/Responding.html
223
+ - site/public/docs/renee-render/Renee/Core/Response.html
224
+ - site/public/docs/renee-render/Renee/Core/Routing.html
225
+ - site/public/docs/renee-render/Renee/Core/Transform.html
226
+ - site/public/docs/renee-render/Renee/Core/URLGeneration.html
227
+ - site/public/docs/renee-render/Renee/Render.html
228
+ - site/public/docs/renee-render/Renee/Render/ClassMethods.html
229
+ - site/public/docs/renee-render/Renee/Render/TemplateNotFound.html
230
+ - site/public/docs/renee-render/_index.html
231
+ - site/public/docs/renee-render/class_list.html
232
+ - site/public/docs/renee-render/css/common.css
233
+ - site/public/docs/renee-render/css/full_list.css
234
+ - site/public/docs/renee-render/css/style.css
235
+ - site/public/docs/renee-render/file.README-renee-render.html
236
+ - site/public/docs/renee-render/file.README.html
237
+ - site/public/docs/renee-render/file_list.html
238
+ - site/public/docs/renee-render/frames.html
239
+ - site/public/docs/renee-render/index.html
240
+ - site/public/docs/renee-render/js/app.js
241
+ - site/public/docs/renee-render/js/full_list.js
242
+ - site/public/docs/renee-render/js/jquery.js
243
+ - site/public/docs/renee-render/method_list.html
244
+ - site/public/docs/renee-render/top-level-namespace.html
245
+ - site/public/docs/renee-session/Renee.html
246
+ - site/public/docs/renee-session/Renee/Session.html
247
+ - site/public/docs/renee-session/Renee/Session/ClassMethods.html
248
+ - site/public/docs/renee-session/_index.html
249
+ - site/public/docs/renee-session/class_list.html
250
+ - site/public/docs/renee-session/css/common.css
251
+ - site/public/docs/renee-session/css/full_list.css
252
+ - site/public/docs/renee-session/css/style.css
253
+ - site/public/docs/renee-session/file.README-renee-core.html
254
+ - site/public/docs/renee-session/file.README-renee-session.html
255
+ - site/public/docs/renee-session/file_list.html
256
+ - site/public/docs/renee-session/frames.html
257
+ - site/public/docs/renee-session/index.html
258
+ - site/public/docs/renee-session/js/app.js
259
+ - site/public/docs/renee-session/js/full_list.js
260
+ - site/public/docs/renee-session/js/jquery.js
261
+ - site/public/docs/renee-session/method_list.html
262
+ - site/public/docs/renee-session/top-level-namespace.html
263
+ - site/public/docs/renee-url-generation/Renee.html
264
+ - site/public/docs/renee-url-generation/Renee/Core.html
265
+ - site/public/docs/renee-url-generation/Renee/Core/Chaining.html
266
+ - site/public/docs/renee-url-generation/Renee/Core/ClassMethods.html
267
+ - site/public/docs/renee-url-generation/Renee/Core/ClientError.html
268
+ - site/public/docs/renee-url-generation/Renee/Core/EnvAccessors.html
269
+ - site/public/docs/renee-url-generation/Renee/Core/EnvAccessors/ClassMethods.html
270
+ - site/public/docs/renee-url-generation/Renee/Core/Matcher.html
271
+ - site/public/docs/renee-url-generation/Renee/Core/Plugins.html
272
+ - site/public/docs/renee-url-generation/Renee/Core/RackInteraction.html
273
+ - site/public/docs/renee-url-generation/Renee/Core/RequestContext.html
274
+ - site/public/docs/renee-url-generation/Renee/Core/Responding.html
275
+ - site/public/docs/renee-url-generation/Renee/Core/Response.html
276
+ - site/public/docs/renee-url-generation/Renee/Core/Routing.html
277
+ - site/public/docs/renee-url-generation/Renee/Core/Transform.html
278
+ - site/public/docs/renee-url-generation/_index.html
279
+ - site/public/docs/renee-url-generation/class_list.html
280
+ - site/public/docs/renee-url-generation/css/common.css
281
+ - site/public/docs/renee-url-generation/css/full_list.css
282
+ - site/public/docs/renee-url-generation/css/style.css
283
+ - site/public/docs/renee-url-generation/file.README-renee-url-generation.html
284
+ - site/public/docs/renee-url-generation/file_list.html
285
+ - site/public/docs/renee-url-generation/frames.html
286
+ - site/public/docs/renee-url-generation/index.html
287
+ - site/public/docs/renee-url-generation/js/app.js
288
+ - site/public/docs/renee-url-generation/js/full_list.js
289
+ - site/public/docs/renee-url-generation/js/jquery.js
290
+ - site/public/docs/renee-url-generation/method_list.html
291
+ - site/public/docs/renee-url-generation/top-level-namespace.html
292
+ - site/public/docs/renee/Renee.html
293
+ - site/public/docs/renee/Renee/Application.html
294
+ - site/public/docs/renee/Renee/Core.html
295
+ - site/public/docs/renee/Renee/Core/Chaining.html
296
+ - site/public/docs/renee/Renee/Core/ClassMethods.html
297
+ - site/public/docs/renee/Renee/Core/ClientError.html
298
+ - site/public/docs/renee/Renee/Core/EnvAccessors.html
299
+ - site/public/docs/renee/Renee/Core/EnvAccessors/ClassMethods.html
300
+ - site/public/docs/renee/Renee/Core/Matcher.html
301
+ - site/public/docs/renee/Renee/Core/Plugins.html
302
+ - site/public/docs/renee/Renee/Core/RackInteraction.html
303
+ - site/public/docs/renee/Renee/Core/RequestContext.html
304
+ - site/public/docs/renee/Renee/Core/Responding.html
305
+ - site/public/docs/renee/Renee/Core/Response.html
306
+ - site/public/docs/renee/Renee/Core/Routing.html
307
+ - site/public/docs/renee/Renee/Core/Transform.html
308
+ - site/public/docs/renee/Renee/Core/URLGeneration.html
309
+ - site/public/docs/renee/Renee/Render.html
310
+ - site/public/docs/renee/Renee/Render/ClassMethods.html
311
+ - site/public/docs/renee/Renee/Render/TemplateNotFound.html
312
+ - site/public/docs/renee/Renee/Session.html
313
+ - site/public/docs/renee/Renee/Session/ClassMethods.html
314
+ - site/public/docs/renee/Renee/URLGeneration.html
315
+ - site/public/docs/renee/Renee/URLGeneration/ClassMethods.html
316
+ - site/public/docs/renee/Renee/Util.html
317
+ - site/public/docs/renee/_index.html
318
+ - site/public/docs/renee/class_list.html
319
+ - site/public/docs/renee/css/common.css
320
+ - site/public/docs/renee/css/full_list.css
321
+ - site/public/docs/renee/css/style.css
322
+ - site/public/docs/renee/file.README.html
323
+ - site/public/docs/renee/file_list.html
324
+ - site/public/docs/renee/frames.html
325
+ - site/public/docs/renee/index.html
326
+ - site/public/docs/renee/js/app.js
327
+ - site/public/docs/renee/js/full_list.js
328
+ - site/public/docs/renee/js/jquery.js
329
+ - site/public/docs/renee/method_list.html
330
+ - site/public/docs/renee/top-level-namespace.html
331
+ - site/public/img/favicon.ico
332
+ - site/public/img/reneeclean.png
333
+ - site/public/img/russiangithub.png
334
+ - site/public/img/stoneposter.png
335
+ - site/public/img/vospit.jpeg
336
+ - site/views/chaining.md
337
+ - site/views/index.md
338
+ - site/views/layouts/app.haml
339
+ - site/views/rack-integration.md
340
+ - site/views/responding.md
341
+ - site/views/route-generation.md
342
+ - site/views/routing.md
343
+ - site/views/settings.md
344
+ - site/views/team-renee.md
345
+ - site/views/tutorial.md
346
+ - site/views/variable-types.md
347
+ - test.watchr
348
+ - test/renee-core/chaining_test.rb
349
+ - test/renee-core/env_accessors_test.rb
350
+ - test/renee-core/include_test.rb
351
+ - test/renee-core/request_context_test.rb
352
+ - test/renee-core/responding_test.rb
353
+ - test/renee-core/routing_test.rb
354
+ - test/renee-core/test_helper.rb
355
+ - test/renee-core/variable_type_test.rb
356
+ - test/renee-render/render_test.rb
357
+ - test/renee-render/test_helper.rb
358
+ - test/renee-session/session_test.rb
359
+ - test/renee-session/test_helper.rb
360
+ - test/renee-url-generation/test_helper.rb
361
+ - test/renee-url-generation/url_generation_test.rb
362
+ - test/renee/blog_test.rb
363
+ - test/renee/test_helper.rb
196
364
  - test/test_helper.rb
197
365
  homepage: http://reneerb.com
198
366
  licenses: []
199
-
200
367
  post_install_message:
201
368
  rdoc_options: []
202
-
203
- require_paths:
369
+ require_paths:
204
370
  - lib
205
- required_ruby_version: !ruby/object:Gem::Requirement
371
+ required_ruby_version: !ruby/object:Gem::Requirement
206
372
  none: false
207
- requirements:
208
- - - ">="
209
- - !ruby/object:Gem::Version
210
- hash: 3
211
- segments:
373
+ requirements:
374
+ - - ! '>='
375
+ - !ruby/object:Gem::Version
376
+ version: '0'
377
+ segments:
212
378
  - 0
213
- version: "0"
214
- required_rubygems_version: !ruby/object:Gem::Requirement
379
+ hash: -1971434403675291859
380
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
381
  none: false
216
- requirements:
217
- - - ">="
218
- - !ruby/object:Gem::Version
219
- hash: 3
220
- segments:
221
- - 0
222
- version: "0"
382
+ requirements:
383
+ - - ! '>'
384
+ - !ruby/object:Gem::Version
385
+ version: 1.3.1
223
386
  requirements: []
224
-
225
387
  rubyforge_project: renee
226
- rubygems_version: 1.8.10
388
+ rubygems_version: 1.8.15
227
389
  signing_key:
228
390
  specification_version: 3
229
391
  summary: The super-friendly web framework
230
- test_files:
231
- - test/blog_test.rb
392
+ test_files:
393
+ - test/renee-core/chaining_test.rb
394
+ - test/renee-core/env_accessors_test.rb
395
+ - test/renee-core/include_test.rb
396
+ - test/renee-core/request_context_test.rb
397
+ - test/renee-core/responding_test.rb
398
+ - test/renee-core/routing_test.rb
399
+ - test/renee-core/test_helper.rb
400
+ - test/renee-core/variable_type_test.rb
401
+ - test/renee-render/render_test.rb
402
+ - test/renee-render/test_helper.rb
403
+ - test/renee-session/session_test.rb
404
+ - test/renee-session/test_helper.rb
405
+ - test/renee-url-generation/test_helper.rb
406
+ - test/renee-url-generation/url_generation_test.rb
407
+ - test/renee/blog_test.rb
408
+ - test/renee/test_helper.rb
232
409
  - test/test_helper.rb
233
410
  has_rdoc: