rango 0.2.3 → 0.2.4.1

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 (281) hide show
  1. data/.gitignore +2 -2
  2. data/CHANGELOG +9 -0
  3. data/CONTRIBUTORS +0 -1
  4. data/Gemfile +2 -6
  5. data/lib/rango.rb +10 -7
  6. data/lib/rango/cli.rb +1 -1
  7. data/lib/rango/contrib/pagination/adapters/sequel.rb +6 -2
  8. data/lib/rango/controller.rb +24 -20
  9. data/lib/rango/core_ext.rb +54 -59
  10. data/lib/rango/exceptions.rb +2 -2
  11. data/lib/rango/gv/router.rb +1 -1
  12. data/lib/rango/gv/scaffolding.rb +0 -1
  13. data/lib/rango/mailer.rb +20 -40
  14. data/lib/rango/mixins/action_args.rb +8 -7
  15. data/lib/rango/mixins/filters.rb +1 -0
  16. data/lib/rango/mixins/message.rb +37 -33
  17. data/lib/rango/mixins/rack-flash.rb +44 -0
  18. data/{benchmarks/stubs/merb-app/spec/spec.opts → lib/rango/orm/tasks/ripple.nake} +0 -0
  19. data/lib/rango/rack/request.rb +12 -15
  20. data/lib/rango/router.rb +7 -3
  21. data/lib/rango/router/adapters/crudtree.rb +8 -1
  22. data/lib/rango/router/adapters/rack_mount.rb +5 -1
  23. data/lib/rango/router/adapters/usher.rb +5 -2
  24. data/lib/rango/stacks/controller.rb +0 -1
  25. data/lib/rango/templates/exts/haml.rb +14 -15
  26. data/lib/rango/templates/exts/tilt.rb +16 -23
  27. data/lib/rango/templates/helpers.rb +10 -1
  28. data/lib/rango/templates/template.rb +4 -4
  29. data/lib/rango/utils.rb +4 -2
  30. data/lib/rango/version.rb +5 -0
  31. data/rango.gemspec +3 -2
  32. data/{benchmarks/stubs/merb-core/spec/spec.opts → spec/rango/cli_spec.rb} +0 -0
  33. data/{benchmarks/stubs/rails/log/development.log → spec/rango/contrib/pagination/adapters/sequel_spec.rb} +0 -0
  34. data/spec/rango/controller_spec.rb +12 -0
  35. data/spec/rango/core_ext_spec.rb +61 -0
  36. data/spec/rango/environments_spec.rb +1 -0
  37. data/spec/rango/exceptions_spec.rb +1 -28
  38. data/{benchmarks/stubs/rails/log/production.log → spec/rango/mailer_spec.rb} +0 -0
  39. data/spec/rango/mixins/action_args_spec.rb +0 -4
  40. data/spec/rango/mixins/message_spec.rb +20 -10
  41. data/{benchmarks/stubs/rails/log/server.log → spec/rango/mixins/rack-flash_spec.rb} +0 -0
  42. data/spec/rango/rack/request_spec.rb +11 -0
  43. data/{benchmarks/stubs/rails/log/test.log → spec/rango/router/adapters/crudtree_spec.rb} +0 -0
  44. data/spec/rango/templates/helpers_spec.rb +19 -5
  45. data/spec/rango/templates/template_spec.rb +1 -20
  46. data/{benchmarks/stubs/rails/public/favicon.ico → spec/rango/version_spec.rb} +0 -0
  47. data/spec/spec_helper.rb +18 -4
  48. data/stubs/stack/content/%name%.gemspec.rbt +0 -0
  49. data/stubs/stack/content/%name%.pre.gemspec.rbt +1 -2
  50. data/stubs/stack/content/.gitignore +2 -5
  51. data/stubs/stack/content/Gemfile.rbt +23 -46
  52. data/stubs/stack/content/config.ru.rbt +9 -21
  53. data/stubs/stack/content/init.rb.rbt +10 -10
  54. data/stubs/stack/content/lib/%name%.rb.rbt +37 -4
  55. data/stubs/stack/content/lib/%name%/initializers/01_database.rb.rbt +16 -0
  56. data/stubs/stack/content/lib/%name%/initializers/05_templates.rb.rbt +13 -0
  57. data/stubs/stack/content/lib/%name%/initializers/10_pagination.rb.rbt +8 -0
  58. data/stubs/stack/content/lib/%name%/initializers/15_warden.rb.rbt +26 -0
  59. data/stubs/stack/content/lib/%name%/initializers/45_middlewares.rb.rbt +17 -0
  60. data/stubs/stack/content/lib/%name%/initializers/50_router.rb.rbt +7 -0
  61. data/stubs/stack/content/lib/%name%/{initializers/urls.rb.rbt → urls.rb.rbt} +3 -0
  62. data/stubs/stack/content/lib/%name%/views.rb.rbt +4 -1
  63. data/stubs/stack/content/templates/index.html.haml +1 -1
  64. data/{gems → vendor}/cache/abstract-1.0.0.gem +0 -0
  65. data/vendor/cache/code-cleaner-0.8.2.gem +0 -0
  66. data/{gems → vendor}/cache/erubis-2.6.5.gem +0 -0
  67. data/vendor/cache/haml-2.2.21.gem +0 -0
  68. data/{gems → vendor}/cache/nake-0.0.8.gem +0 -0
  69. data/vendor/cache/rack-1.1.0.gem +0 -0
  70. data/{gems → vendor}/cache/rspec-1.3.0.gem +0 -0
  71. data/vendor/cache/term-ansicolor-1.0.5.gem +0 -0
  72. data/vendor/cache/tilt-0.8.gem +0 -0
  73. metadata +63 -239
  74. data/benchmarks/stubs/merb-app/.gitignore +0 -21
  75. data/benchmarks/stubs/merb-app/Rakefile +0 -35
  76. data/benchmarks/stubs/merb-app/app/controllers/application.rb +0 -4
  77. data/benchmarks/stubs/merb-app/app/controllers/exceptions.rb +0 -15
  78. data/benchmarks/stubs/merb-app/app/helpers/global_helpers.rb +0 -7
  79. data/benchmarks/stubs/merb-app/app/models/user.rb +0 -19
  80. data/benchmarks/stubs/merb-app/app/views/exceptions/not_acceptable.html.erb +0 -63
  81. data/benchmarks/stubs/merb-app/app/views/exceptions/not_found.html.erb +0 -47
  82. data/benchmarks/stubs/merb-app/app/views/layout/application.html.erb +0 -12
  83. data/benchmarks/stubs/merb-app/autotest/discover.rb +0 -4
  84. data/benchmarks/stubs/merb-app/autotest/merb.rb +0 -154
  85. data/benchmarks/stubs/merb-app/autotest/merb_rspec.rb +0 -167
  86. data/benchmarks/stubs/merb-app/config/database.yml +0 -33
  87. data/benchmarks/stubs/merb-app/config/dependencies.rb +0 -36
  88. data/benchmarks/stubs/merb-app/config/environments/development.rb +0 -17
  89. data/benchmarks/stubs/merb-app/config/environments/production.rb +0 -12
  90. data/benchmarks/stubs/merb-app/config/environments/rake.rb +0 -13
  91. data/benchmarks/stubs/merb-app/config/environments/staging.rb +0 -12
  92. data/benchmarks/stubs/merb-app/config/environments/test.rb +0 -14
  93. data/benchmarks/stubs/merb-app/config/init.rb +0 -26
  94. data/benchmarks/stubs/merb-app/config/rack.rb +0 -13
  95. data/benchmarks/stubs/merb-app/config/router.rb +0 -46
  96. data/benchmarks/stubs/merb-app/doc/rdoc/generators/merb_generator.rb +0 -1364
  97. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/api_grease.js +0 -640
  98. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/index.html.erb +0 -37
  99. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/merb.css +0 -252
  100. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/merb.rb +0 -353
  101. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/merb_doc_styles.css +0 -492
  102. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/prototype.js +0 -2515
  103. data/benchmarks/stubs/merb-app/merb/merb-auth/setup.rb +0 -46
  104. data/benchmarks/stubs/merb-app/merb/merb-auth/strategies.rb +0 -13
  105. data/benchmarks/stubs/merb-app/merb/session/session.rb +0 -11
  106. data/benchmarks/stubs/merb-app/public/.htaccess +0 -17
  107. data/benchmarks/stubs/merb-app/public/favicon.ico +0 -0
  108. data/benchmarks/stubs/merb-app/public/images/merb.jpg +0 -0
  109. data/benchmarks/stubs/merb-app/public/javascripts/application.js +0 -1
  110. data/benchmarks/stubs/merb-app/public/javascripts/jquery.js +0 -19
  111. data/benchmarks/stubs/merb-app/public/merb.fcgi +0 -22
  112. data/benchmarks/stubs/merb-app/public/robots.txt +0 -5
  113. data/benchmarks/stubs/merb-app/public/stylesheets/master.css +0 -119
  114. data/benchmarks/stubs/merb-app/spec/spec_helper.rb +0 -27
  115. data/benchmarks/stubs/merb-app/tasks/doc.thor +0 -151
  116. data/benchmarks/stubs/merb-app/tasks/merb.thor/app_script.rb +0 -33
  117. data/benchmarks/stubs/merb-app/tasks/merb.thor/common.rb +0 -70
  118. data/benchmarks/stubs/merb-app/tasks/merb.thor/gem_ext.rb +0 -127
  119. data/benchmarks/stubs/merb-app/tasks/merb.thor/main.thor +0 -152
  120. data/benchmarks/stubs/merb-app/tasks/merb.thor/ops.rb +0 -95
  121. data/benchmarks/stubs/merb-app/tasks/merb.thor/utils.rb +0 -42
  122. data/benchmarks/stubs/merb-core/.gitignore +0 -21
  123. data/benchmarks/stubs/merb-core/Rakefile +0 -35
  124. data/benchmarks/stubs/merb-core/app/controllers/application.rb +0 -4
  125. data/benchmarks/stubs/merb-core/app/controllers/exceptions.rb +0 -15
  126. data/benchmarks/stubs/merb-core/app/helpers/global_helpers.rb +0 -7
  127. data/benchmarks/stubs/merb-core/app/views/exceptions/not_acceptable.html.erb +0 -63
  128. data/benchmarks/stubs/merb-core/app/views/exceptions/not_found.html.erb +0 -47
  129. data/benchmarks/stubs/merb-core/app/views/layout/application.html.erb +0 -12
  130. data/benchmarks/stubs/merb-core/autotest/discover.rb +0 -1
  131. data/benchmarks/stubs/merb-core/autotest/merb.rb +0 -151
  132. data/benchmarks/stubs/merb-core/autotest/merb_rspec.rb +0 -167
  133. data/benchmarks/stubs/merb-core/config/environments/development.rb +0 -17
  134. data/benchmarks/stubs/merb-core/config/environments/production.rb +0 -12
  135. data/benchmarks/stubs/merb-core/config/environments/rake.rb +0 -13
  136. data/benchmarks/stubs/merb-core/config/environments/staging.rb +0 -12
  137. data/benchmarks/stubs/merb-core/config/environments/test.rb +0 -14
  138. data/benchmarks/stubs/merb-core/config/init.rb +0 -27
  139. data/benchmarks/stubs/merb-core/config/rack.rb +0 -13
  140. data/benchmarks/stubs/merb-core/config/router.rb +0 -43
  141. data/benchmarks/stubs/merb-core/doc/rdoc/generators/merb_generator.rb +0 -1364
  142. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/api_grease.js +0 -640
  143. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/index.html.erb +0 -37
  144. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/merb.css +0 -252
  145. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/merb.rb +0 -353
  146. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/merb_doc_styles.css +0 -492
  147. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/prototype.js +0 -2515
  148. data/benchmarks/stubs/merb-core/public/.htaccess +0 -17
  149. data/benchmarks/stubs/merb-core/public/favicon.ico +0 -0
  150. data/benchmarks/stubs/merb-core/public/images/merb.jpg +0 -0
  151. data/benchmarks/stubs/merb-core/public/javascripts/application.js +0 -1
  152. data/benchmarks/stubs/merb-core/public/merb.fcgi +0 -22
  153. data/benchmarks/stubs/merb-core/public/robots.txt +0 -5
  154. data/benchmarks/stubs/merb-core/public/stylesheets/master.css +0 -119
  155. data/benchmarks/stubs/merb-core/spec/spec_helper.rb +0 -22
  156. data/benchmarks/stubs/merb-core/tasks/merb.thor/app_script.rb +0 -33
  157. data/benchmarks/stubs/merb-core/tasks/merb.thor/common.rb +0 -70
  158. data/benchmarks/stubs/merb-core/tasks/merb.thor/gem_ext.rb +0 -127
  159. data/benchmarks/stubs/merb-core/tasks/merb.thor/main.thor +0 -152
  160. data/benchmarks/stubs/merb-core/tasks/merb.thor/ops.rb +0 -95
  161. data/benchmarks/stubs/merb-core/tasks/merb.thor/utils.rb +0 -42
  162. data/benchmarks/stubs/merb-flat/.gitignore +0 -21
  163. data/benchmarks/stubs/merb-flat/README.txt +0 -10
  164. data/benchmarks/stubs/merb-flat/Rakefile +0 -35
  165. data/benchmarks/stubs/merb-flat/application.rb +0 -17
  166. data/benchmarks/stubs/merb-flat/config/framework.rb +0 -9
  167. data/benchmarks/stubs/merb-flat/config/init.rb +0 -42
  168. data/benchmarks/stubs/merb-flat/spec/spec_helper.rb +0 -26
  169. data/benchmarks/stubs/merb-flat/tasks/merb.thor/app_script.rb +0 -33
  170. data/benchmarks/stubs/merb-flat/tasks/merb.thor/common.rb +0 -70
  171. data/benchmarks/stubs/merb-flat/tasks/merb.thor/gem_ext.rb +0 -127
  172. data/benchmarks/stubs/merb-flat/tasks/merb.thor/main.thor +0 -152
  173. data/benchmarks/stubs/merb-flat/tasks/merb.thor/ops.rb +0 -95
  174. data/benchmarks/stubs/merb-flat/tasks/merb.thor/utils.rb +0 -42
  175. data/benchmarks/stubs/merb-flat/views/foo.html.erb +0 -3
  176. data/benchmarks/stubs/merb-very-flat/.gitignore +0 -21
  177. data/benchmarks/stubs/merb-very-flat/Rakefile +0 -35
  178. data/benchmarks/stubs/merb-very-flat/merb-very-flat.rb +0 -61
  179. data/benchmarks/stubs/merb-very-flat/spec/spec_helper.rb +0 -26
  180. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/app_script.rb +0 -33
  181. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/common.rb +0 -70
  182. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/gem_ext.rb +0 -127
  183. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/main.thor +0 -152
  184. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/ops.rb +0 -95
  185. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/utils.rb +0 -42
  186. data/benchmarks/stubs/rails/README +0 -243
  187. data/benchmarks/stubs/rails/Rakefile +0 -10
  188. data/benchmarks/stubs/rails/app/controllers/application_controller.rb +0 -12
  189. data/benchmarks/stubs/rails/app/helpers/application_helper.rb +0 -5
  190. data/benchmarks/stubs/rails/config/boot.rb +0 -112
  191. data/benchmarks/stubs/rails/config/database.yml +0 -22
  192. data/benchmarks/stubs/rails/config/environment.rb +0 -43
  193. data/benchmarks/stubs/rails/config/environments/development.rb +0 -19
  194. data/benchmarks/stubs/rails/config/environments/production.rb +0 -30
  195. data/benchmarks/stubs/rails/config/environments/test.rb +0 -30
  196. data/benchmarks/stubs/rails/config/initializers/backtrace_silencers.rb +0 -9
  197. data/benchmarks/stubs/rails/config/initializers/inflections.rb +0 -12
  198. data/benchmarks/stubs/rails/config/initializers/mime_types.rb +0 -7
  199. data/benchmarks/stubs/rails/config/initializers/new_rails_defaults.rb +0 -21
  200. data/benchmarks/stubs/rails/config/initializers/session_store.rb +0 -17
  201. data/benchmarks/stubs/rails/config/locales/en.yml +0 -5
  202. data/benchmarks/stubs/rails/config/routes.rb +0 -45
  203. data/benchmarks/stubs/rails/doc/README_FOR_APP +0 -2
  204. data/benchmarks/stubs/rails/public/404.html +0 -30
  205. data/benchmarks/stubs/rails/public/422.html +0 -30
  206. data/benchmarks/stubs/rails/public/500.html +0 -30
  207. data/benchmarks/stubs/rails/public/images/rails.png +0 -0
  208. data/benchmarks/stubs/rails/public/index.html +0 -275
  209. data/benchmarks/stubs/rails/public/javascripts/application.js +0 -2
  210. data/benchmarks/stubs/rails/public/javascripts/controls.js +0 -963
  211. data/benchmarks/stubs/rails/public/javascripts/dragdrop.js +0 -973
  212. data/benchmarks/stubs/rails/public/javascripts/effects.js +0 -1128
  213. data/benchmarks/stubs/rails/public/javascripts/prototype.js +0 -4320
  214. data/benchmarks/stubs/rails/public/robots.txt +0 -5
  215. data/benchmarks/stubs/rails/script/about +0 -4
  216. data/benchmarks/stubs/rails/script/console +0 -3
  217. data/benchmarks/stubs/rails/script/dbconsole +0 -3
  218. data/benchmarks/stubs/rails/script/destroy +0 -3
  219. data/benchmarks/stubs/rails/script/generate +0 -3
  220. data/benchmarks/stubs/rails/script/performance/benchmarker +0 -3
  221. data/benchmarks/stubs/rails/script/performance/profiler +0 -3
  222. data/benchmarks/stubs/rails/script/plugin +0 -3
  223. data/benchmarks/stubs/rails/script/runner +0 -3
  224. data/benchmarks/stubs/rails/script/server +0 -3
  225. data/benchmarks/stubs/rails/test/performance/browsing_test.rb +0 -11
  226. data/benchmarks/stubs/rails/test/test_helper.rb +0 -40
  227. data/benchmarks/stubs/ramaze.rb +0 -0
  228. data/benchmarks/stubs/sinatra.rb +0 -11
  229. data/gems/cache/code-cleaner-0.1.gem +0 -0
  230. data/gems/cache/code-cleaner-0.2.gem +0 -0
  231. data/gems/cache/code-cleaner-0.3.gem +0 -0
  232. data/gems/cache/code-cleaner-0.4.gem +0 -0
  233. data/gems/cache/code-cleaner-0.5.gem +0 -0
  234. data/gems/cache/code-cleaner-0.6.gem +0 -0
  235. data/gems/cache/code-cleaner-0.7.gem +0 -0
  236. data/gems/cache/code-cleaner-0.8.1.gem +0 -0
  237. data/gems/cache/code-cleaner-0.8.gem +0 -0
  238. data/gems/cache/extlib-0.9.14.gem +0 -0
  239. data/gems/cache/haml-2.2.16.gem +0 -0
  240. data/gems/cache/haml-2.2.17.gem +0 -0
  241. data/gems/cache/nake-0.0.2.gem +0 -0
  242. data/gems/cache/nake-0.0.3.gem +0 -0
  243. data/gems/cache/nake-0.0.5.gem +0 -0
  244. data/gems/cache/nake-0.0.6.gem +0 -0
  245. data/gems/cache/rack-1.0.1.gem +0 -0
  246. data/gems/cache/rack-1.1.0.gem +0 -0
  247. data/gems/cache/rspec-1.2.9.gem +0 -0
  248. data/gems/cache/term-ansicolor-1.0.4.gem +0 -0
  249. data/gems/cache/tilt-0.4.gem +0 -0
  250. data/gems/cache/tilt-0.5.gem +0 -0
  251. data/lib/rango/forms/form.rb +0 -30
  252. data/lib/rango/helpers.rb +0 -31
  253. data/lib/rango/helpers/assets.rb +0 -46
  254. data/lib/rango/helpers/general.rb +0 -53
  255. data/lib/rango/helpers/syntax.rb +0 -30
  256. data/lib/rango/mixins/chainable.rb +0 -66
  257. data/lib/rango/mixins/http_caching.rb +0 -78
  258. data/lib/rango/router/adapters/rack_router.rb +0 -7
  259. data/lib/rango/templates/exts/erubis.rb +0 -65
  260. data/spec/rango/forms/form_spec.rb +0 -0
  261. data/spec/rango/helpers/assets_spec.rb +0 -0
  262. data/spec/rango/helpers/general_spec.rb +0 -0
  263. data/spec/rango/helpers/syntax_spec.rb +0 -0
  264. data/spec/rango/helpers_spec.rb +0 -0
  265. data/spec/rango/rack/middlewares/email_obfuscator_spec.rb +0 -0
  266. data/spec/rango/router/adapters/rack_router_spec.rb +0 -0
  267. data/spec/rango/templates/exts/erubis_spec.rb +0 -0
  268. data/spec/stubs/templates/_basic.html.erb +0 -6
  269. data/spec/stubs/templates/basic.html.erb +0 -6
  270. data/spec/stubs/templates/capture.html.erb +0 -11
  271. data/spec/stubs/templates/context.html.erb +0 -6
  272. data/spec/stubs/templates/erubis.html.erubis +0 -2
  273. data/spec/stubs/templates/exception.html.erb +0 -1
  274. data/spec/stubs/templates/inheritance/capture/erb/base.html.erb +0 -3
  275. data/spec/stubs/templates/inheritance/capture/erb/index.html.erb +0 -4
  276. data/spec/stubs/templates/inheritance/capture/erubis/base.html.erubis +0 -3
  277. data/spec/stubs/templates/inheritance/capture/erubis/index.html.erubis +0 -4
  278. data/stubs/stack/content/lib/%name%/config.rb.rbt +0 -0
  279. data/stubs/stack/content/lib/%name%/initializers/middlewares.rb.rbt +0 -5
  280. data/stubs/stack/content/rackup.rb.rbt +0 -41
  281. data/support/hooks/pre-commit +0 -12
@@ -7,12 +7,12 @@ require "rango/exceptions"
7
7
 
8
8
  module Rango
9
9
  module Exceptions # so we can catch it with other HTTP errors
10
- TemplateNotFound = Class.new(NotFound)
10
+ TemplateNotFound = Class.new(NotFound) { self.name = "Template Not Found" }
11
11
  end
12
12
 
13
13
  class Template
14
14
  def self.template_paths
15
- @@template_paths ||= [File.join(Rango.root, "templates")]
15
+ @@template_paths ||= [Rango.root.join("templates").to_s]
16
16
  end
17
17
 
18
18
  # template -> supertemplate is the same relationship as class -> superclass
@@ -36,7 +36,7 @@ module Rango
36
36
  def fullpath
37
37
  @fullpath ||= begin
38
38
  if self.path.match(/^(\/|\.)/) # /foo or ./foo
39
- Dir[self.path, "#{self.path}.*"].first
39
+ Dir[self.path, "#{self.path}.*"].find {|file| !File.directory?(file)}
40
40
  else
41
41
  self.find_in_template_paths
42
42
  end
@@ -75,7 +75,7 @@ module Rango
75
75
  def find_in_template_paths
76
76
  self.class.template_paths.each do |directory|
77
77
  path = File.join(directory, self.path)
78
- return Dir[path, "#{path}.*"].first
78
+ return Dir[path, "#{path}.*"].find {|file| !File.directory?(file)}
79
79
  end
80
80
  end
81
81
  end
@@ -11,8 +11,10 @@ require "rack"
11
11
  module Rango
12
12
  module Utils
13
13
  extend self
14
+ # @deprecated
14
15
  def load_rackup(path = "config.ru")
15
- eval("Rack::Builder.new {( #{File.read(path)}\n )}.to_app", nil, File.expand_path(path))
16
+ app, options = Rack::Builder.parse_file(path)
17
+ return app
16
18
  end
17
19
  end
18
- end
20
+ end
@@ -0,0 +1,5 @@
1
+ # encoding: utf-8
2
+
3
+ module Rango
4
+ VERSION = "0.2.4.1"
5
+ end
@@ -2,10 +2,11 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  require "base64"
5
+ require File.expand_path("../lib/rango/version", __FILE__)
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "rango"
8
- s.version = "0.2.3"
9
+ s.version = Rango::VERSION
9
10
  s.authors = ["Jakub Šťastný aka Botanicus"]
10
11
  s.homepage = "http://github.com/botanicus/rango"
11
12
  s.summary = "Rango is ultralightweight, ultracustomizable, ultracool web framework deeply inspired by Django."
@@ -37,7 +38,7 @@ Gem::Specification.new do |s|
37
38
  # just run gem install rango --development
38
39
 
39
40
  s.add_development_dependency "simple-templater", ">= 0.0.1.2"
40
- s.add_development_dependency "bundler"
41
+ s.add_development_dependency "bundler", ">= 0.9"
41
42
 
42
43
  begin
43
44
  require "changelog"
@@ -23,4 +23,16 @@ describe Rango::Controller do
23
23
  @controller.should respond_to(:logger)
24
24
  #@controller.logger.should eql(Project.logger)
25
25
  end
26
+
27
+ describe "#params" do
28
+ before(:each) do
29
+ env = Rack::MockRequest.env_for("/?ssl=true")
30
+ @controller = Rango::Controller.new(env)
31
+ end
32
+
33
+ it "should have indifferent access" do
34
+ @controller.params[:ssl].should eql("true")
35
+ @controller.params["ssl"].should eql("true")
36
+ end
37
+ end
26
38
  end
@@ -0,0 +1,61 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative "../spec_helper"
4
+
5
+ require "rango/core_ext"
6
+
7
+ describe ParamsMixin do
8
+ describe ".convert" do
9
+ it "should work" do
10
+ mash = ParamsMixin.convert(key: "value")
11
+ mash["key"].should eql("value")
12
+ end
13
+
14
+ it "should work recursively" do
15
+ mash = ParamsMixin.convert(key: {inner: "value"})
16
+ mash["key"].should_not be_nil
17
+ mash["key"]["inner"].should eql("value")
18
+ end
19
+ end
20
+
21
+ describe "getter & setter" do
22
+ before(:each) do
23
+ @mash = {key: "value"}.extend(ParamsMixin)
24
+ end
25
+
26
+ it "should work with a string as a key" do
27
+ @mash["key"].should eql("value")
28
+ end
29
+
30
+ it "should work with a symbol as a key" do
31
+ @mash[:key].should eql("value")
32
+ end
33
+
34
+ it "should not cause any issues if the key isn't a string nor a symbol" do
35
+ object = Object.new
36
+ lambda {
37
+ @mash[object] = "test"
38
+ @mash[object].should eql("test")
39
+ }.should_not raise_error
40
+ end
41
+
42
+ it "should set the value with key if key is a string" do
43
+ @mash["key"] = "changed"
44
+ @mash[:key].should eql("changed")
45
+ end
46
+
47
+ it "should set the value with key if key is a symbol" do
48
+ @mash[:key] = "changed"
49
+ @mash["key"].should eql("changed")
50
+ end
51
+ end
52
+
53
+ describe "#keys" do
54
+ it "should be array of strings" do
55
+ object = Object.new
56
+ hash = {:a => 1, "b" => 2, object => 3}
57
+ mash = hash.extend(ParamsMixin)
58
+ mash.keys.should eql(["a", "b", object])
59
+ end
60
+ end
61
+ end
@@ -5,6 +5,7 @@ require "rango/environments"
5
5
 
6
6
  describe "Rango environments" do
7
7
  it "should defaults to development" do
8
+ pending "This should be part of test suite testing boot & default setup which obviously can't run in the same Ruby instance because all the requires etc are global"
8
9
  Rango.environment.should eql("development")
9
10
  end
10
11
 
@@ -8,43 +8,16 @@ describe Rango::Exceptions do
8
8
  @error = Rango::Exceptions::NotFound.new("Post with given ID doesn't exist")
9
9
  end
10
10
 
11
- describe "constants" do
12
- it "should has CONTENT_TYPE" do
13
- Rango::Exceptions::HttpError.constants.should include(:CONTENT_TYPE)
14
- end
15
-
16
- it "should xxxxxxxxx" do
17
- @class = Class.new(Rango::Exceptions::HttpError)
18
- -> { @class::STATUS }.should raise_error(NameError, /has to have defined constant STATUS/)
19
- end
20
- end
21
-
22
11
  describe "#status" do
23
12
  it "should returns HTTP status status" do
24
13
  @error.status.should eql(404)
25
14
  end
26
15
  end
27
16
 
28
- describe "#content_type" do
29
- it "should returns HTTP status status" do
30
- @error.content_type.should eql(@error.class::CONTENT_TYPE)
31
- end
32
-
33
- it "should returns HTTP status status" do
34
- @error.content_type = "text/xml"
35
- @error.content_type.should eql("text/xml")
36
- end
37
- end
38
-
39
17
  describe "#headers" do
40
18
  it "should returns HTTP status status" do
41
19
  @error.headers.should be_kind_of(Hash)
42
20
  end
43
-
44
- it "should returns HTTP status status" do
45
- @error.headers = "text/xml"
46
- @error.headers.should eql("text/xml")
47
- end
48
21
  end
49
22
 
50
23
  describe "#to_snakecase" do
@@ -67,7 +40,7 @@ describe Rango::Exceptions do
67
40
  end
68
41
 
69
42
  it "should write Content-Type header" do
70
- @headers["Content-Type"].should eql @error.content_type
43
+ @headers["Content-Type"].should_not be_nil
71
44
  end
72
45
 
73
46
  it "should returns standard response array for Rack" do
@@ -2,10 +2,6 @@
2
2
 
3
3
  require_relative "../../spec_helper"
4
4
 
5
- require "rango"
6
- require "logger"
7
- Rango.logger = Logger.new("/dev/null")
8
-
9
5
  require "rango/controller"
10
6
  require "rango/mixins/action_args"
11
7
 
@@ -64,25 +64,35 @@ describe Rango::MessageMixin do
64
64
 
65
65
  describe "#redirect" do
66
66
  before(:each) do
67
- @env = Rack::MockRequest.env_for("/")
68
- Posts = Class.new(Rango::Controller) { include Rango::MessageMixin }
69
- @controller = Posts.new(@env)
67
+ @env = Rack::MockRequest.env_for("/")
68
+ @controller = TestController.new(@env)
70
69
  end
71
70
 
72
71
  it "should be satisfied just with url" do
73
- @controller.redirect("/")
74
- @controller.status.should eql(302)
75
- @controller.headers["Location"].should eql("http://example.org/")
72
+ begin
73
+ @controller.redirect("/")
74
+ rescue Rango::Exceptions::Redirection => redirection
75
+ redirection.status.should eql(303)
76
+ redirection.headers["Location"].should eql("http://example.org")
77
+ end
76
78
  end
77
79
 
78
80
  it "should be satisfied just with url" do
79
- @controller.redirect("/", "Try again")
80
- @controller.headers["Location"].should eql("http://example.org/?msg=Try%20again")
81
+ begin
82
+ @controller.redirect("/", "Try again")
83
+ rescue Rango::Exceptions::Redirection => redirection
84
+ redirection.status.should eql(303)
85
+ redirection.headers["Location"].should eql("http://example.org/?msg=Try%20again")
86
+ end
81
87
  end
82
88
 
83
89
  it "should be satisfied just with url" do
84
- @controller.redirect("/", error: "Try again")
85
- @controller.headers["Location"].should eql("http://example.org/?msg[error]=Try%20again")
90
+ begin
91
+ @controller.redirect("/", error: "Try again")
92
+ rescue Rango::Exceptions::Redirection => redirection
93
+ redirection.status.should eql(303)
94
+ redirection.headers["Location"].should eql("http://example.org/?msg[error]=Try%20again")
95
+ end
86
96
  end
87
97
  end
88
98
  end
@@ -4,4 +4,15 @@ require_relative "../../spec_helper"
4
4
  require "rango/rack/request"
5
5
 
6
6
  describe Rango::Request do
7
+ describe "#params" do
8
+ before(:each) do
9
+ env = Rack::MockRequest.env_for("/?ssl=true")
10
+ @request = Rango::Request.new(env)
11
+ end
12
+
13
+ it "should have indifferent access" do
14
+ @request.params[:ssl].should eql("true")
15
+ @request.params["ssl"].should eql("true")
16
+ end
17
+ end
7
18
  end
@@ -9,17 +9,31 @@ describe Rango::TemplateHelpers do
9
9
  include Rango::TemplateHelpers
10
10
  describe "#partial" do
11
11
  it "should work" do
12
+ pending "This can't work because self.template doesn't exist, we have to use render mixin"
12
13
  partial "basic.html"
13
14
  end
14
15
 
15
- it "should share context with the parent template"
16
- it "should be able to specify additional context which isn't propagated to the parent template"
16
+ it "should share context with the parent template" do
17
+ pending
18
+ end
19
+
20
+ it "should be able to specify additional context which isn't propagated to the parent template" do
21
+ pending
22
+ end
17
23
  end
18
24
 
19
25
  describe "#render" do
20
- it "should consider 'path.html' as a path relative to Template.template_paths"
21
- it "should consider './path.html' as a path relative to the current template"
22
- it "should look for '../path.html' in the parent directory of directory with current template"
26
+ it "should consider 'path.html' as a path relative to Template.template_paths" do
27
+ pending
28
+ end
29
+
30
+ it "should consider './path.html' as a path relative to the current template" do
31
+ pending
32
+ end
33
+
34
+ it "should look for '../path.html' in the parent directory of directory with current template" do
35
+ pending
36
+ end
23
37
  end
24
38
 
25
39
  describe "#includes" do
@@ -47,19 +47,6 @@ describe Rango::Template do
47
47
  template.render
48
48
  template.blocks[:content].should match("Hello!")
49
49
  end
50
-
51
- it "should capture erubis" do
52
- template = Rango::Template.new("inheritance/capture/erubis/index.html")
53
- template.render
54
- template.blocks[:content].should match("Hello!")
55
- end
56
-
57
- it "should capture erb" do
58
- pending "ERB or ERB adapter in Tilt seems to have problems with capturing"
59
- template = Rango::Template.new("inheritance/capture/erb/index.html")
60
- template.render
61
- template.blocks[:content].should match("Hello!")
62
- end
63
50
  end
64
51
 
65
52
  describe "variables" do
@@ -68,13 +55,7 @@ describe Rango::Template do
68
55
  end
69
56
 
70
57
  it "should capture erb" do
71
- @template.render(title: "Hi!").should match("Hi!")
72
- end
73
-
74
- it "should <%= &block %>" do
75
- pending "<%= &block %> should works for Erubis"
76
- template = Rango::Template.new("erubis.html")
77
- puts template.render
58
+ # @template.render(title: "Hi!").should match("Hi!")
78
59
  end
79
60
  end
80
61
  end
@@ -3,16 +3,24 @@
3
3
  SPEC_ROOT = File.dirname(__FILE__)
4
4
  STUBS_ROOT = File.join(SPEC_ROOT, "stubs")
5
5
 
6
- $:.unshift File.join(SPEC_ROOT, "..", "lib")
6
+ $:.unshift(File.join(SPEC_ROOT, "..", "lib"))
7
7
 
8
8
  begin
9
- require_relative "../gems/environment"
9
+ # Require the preresolved locked set of gems.
10
+ require File.expand_path("../.bundle/environment", __FILE__)
10
11
  rescue LoadError
11
- abort "Run gem bundle --cached"
12
+ # Fallback on doing the resolve at runtime.
13
+ require "rubygems"
14
+ require "bundler"
15
+ Bundler.setup
12
16
  end
13
17
 
14
18
  require "spec" # so you can run ruby spec/rango/whatever_spec.rb
15
19
 
20
+ require "rango"
21
+ require "logger"
22
+ Rango.logger = Logger.new("/dev/null")
23
+
16
24
  class RecursiveOpenStruct < OpenStruct
17
25
  def initialize(attributes = Hash.new)
18
26
  attributes.each do |key, value|
@@ -27,7 +35,7 @@ end
27
35
  module Spec
28
36
  module Matchers
29
37
  def match(expected)
30
- Matcher.new :match, expected do |expected|
38
+ Matcher.new(:match, expected) do |expected|
31
39
  match do |actual|
32
40
  actual.match(expected)
33
41
  end
@@ -35,3 +43,9 @@ module Spec
35
43
  end
36
44
  end
37
45
  end
46
+
47
+ Spec::Runner.configure do |config|
48
+ config.before(:all) do
49
+ Rango.environment = "test"
50
+ end
51
+ end
File without changes
@@ -1,8 +1,7 @@
1
1
  #!/usr/bin/env gem build
2
2
  # encoding: utf-8
3
3
 
4
- # You might think this is a terrible mess and guess what, you're
5
- # right mate! However say thanks to authors of RubyGems, not me.
4
+ # Reuse the main gemspec for releasing prerelease versions
6
5
  eval(File.read("<%= @name %>.gemspec")).tap do |specification|
7
6
  specification.version = "#{specification.version}.pre"
8
7
  end
@@ -10,9 +10,6 @@
10
10
  tmp/*
11
11
  log/*
12
12
 
13
- *.gem
14
- pkg/*
13
+ /*.gem
15
14
 
16
- bin
17
- gems/*
18
- !gems/cache
15
+ .bundle