renee 0.3.11 → 0.4.0.pre1

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 (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: