rango 0.2.3 → 0.2.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,33 +0,0 @@
1
- # encoding: utf-8
2
-
3
- #!/usr/bin/env ruby
4
-
5
- # This was added by Merb's bundler
6
-
7
- require "rubygems"
8
- require File.join(File.dirname(__FILE__), "common")
9
-
10
- gems_dir = File.join(File.dirname(__FILE__), '..', 'gems')
11
-
12
- if File.directory?(gems_dir)
13
- $BUNDLE = true
14
- Gem.clear_paths
15
- Gem.path.replace([File.expand_path(gems_dir)])
16
- ENV["PATH"] = "#{File.dirname(__FILE__)}:#{ENV["PATH"]}"
17
-
18
- gem_file = File.join(gems_dir, "specifications", "<%= spec.name %>-*.gemspec")
19
-
20
- if local_gem = Dir[gem_file].last
21
- version = File.basename(local_gem)[/-([\.\d]+)\.gemspec$/, 1]
22
- end
23
- end
24
-
25
- version ||= "<%= Gem::Requirement.default %>"
26
-
27
- if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
28
- version = $1
29
- ARGV.shift
30
- end
31
-
32
- gem '<%= @spec.name %>', version
33
- load '<%= bin_file_name %>'
@@ -1,70 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # This was added via Merb's bundler
4
-
5
- require "rubygems"
6
- require "rubygems/source_index"
7
-
8
- module Gem
9
- BUNDLED_SPECS = File.join(Dir.pwd, "gems", "specifications")
10
- MAIN_INDEX = Gem::SourceIndex.from_gems_in(BUNDLED_SPECS)
11
- FALLBACK_INDEX = Gem::SourceIndex.from_installed_gems
12
-
13
- def self.source_index
14
- MultiSourceIndex.new
15
- end
16
-
17
- def self.searcher
18
- MultiPathSearcher.new
19
- end
20
-
21
- class ArbitrarySearcher < GemPathSearcher
22
- def initialize(source_index)
23
- @source_index = source_index
24
- super()
25
- end
26
-
27
- def init_gemspecs
28
- @source_index.map { |_, spec| spec }.sort { |a,b|
29
- (a.name <=> b.name).nonzero? || (b.version <=> a.version)
30
- }
31
- end
32
- end
33
-
34
- class MultiPathSearcher
35
- def initialize
36
- @main_searcher = ArbitrarySearcher.new(MAIN_INDEX)
37
- @fallback_searcher = ArbitrarySearcher.new(FALLBACK_INDEX)
38
- end
39
-
40
- def find(path)
41
- try = @main_searcher.find(path)
42
- return try if try
43
- @fallback_searcher.find(path)
44
- end
45
-
46
- def find_all(path)
47
- try = @main_searcher.find_all(path)
48
- return try unless try.empty?
49
- @fallback_searcher.find_all(path)
50
- end
51
- end
52
-
53
- class MultiSourceIndex
54
- # Used by merb.thor to confirm; not needed when MSI is in use
55
- def load_gems_in(*args)
56
- end
57
-
58
- def search(*args)
59
- try = MAIN_INDEX.search(*args)
60
- return try unless try.empty?
61
- FALLBACK_INDEX.search(*args)
62
- end
63
-
64
- def find_name(*args)
65
- try = MAIN_INDEX.find_name(*args)
66
- return try unless try.empty?
67
- FALLBACK_INDEX.find_name(*args)
68
- end
69
- end
70
- end
@@ -1,127 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require "erb"
4
-
5
- Gem.pre_install_hooks.push(proc do |installer|
6
- unless File.file?(installer.bin_dir / "common.rb")
7
- FileUtils.mkdir_p(installer.bin_dir)
8
- FileUtils.cp(File.dirname(__FILE__) / "common.rb", installer.bin_dir / "common.rb")
9
- end
10
-
11
- include ColorfulMessages
12
- name = installer.spec.name
13
- if $GEMS && versions = ($GEMS.assoc(name) || [])[1]
14
- dep = Gem::Dependency.new(name, versions)
15
- unless dep.version_requirements.satisfied_by?(installer.spec.version)
16
- error "Cannot install #{installer.spec.full_name} " \
17
- "for #{$INSTALLING}; " \
18
- "you required #{dep}"
19
- ::Thor::Tasks::Merb::Gem.rollback_trans
20
- exit!
21
- end
22
- end
23
- success "Installing #{installer.spec.full_name}"
24
- end)
25
-
26
- class ::Gem::Uninstaller
27
- def self._with_silent_ui
28
-
29
- ui = Gem::DefaultUserInteraction.ui
30
- def ui.say(str)
31
- puts "- #{str}"
32
- end
33
-
34
- yield
35
-
36
- class << Gem::DefaultUserInteraction.ui
37
- remove_method :say
38
- end
39
- end
40
-
41
- def self._uninstall(source_index, name, op, version)
42
- unless source_index.find_name(name, "#{op} #{version}").empty?
43
- uninstaller = Gem::Uninstaller.new(
44
- name,
45
- :version => "#{op} #{version}",
46
- :install_dir => Dir.pwd / "gems",
47
- :all => true,
48
- :ignore => true
49
- )
50
- _with_silent_ui { uninstaller.uninstall }
51
- end
52
- end
53
-
54
- def self._uninstall_others(source_index, name, version)
55
- _uninstall(source_index, name, "<", version)
56
- _uninstall(source_index, name, ">", version)
57
- end
58
- end
59
-
60
- Gem.post_install_hooks.push(proc do |installer|
61
- source_index = installer.instance_variable_get("@source_index")
62
- ::Gem::Uninstaller._uninstall_others(
63
- source_index, installer.spec.name, installer.spec.version
64
- )
65
- end)
66
-
67
- class ::Gem::DependencyInstaller
68
- alias old_fg find_gems_with_sources
69
-
70
- def find_gems_with_sources(dep)
71
- if @source_index.any? { |_, installed_spec|
72
- installed_spec.satisfies_requirement?(dep)
73
- }
74
- return []
75
- end
76
-
77
- old_fg(dep)
78
- end
79
- end
80
-
81
- class ::Gem::SpecFetcher
82
- alias old_fetch fetch
83
- def fetch(dependency, all = false, matching_platform = true)
84
- idx = Gem::SourceIndex.from_installed_gems
85
-
86
- reqs = dependency.version_requirements.requirements
87
-
88
- if reqs.size == 1 && reqs[0][0] == "="
89
- dep = idx.search(dependency).sort.last
90
- end
91
-
92
- if dep
93
- file = dep.loaded_from.dup
94
- file.gsub!(/specifications/, "cache")
95
- file.gsub!(/gemspec$/, "gem")
96
- spec = ::Gem::Format.from_file_by_path(file).spec
97
- [[spec, file]]
98
- else
99
- old_fetch(dependency, all, matching_platform)
100
- end
101
- end
102
- end
103
-
104
- class ::Gem::Installer
105
- def app_script_text(bin_file_name)
106
- template = File.read(File.dirname(__FILE__) / "app_script.rb")
107
- erb = ERB.new(template)
108
- erb.result(binding)
109
- end
110
- end
111
-
112
- class ::Gem::Specification
113
- def recursive_dependencies(from, index = Gem.source_index)
114
- specs = self.runtime_dependencies.map do |dep|
115
- spec = index.search(dep).last
116
- unless spec
117
- from_name = from.is_a?(::Gem::Specification) ? from.full_name : from.to_s
118
- wider_net = index.find_name(dep.name).last
119
- ThorUI.error "Needed #{dep} for #{from_name}, but could not find it"
120
- ThorUI.error "Found #{wider_net.full_name}" if wider_net
121
- ::Thor::Tasks::Merb::Gem.rollback_trans
122
- end
123
- spec
124
- end
125
- specs + specs.map {|s| s.recursive_dependencies(self, index)}.flatten.uniq
126
- end
127
- end
@@ -1,152 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require "rubygems"
4
- require "rubygems/source_index"
5
- require "rubygems/dependency_installer"
6
- require "rubygems/uninstaller"
7
- require "fileutils"
8
- require File.join(File.dirname(__FILE__), "utils")
9
- require File.join(File.dirname(__FILE__), "gem_ext")
10
- require File.join(File.dirname(__FILE__), "ops")
11
-
12
- $INSTALLING = []
13
-
14
- module Merb
15
-
16
- class Gem < Thor
17
- extend ColorfulMessages
18
-
19
- def initialize
20
- dirs = [Dir.pwd, File.dirname(__FILE__) / ".."]
21
- root = dirs.find {|d| File.file?(d / "config" / "dependencies.rb")}
22
-
23
- if root
24
- @depsrb = root / "config" / "dependencies.rb"
25
- else
26
- self.class.error "dependencies.rb was not found"
27
- exit!
28
- end
29
-
30
- FileUtils.mkdir_p(Dir.pwd / "gems")
31
-
32
- @list = Collector.collect(File.read(@depsrb))
33
- @idx = ::Gem::SourceIndex.new.load_gems_in("gems/specifications")
34
- end
35
-
36
- def list
37
- require "pp"
38
- pp @list
39
- end
40
-
41
- desc "redeploy", "Syncs up gems/cache with gems/gems. All gems in the cache " \
42
- "that are not already installed will be installed from the " \
43
- "cache. All installed gems that are not in the cache will " \
44
- "be uninstalled."
45
- def redeploy
46
- gem_dir = Dir.pwd / "gems" / "gems"
47
- cache_dir = Dir.pwd / "gems" / "cache"
48
-
49
- gems = Dir[gem_dir / "*"].map! {|n| File.basename(n)}
50
- cache = Dir[cache_dir / "*.gem"].map! {|n| File.basename(n, ".gem")}
51
- new_gems = cache - gems
52
- outdated = gems - cache
53
- idx = ::Gem::SourceIndex.new
54
- idx.load_gems_in(Dir.pwd / "gems" / "specifications")
55
-
56
- new_gems.each do |g|
57
- installer = ::Gem::Installer.new(cache_dir / "#{g}.gem",
58
- :bin_dir => Dir.pwd / "bin",
59
- :install_dir => Dir.pwd / "gems",
60
- :ignore_dependencies => true,
61
- :user_install => false,
62
- :wrappers => true,
63
- :source_index => idx)
64
-
65
- installer.install
66
- end
67
-
68
- outdated.each do |g|
69
- /(.*)\-(.*)/ =~ g
70
- name, version = $1, $2
71
- uninstaller = ::Gem::Uninstaller.new(name,
72
- :version => version,
73
- :bin_dir => Dir.pwd / "bin",
74
- :install_dir => Dir.pwd / "gems",
75
- :ignore => true,
76
- :executables => true
77
- )
78
- uninstaller.uninstall
79
- end
80
- end
81
-
82
- desc "confirm", "Confirm the current setup. merb:gem:install will " \
83
- "automatically run this task before committing the " \
84
- "changes it makes."
85
- def confirm(gems = @list)
86
- ::Gem.path.replace([Dir.pwd / "gems"])
87
- ::Gem.source_index.load_gems_in(Dir.pwd / "gems" / "specifications")
88
-
89
- self.class.info "Confirming configuration..."
90
-
91
- ::Gem.loaded_specs.clear
92
-
93
- begin
94
- gems.each do |name, versions|
95
- versions ||= []
96
- ::Gem.activate name, *versions
97
- end
98
- rescue ::Gem::LoadError => e
99
- self.class.error "Configuration could not be confirmed: #{e.message}"
100
- self.class.rollback_trans
101
- end
102
- self.class.info "Confirmed"
103
- end
104
-
105
- desc 'install', 'Sync up your bundled gems with the list in config/dependencies.rb'
106
- def install(*gems)
107
- if gems.empty?
108
- gems = @list
109
- else
110
- gems = gems.map {|desc| name, *versions = desc.split(" ") }
111
- end
112
-
113
- $GEMS = gems
114
-
115
- self.class.begin_trans
116
-
117
- gems.each do |name, versions|
118
- dep = ::Gem::Dependency.new(name, versions || [])
119
- unless @idx.search(dep).empty?
120
- next
121
- end
122
-
123
- rescue_failures do
124
- $INSTALLING = dep
125
- _install(dep)
126
- end
127
- end
128
-
129
- gem_dir = Dir.pwd / "gems" / "gems"
130
- installed_gems = Dir[gem_dir / "*"].map! {|n| File.basename(n)}
131
-
132
- list = full_list.map {|x| x.full_name}.compact
133
-
134
- (installed_gems - list).each do |g|
135
- /^(.*)\-(.*)$/ =~ g
136
- name, version = $1, $2
137
- uninstaller = ::Gem::Uninstaller.new(name,
138
- :version => version,
139
- :bin_dir => (Dir.pwd / "bin").to_s,
140
- :install_dir => (Dir.pwd / "gems").to_s,
141
- :ignore => true,
142
- :executables => true
143
- )
144
- uninstaller.uninstall
145
- end
146
-
147
- confirm(gems)
148
-
149
- self.class.commit_trans
150
- end
151
- end
152
- end
@@ -1,95 +0,0 @@
1
- # encoding: utf-8
2
-
3
- module Thor::Tasks
4
- module Merb
5
- class Collector
6
- attr_reader :dependencies
7
-
8
- def self.collect(str)
9
- collector = new
10
- collector.instance_eval(str)
11
- collector.dependencies
12
- end
13
-
14
- def initialize
15
- @dependencies = []
16
- end
17
-
18
- def dependency(name, *versions)
19
- versions.pop if versions.last.is_a?(Hash)
20
- @dependencies << [name, versions]
21
- end
22
- end
23
-
24
- class Gem < Thor
25
- def full_list
26
- @idx.load_gems_in("gems/specifications")
27
-
28
- @list.map do |name, versions|
29
- dep = ::Gem::Dependency.new(name, versions)
30
- spec = @idx.search(dep).last
31
- unless spec
32
- self.class.error "A required dependency #{dep} was not found"
33
- self.class.rollback_trans
34
- end
35
- deps = spec.recursive_dependencies(dep, @idx)
36
- [spec] + deps
37
- end.flatten.uniq
38
- end
39
-
40
- def rescue_failures(error = StandardError, prc = nil)
41
- begin
42
- yield
43
- rescue error => e
44
- if prc
45
- prc.call(e)
46
- else
47
- puts e.message
48
- puts e.backtrace
49
- end
50
- self.class.rollback_trans
51
- end
52
- end
53
-
54
- def self.begin_trans
55
- note "Beginning transaction"
56
- FileUtils.cp_r(Dir.pwd / "gems", Dir.pwd / ".original_gems")
57
- end
58
-
59
- def self.commit_trans
60
- note "Committing transaction"
61
- FileUtils.rm_rf(Dir.pwd / ".original_gems")
62
- end
63
-
64
- def self.rollback_trans
65
- if File.exist?(Dir.pwd / ".original_gems")
66
- note "Rolling back transaction"
67
- FileUtils.rm_rf(Dir.pwd / "gems")
68
- FileUtils.mv(Dir.pwd / ".original_gems", Dir.pwd / "gems")
69
- end
70
- exit!
71
- end
72
-
73
- private
74
- def _install(dep)
75
- @idx.load_gems_in("gems/specifications")
76
- return if @idx.search(dep).last
77
-
78
- installer = ::Gem::DependencyInstaller.new(
79
- :bin_dir => Dir.pwd / "bin",
80
- :install_dir => Dir.pwd / "gems",
81
- :user_install => false)
82
-
83
- begin
84
- installer.install dep.name, dep.version_requirements
85
- rescue ::Gem::GemNotFoundException => e
86
- puts "Cannot find #{dep}"
87
- rescue ::Gem::RemoteFetcher::FetchError => e
88
- puts e.message
89
- puts "Retrying..."
90
- retry
91
- end
92
- end
93
- end
94
- end
95
- end