trackman 0.0.5

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 (309) hide show
  1. data/.gitignore +4 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock +49 -0
  5. data/LICENSE +17 -0
  6. data/README.md +96 -0
  7. data/Rakefile +52 -0
  8. data/lib/tasks.rb +7 -0
  9. data/lib/trackman/assets/asset.rb +97 -0
  10. data/lib/trackman/assets/components/asset_factory.rb +41 -0
  11. data/lib/trackman/assets/components/asset_factory.rb.orig +54 -0
  12. data/lib/trackman/assets/components/composite_asset.rb +39 -0
  13. data/lib/trackman/assets/components/conventions.rb +23 -0
  14. data/lib/trackman/assets/components/diffable.rb +29 -0
  15. data/lib/trackman/assets/components/hashable.rb +30 -0
  16. data/lib/trackman/assets/components/path_resolver.rb +34 -0
  17. data/lib/trackman/assets/components/rails32_path_resolver.rb +49 -0
  18. data/lib/trackman/assets/components/rails_path_resolver.rb +34 -0
  19. data/lib/trackman/assets/components/shippable.rb +31 -0
  20. data/lib/trackman/assets/components.rb +11 -0
  21. data/lib/trackman/assets/css_asset.rb +11 -0
  22. data/lib/trackman/assets/errors/asset_not_found_error.rb +8 -0
  23. data/lib/trackman/assets/errors/config_not_found_error.rb +8 -0
  24. data/lib/trackman/assets/errors.rb +10 -0
  25. data/lib/trackman/assets/html_asset.rb +30 -0
  26. data/lib/trackman/assets/remote_asset.rb +72 -0
  27. data/lib/trackman/assets.rb +37 -0
  28. data/lib/trackman/rack_middleware.rb +12 -0
  29. data/lib/trackman/railtie.rb +7 -0
  30. data/lib/trackman/version.rb +3 -0
  31. data/lib/trackman.rb +34 -0
  32. data/rails_generators/trackman/templates/trackman.rake +59 -0
  33. data/rails_generators/trackman/trackman_generator.rb +8 -0
  34. data/spec/asset_all_spec.rb +136 -0
  35. data/spec/asset_factory_spec.rb +70 -0
  36. data/spec/asset_spec.rb +99 -0
  37. data/spec/composite_asset_spec.rb +12 -0
  38. data/spec/css_asset_spec.rb +39 -0
  39. data/spec/diffable_spec.rb +57 -0
  40. data/spec/fixtures/rails2311/fully-loaded/README +243 -0
  41. data/spec/fixtures/rails2311/fully-loaded/Rakefile +10 -0
  42. data/spec/fixtures/rails2311/fully-loaded/app/controllers/application_controller.rb +10 -0
  43. data/spec/fixtures/rails2311/fully-loaded/app/helpers/application_helper.rb +3 -0
  44. data/spec/fixtures/rails2311/fully-loaded/config/boot.rb +114 -0
  45. data/spec/fixtures/rails2311/fully-loaded/config/database.yml +22 -0
  46. data/spec/fixtures/rails2311/fully-loaded/config/environment.rb +41 -0
  47. data/spec/fixtures/rails2311/fully-loaded/config/environments/development.rb +17 -0
  48. data/spec/fixtures/rails2311/fully-loaded/config/environments/production.rb +28 -0
  49. data/spec/fixtures/rails2311/fully-loaded/config/environments/test.rb +28 -0
  50. data/spec/fixtures/rails2311/fully-loaded/config/initializers/backtrace_silencers.rb +7 -0
  51. data/spec/fixtures/rails2311/fully-loaded/config/initializers/cookie_verification_secret.rb +7 -0
  52. data/spec/fixtures/rails2311/fully-loaded/config/initializers/inflections.rb +10 -0
  53. data/spec/fixtures/rails2311/fully-loaded/config/initializers/mime_types.rb +5 -0
  54. data/spec/fixtures/rails2311/fully-loaded/config/initializers/new_rails_defaults.rb +21 -0
  55. data/spec/fixtures/rails2311/fully-loaded/config/initializers/session_store.rb +15 -0
  56. data/spec/fixtures/rails2311/fully-loaded/config/locales/en.yml +5 -0
  57. data/spec/fixtures/rails2311/fully-loaded/config/routes.rb +43 -0
  58. data/spec/fixtures/rails2311/fully-loaded/db/seeds.rb +7 -0
  59. data/spec/fixtures/rails2311/fully-loaded/doc/README_FOR_APP +2 -0
  60. data/spec/fixtures/rails2311/fully-loaded/log/development.log +0 -0
  61. data/spec/fixtures/rails2311/fully-loaded/log/production.log +0 -0
  62. data/spec/fixtures/rails2311/fully-loaded/log/server.log +0 -0
  63. data/spec/fixtures/rails2311/fully-loaded/log/test.log +0 -0
  64. data/spec/fixtures/rails2311/fully-loaded/public/404.html +30 -0
  65. data/spec/fixtures/rails2311/fully-loaded/public/422.html +30 -0
  66. data/spec/fixtures/rails2311/fully-loaded/public/500.html +30 -0
  67. data/spec/fixtures/rails2311/fully-loaded/public/503-error.html +24 -0
  68. data/spec/fixtures/rails2311/fully-loaded/public/503-error.html~ +24 -0
  69. data/spec/fixtures/rails2311/fully-loaded/public/503.html +275 -0
  70. data/spec/fixtures/rails2311/fully-loaded/public/503.html~ +275 -0
  71. data/spec/fixtures/rails2311/fully-loaded/public/favicon.ico +0 -0
  72. data/spec/fixtures/rails2311/fully-loaded/public/images/rails.png +0 -0
  73. data/spec/fixtures/rails2311/fully-loaded/public/index.html +275 -0
  74. data/spec/fixtures/rails2311/fully-loaded/public/javascripts/application.js +2 -0
  75. data/spec/fixtures/rails2311/fully-loaded/public/javascripts/controls.js +963 -0
  76. data/spec/fixtures/rails2311/fully-loaded/public/javascripts/dragdrop.js +973 -0
  77. data/spec/fixtures/rails2311/fully-loaded/public/javascripts/effects.js +1128 -0
  78. data/spec/fixtures/rails2311/fully-loaded/public/javascripts/prototype.js +4320 -0
  79. data/spec/fixtures/rails2311/fully-loaded/public/robots.txt +5 -0
  80. data/spec/fixtures/rails2311/fully-loaded/public/stylesheets/application.css +13 -0
  81. data/spec/fixtures/rails2311/fully-loaded/public/stylesheets/some-other-css.css +3 -0
  82. data/spec/fixtures/rails2311/fully-loaded/public/stylesheets/sub-css/sub-css.css +1 -0
  83. data/spec/fixtures/rails2311/fully-loaded/script/about +4 -0
  84. data/spec/fixtures/rails2311/fully-loaded/script/console +3 -0
  85. data/spec/fixtures/rails2311/fully-loaded/script/dbconsole +3 -0
  86. data/spec/fixtures/rails2311/fully-loaded/script/destroy +3 -0
  87. data/spec/fixtures/rails2311/fully-loaded/script/generate +3 -0
  88. data/spec/fixtures/rails2311/fully-loaded/script/performance/benchmarker +3 -0
  89. data/spec/fixtures/rails2311/fully-loaded/script/performance/profiler +3 -0
  90. data/spec/fixtures/rails2311/fully-loaded/script/plugin +3 -0
  91. data/spec/fixtures/rails2311/fully-loaded/script/runner +3 -0
  92. data/spec/fixtures/rails2311/fully-loaded/script/server +3 -0
  93. data/spec/fixtures/rails2311/fully-loaded/test/performance/browsing_test.rb +9 -0
  94. data/spec/fixtures/rails2311/fully-loaded/test/test_helper.rb +38 -0
  95. data/spec/fixtures/rails2311/template/README +243 -0
  96. data/spec/fixtures/rails2311/template/Rakefile +10 -0
  97. data/spec/fixtures/rails2311/template/app/controllers/application_controller.rb +10 -0
  98. data/spec/fixtures/rails2311/template/app/helpers/application_helper.rb +3 -0
  99. data/spec/fixtures/rails2311/template/config/boot.rb +114 -0
  100. data/spec/fixtures/rails2311/template/config/database.yml +22 -0
  101. data/spec/fixtures/rails2311/template/config/environment.rb +41 -0
  102. data/spec/fixtures/rails2311/template/config/environments/development.rb +17 -0
  103. data/spec/fixtures/rails2311/template/config/environments/production.rb +28 -0
  104. data/spec/fixtures/rails2311/template/config/environments/test.rb +28 -0
  105. data/spec/fixtures/rails2311/template/config/initializers/backtrace_silencers.rb +7 -0
  106. data/spec/fixtures/rails2311/template/config/initializers/cookie_verification_secret.rb +7 -0
  107. data/spec/fixtures/rails2311/template/config/initializers/inflections.rb +10 -0
  108. data/spec/fixtures/rails2311/template/config/initializers/mime_types.rb +5 -0
  109. data/spec/fixtures/rails2311/template/config/initializers/new_rails_defaults.rb +21 -0
  110. data/spec/fixtures/rails2311/template/config/initializers/session_store.rb +15 -0
  111. data/spec/fixtures/rails2311/template/config/locales/en.yml +5 -0
  112. data/spec/fixtures/rails2311/template/config/routes.rb +43 -0
  113. data/spec/fixtures/rails2311/template/db/seeds.rb +7 -0
  114. data/spec/fixtures/rails2311/template/doc/README_FOR_APP +2 -0
  115. data/spec/fixtures/rails2311/template/log/development.log +0 -0
  116. data/spec/fixtures/rails2311/template/log/production.log +0 -0
  117. data/spec/fixtures/rails2311/template/log/server.log +0 -0
  118. data/spec/fixtures/rails2311/template/log/test.log +0 -0
  119. data/spec/fixtures/rails2311/template/public/404.html +30 -0
  120. data/spec/fixtures/rails2311/template/public/422.html +30 -0
  121. data/spec/fixtures/rails2311/template/public/500.html +30 -0
  122. data/spec/fixtures/rails2311/template/public/favicon.ico +0 -0
  123. data/spec/fixtures/rails2311/template/public/images/rails.png +0 -0
  124. data/spec/fixtures/rails2311/template/public/index.html +275 -0
  125. data/spec/fixtures/rails2311/template/public/javascripts/application.js +2 -0
  126. data/spec/fixtures/rails2311/template/public/javascripts/controls.js +963 -0
  127. data/spec/fixtures/rails2311/template/public/javascripts/dragdrop.js +973 -0
  128. data/spec/fixtures/rails2311/template/public/javascripts/effects.js +1128 -0
  129. data/spec/fixtures/rails2311/template/public/javascripts/prototype.js +4320 -0
  130. data/spec/fixtures/rails2311/template/public/robots.txt +5 -0
  131. data/spec/fixtures/rails2311/template/script/about +4 -0
  132. data/spec/fixtures/rails2311/template/script/console +3 -0
  133. data/spec/fixtures/rails2311/template/script/dbconsole +3 -0
  134. data/spec/fixtures/rails2311/template/script/destroy +3 -0
  135. data/spec/fixtures/rails2311/template/script/generate +3 -0
  136. data/spec/fixtures/rails2311/template/script/performance/benchmarker +3 -0
  137. data/spec/fixtures/rails2311/template/script/performance/profiler +3 -0
  138. data/spec/fixtures/rails2311/template/script/plugin +3 -0
  139. data/spec/fixtures/rails2311/template/script/runner +3 -0
  140. data/spec/fixtures/rails2311/template/script/server +3 -0
  141. data/spec/fixtures/rails2311/template/test/performance/browsing_test.rb +9 -0
  142. data/spec/fixtures/rails2311/template/test/test_helper.rb +38 -0
  143. data/spec/fixtures/rails32/clean-install/.gitignore +15 -0
  144. data/spec/fixtures/rails32/clean-install/Gemfile +38 -0
  145. data/spec/fixtures/rails32/clean-install/README.rdoc +261 -0
  146. data/spec/fixtures/rails32/clean-install/Rakefile +7 -0
  147. data/spec/fixtures/rails32/clean-install/app/assets/images/rails.png +0 -0
  148. data/spec/fixtures/rails32/clean-install/app/assets/javascripts/application.js +15 -0
  149. data/spec/fixtures/rails32/clean-install/app/assets/stylesheets/application.css +13 -0
  150. data/spec/fixtures/rails32/clean-install/app/controllers/application_controller.rb +3 -0
  151. data/spec/fixtures/rails32/clean-install/app/helpers/application_helper.rb +2 -0
  152. data/spec/fixtures/rails32/clean-install/app/mailers/.gitkeep +0 -0
  153. data/spec/fixtures/rails32/clean-install/app/models/.gitkeep +0 -0
  154. data/spec/fixtures/rails32/clean-install/app/views/layouts/application.html.erb +14 -0
  155. data/spec/fixtures/rails32/clean-install/config/application.rb +59 -0
  156. data/spec/fixtures/rails32/clean-install/config/boot.rb +6 -0
  157. data/spec/fixtures/rails32/clean-install/config/database.yml +25 -0
  158. data/spec/fixtures/rails32/clean-install/config/environment.rb +5 -0
  159. data/spec/fixtures/rails32/clean-install/config/environments/development.rb +37 -0
  160. data/spec/fixtures/rails32/clean-install/config/environments/production.rb +67 -0
  161. data/spec/fixtures/rails32/clean-install/config/environments/test.rb +37 -0
  162. data/spec/fixtures/rails32/clean-install/config/initializers/backtrace_silencers.rb +7 -0
  163. data/spec/fixtures/rails32/clean-install/config/initializers/inflections.rb +15 -0
  164. data/spec/fixtures/rails32/clean-install/config/initializers/mime_types.rb +5 -0
  165. data/spec/fixtures/rails32/clean-install/config/initializers/secret_token.rb +7 -0
  166. data/spec/fixtures/rails32/clean-install/config/initializers/session_store.rb +8 -0
  167. data/spec/fixtures/rails32/clean-install/config/initializers/wrap_parameters.rb +14 -0
  168. data/spec/fixtures/rails32/clean-install/config/locales/en.yml +5 -0
  169. data/spec/fixtures/rails32/clean-install/config/routes.rb +58 -0
  170. data/spec/fixtures/rails32/clean-install/config.ru +4 -0
  171. data/spec/fixtures/rails32/clean-install/db/seeds.rb +7 -0
  172. data/spec/fixtures/rails32/clean-install/doc/README_FOR_APP +2 -0
  173. data/spec/fixtures/rails32/clean-install/lib/assets/.gitkeep +0 -0
  174. data/spec/fixtures/rails32/clean-install/lib/tasks/.gitkeep +0 -0
  175. data/spec/fixtures/rails32/clean-install/log/.gitkeep +0 -0
  176. data/spec/fixtures/rails32/clean-install/public/404.html +26 -0
  177. data/spec/fixtures/rails32/clean-install/public/422.html +26 -0
  178. data/spec/fixtures/rails32/clean-install/public/500.html +25 -0
  179. data/spec/fixtures/rails32/clean-install/public/favicon.ico +0 -0
  180. data/spec/fixtures/rails32/clean-install/public/index.html +241 -0
  181. data/spec/fixtures/rails32/clean-install/public/robots.txt +5 -0
  182. data/spec/fixtures/rails32/clean-install/script/rails +6 -0
  183. data/spec/fixtures/rails32/clean-install/test/fixtures/.gitkeep +0 -0
  184. data/spec/fixtures/rails32/clean-install/test/functional/.gitkeep +0 -0
  185. data/spec/fixtures/rails32/clean-install/test/integration/.gitkeep +0 -0
  186. data/spec/fixtures/rails32/clean-install/test/performance/browsing_test.rb +12 -0
  187. data/spec/fixtures/rails32/clean-install/test/test_helper.rb +13 -0
  188. data/spec/fixtures/rails32/clean-install/test/unit/.gitkeep +0 -0
  189. data/spec/fixtures/rails32/clean-install/vendor/assets/javascripts/.gitkeep +0 -0
  190. data/spec/fixtures/rails32/clean-install/vendor/assets/stylesheets/.gitkeep +0 -0
  191. data/spec/fixtures/rails32/clean-install/vendor/plugins/.gitkeep +0 -0
  192. data/spec/fixtures/rails32/fully-loaded/Gemfile +37 -0
  193. data/spec/fixtures/rails32/fully-loaded/README.rdoc +261 -0
  194. data/spec/fixtures/rails32/fully-loaded/Rakefile +7 -0
  195. data/spec/fixtures/rails32/fully-loaded/app/assets/images/rails.png +0 -0
  196. data/spec/fixtures/rails32/fully-loaded/app/assets/images/riding-you.jpg +0 -0
  197. data/spec/fixtures/rails32/fully-loaded/app/assets/javascripts/application.js +16 -0
  198. data/spec/fixtures/rails32/fully-loaded/app/assets/stylesheets/application.css +13 -0
  199. data/spec/fixtures/rails32/fully-loaded/app/assets/stylesheets/some-other-css.css +3 -0
  200. data/spec/fixtures/rails32/fully-loaded/app/assets/stylesheets/sub-css/sub-css.css +1 -0
  201. data/spec/fixtures/rails32/fully-loaded/app/controllers/application_controller.rb +3 -0
  202. data/spec/fixtures/rails32/fully-loaded/app/helpers/application_helper.rb +2 -0
  203. data/spec/fixtures/rails32/fully-loaded/app/views/layouts/application.html.erb +14 -0
  204. data/spec/fixtures/rails32/fully-loaded/config/application.rb +65 -0
  205. data/spec/fixtures/rails32/fully-loaded/config/boot.rb +6 -0
  206. data/spec/fixtures/rails32/fully-loaded/config/environment.rb +5 -0
  207. data/spec/fixtures/rails32/fully-loaded/config/environments/development.rb +31 -0
  208. data/spec/fixtures/rails32/fully-loaded/config/environments/production.rb +64 -0
  209. data/spec/fixtures/rails32/fully-loaded/config/environments/test.rb +35 -0
  210. data/spec/fixtures/rails32/fully-loaded/config/initializers/backtrace_silencers.rb +7 -0
  211. data/spec/fixtures/rails32/fully-loaded/config/initializers/inflections.rb +15 -0
  212. data/spec/fixtures/rails32/fully-loaded/config/initializers/mime_types.rb +5 -0
  213. data/spec/fixtures/rails32/fully-loaded/config/initializers/secret_token.rb +7 -0
  214. data/spec/fixtures/rails32/fully-loaded/config/initializers/session_store.rb +8 -0
  215. data/spec/fixtures/rails32/fully-loaded/config/initializers/wrap_parameters.rb +10 -0
  216. data/spec/fixtures/rails32/fully-loaded/config/locales/en.yml +5 -0
  217. data/spec/fixtures/rails32/fully-loaded/config/routes.rb +58 -0
  218. data/spec/fixtures/rails32/fully-loaded/config.ru +4 -0
  219. data/spec/fixtures/rails32/fully-loaded/db/seeds.rb +7 -0
  220. data/spec/fixtures/rails32/fully-loaded/doc/README_FOR_APP +2 -0
  221. data/spec/fixtures/rails32/fully-loaded/public/404.html +26 -0
  222. data/spec/fixtures/rails32/fully-loaded/public/422.html +26 -0
  223. data/spec/fixtures/rails32/fully-loaded/public/500.html +25 -0
  224. data/spec/fixtures/rails32/fully-loaded/public/503-error.html +25 -0
  225. data/spec/fixtures/rails32/fully-loaded/public/503.html +13 -0
  226. data/spec/fixtures/rails32/fully-loaded/public/favicon.ico +0 -0
  227. data/spec/fixtures/rails32/fully-loaded/public/index.html +241 -0
  228. data/spec/fixtures/rails32/fully-loaded/public/robots.txt +5 -0
  229. data/spec/fixtures/rails32/fully-loaded/script/rails +6 -0
  230. data/spec/fixtures/rails32/happy-path/Gemfile +37 -0
  231. data/spec/fixtures/rails32/happy-path/README.rdoc +261 -0
  232. data/spec/fixtures/rails32/happy-path/Rakefile +7 -0
  233. data/spec/fixtures/rails32/happy-path/app/assets/images/rails.png +0 -0
  234. data/spec/fixtures/rails32/happy-path/app/assets/javascripts/application.js +15 -0
  235. data/spec/fixtures/rails32/happy-path/app/assets/stylesheets/application.css +13 -0
  236. data/spec/fixtures/rails32/happy-path/app/controllers/application_controller.rb +3 -0
  237. data/spec/fixtures/rails32/happy-path/app/helpers/application_helper.rb +2 -0
  238. data/spec/fixtures/rails32/happy-path/app/views/layouts/application.html.erb +14 -0
  239. data/spec/fixtures/rails32/happy-path/config/application.rb +65 -0
  240. data/spec/fixtures/rails32/happy-path/config/boot.rb +6 -0
  241. data/spec/fixtures/rails32/happy-path/config/environment.rb +5 -0
  242. data/spec/fixtures/rails32/happy-path/config/environments/development.rb +31 -0
  243. data/spec/fixtures/rails32/happy-path/config/environments/production.rb +64 -0
  244. data/spec/fixtures/rails32/happy-path/config/environments/test.rb +35 -0
  245. data/spec/fixtures/rails32/happy-path/config/initializers/backtrace_silencers.rb +7 -0
  246. data/spec/fixtures/rails32/happy-path/config/initializers/inflections.rb +15 -0
  247. data/spec/fixtures/rails32/happy-path/config/initializers/mime_types.rb +5 -0
  248. data/spec/fixtures/rails32/happy-path/config/initializers/secret_token.rb +7 -0
  249. data/spec/fixtures/rails32/happy-path/config/initializers/session_store.rb +8 -0
  250. data/spec/fixtures/rails32/happy-path/config/initializers/wrap_parameters.rb +10 -0
  251. data/spec/fixtures/rails32/happy-path/config/locales/en.yml +5 -0
  252. data/spec/fixtures/rails32/happy-path/config/routes.rb +58 -0
  253. data/spec/fixtures/rails32/happy-path/config.ru +4 -0
  254. data/spec/fixtures/rails32/happy-path/db/seeds.rb +7 -0
  255. data/spec/fixtures/rails32/happy-path/doc/README_FOR_APP +2 -0
  256. data/spec/fixtures/rails32/happy-path/public/404.html +26 -0
  257. data/spec/fixtures/rails32/happy-path/public/422.html +26 -0
  258. data/spec/fixtures/rails32/happy-path/public/500.html +25 -0
  259. data/spec/fixtures/rails32/happy-path/public/503-error.html +12 -0
  260. data/spec/fixtures/rails32/happy-path/public/503.html +11 -0
  261. data/spec/fixtures/rails32/happy-path/public/favicon.ico +0 -0
  262. data/spec/fixtures/rails32/happy-path/public/index.html +241 -0
  263. data/spec/fixtures/rails32/happy-path/public/robots.txt +5 -0
  264. data/spec/fixtures/rails32/happy-path/script/rails +6 -0
  265. data/spec/helpers/app_creator.rb +28 -0
  266. data/spec/helpers/fakable_pathman_tester.rb +117 -0
  267. data/spec/html_asset_spec.rb +51 -0
  268. data/spec/path_spec.rb +6 -0
  269. data/spec/paths/fakable_pathman_tester_spec.rb +36 -0
  270. data/spec/paths/pathman_spec.rb +64 -0
  271. data/spec/paths/rails32_pathman_spec.rb +80 -0
  272. data/spec/rails2311/first_push_spec.rb +29 -0
  273. data/spec/rails32/first_push_spec.rb +76 -0
  274. data/spec/remote_asset_spec.rb +80 -0
  275. data/spec/shippable_spec.rb +79 -0
  276. data/spec/spec_helper.rb +22 -0
  277. data/spec/sync_spec.rb +85 -0
  278. data/spec/test_data/a.js +3 -0
  279. data/spec/test_data/all/1.css +4 -0
  280. data/spec/test_data/all/2.gif +0 -0
  281. data/spec/test_data/all/3.js +3 -0
  282. data/spec/test_data/all/all.html +8 -0
  283. data/spec/test_data/all/all2.html +7 -0
  284. data/spec/test_data/all/all3.html +8 -0
  285. data/spec/test_data/b.js +1 -0
  286. data/spec/test_data/c.js +5 -0
  287. data/spec/test_data/css/image/riding-you.jpg +0 -0
  288. data/spec/test_data/css/image/with-image.css +24 -0
  289. data/spec/test_data/css/imported-loop1.css +25 -0
  290. data/spec/test_data/css/imported-loop2.css +25 -0
  291. data/spec/test_data/css/imported.css +13 -0
  292. data/spec/test_data/css/imported2.css +13 -0
  293. data/spec/test_data/css/recursive/html-with-css.html +40 -0
  294. data/spec/test_data/css/recursive/imported-lvl2.css +25 -0
  295. data/spec/test_data/css/recursive/imported-lvl3.css +24 -0
  296. data/spec/test_data/css/recursive/imported-recursive.css +25 -0
  297. data/spec/test_data/css/recursive/riding-you.jpg +0 -0
  298. data/spec/test_data/css/with-asset.css +25 -0
  299. data/spec/test_data/css/with-multiple-assets.css +26 -0
  300. data/spec/test_data/external_paths/1.css +4 -0
  301. data/spec/test_data/external_paths/1.html +9 -0
  302. data/spec/test_data/sample.html +15 -0
  303. data/spec/test_data/test1.jpeg +0 -0
  304. data/spec/test_data/test2.png +0 -0
  305. data/spec/test_data/test3.gif +0 -0
  306. data/spec/test_data/y.css +1 -0
  307. data/spec/test_data/z.css +3 -0
  308. data/trackman.gemspec +27 -0
  309. metadata +437 -0
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run HappyPath::Application
@@ -0,0 +1,7 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
7
+ # Mayor.create(name: 'Emanuel', city: cities.first)
@@ -0,0 +1,2 @@
1
+ Use this README file to introduce your application and point to useful places in the API for learning more.
2
+ Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>HAPPY PATH FIXTURE</title>
5
+ </head>
6
+ <body>
7
+ <div class="dialog">
8
+ <h1>503 - Error</h1>
9
+ <p>The website is down right now ...</p>
10
+ </div>
11
+ </body>
12
+ </html>
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>HAPPY PATH FIXTURE</title>
5
+ </head>
6
+ <body>
7
+ <div class="dialog">
8
+ <h1>We're undergoing a maintenance(503)</h1>
9
+ </div>
10
+ </body>
11
+ </html>
@@ -0,0 +1,241 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Ruby on Rails: Welcome aboard</title>
5
+ <style type="text/css" media="screen">
6
+ body {
7
+ margin: 0;
8
+ margin-bottom: 25px;
9
+ padding: 0;
10
+ background-color: #f0f0f0;
11
+ font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
12
+ font-size: 13px;
13
+ color: #333;
14
+ }
15
+
16
+ h1 {
17
+ font-size: 28px;
18
+ color: #000;
19
+ }
20
+
21
+ a {color: #03c}
22
+ a:hover {
23
+ background-color: #03c;
24
+ color: white;
25
+ text-decoration: none;
26
+ }
27
+
28
+
29
+ #page {
30
+ background-color: #f0f0f0;
31
+ width: 750px;
32
+ margin: 0;
33
+ margin-left: auto;
34
+ margin-right: auto;
35
+ }
36
+
37
+ #content {
38
+ float: left;
39
+ background-color: white;
40
+ border: 3px solid #aaa;
41
+ border-top: none;
42
+ padding: 25px;
43
+ width: 500px;
44
+ }
45
+
46
+ #sidebar {
47
+ float: right;
48
+ width: 175px;
49
+ }
50
+
51
+ #footer {
52
+ clear: both;
53
+ }
54
+
55
+ #header, #about, #getting-started {
56
+ padding-left: 75px;
57
+ padding-right: 30px;
58
+ }
59
+
60
+
61
+ #header {
62
+ background-image: url("assets/rails.png");
63
+ background-repeat: no-repeat;
64
+ background-position: top left;
65
+ height: 64px;
66
+ }
67
+ #header h1, #header h2 {margin: 0}
68
+ #header h2 {
69
+ color: #888;
70
+ font-weight: normal;
71
+ font-size: 16px;
72
+ }
73
+
74
+
75
+ #about h3 {
76
+ margin: 0;
77
+ margin-bottom: 10px;
78
+ font-size: 14px;
79
+ }
80
+
81
+ #about-content {
82
+ background-color: #ffd;
83
+ border: 1px solid #fc0;
84
+ margin-left: -55px;
85
+ margin-right: -10px;
86
+ }
87
+ #about-content table {
88
+ margin-top: 10px;
89
+ margin-bottom: 10px;
90
+ font-size: 11px;
91
+ border-collapse: collapse;
92
+ }
93
+ #about-content td {
94
+ padding: 10px;
95
+ padding-top: 3px;
96
+ padding-bottom: 3px;
97
+ }
98
+ #about-content td.name {color: #555}
99
+ #about-content td.value {color: #000}
100
+
101
+ #about-content ul {
102
+ padding: 0;
103
+ list-style-type: none;
104
+ }
105
+
106
+ #about-content.failure {
107
+ background-color: #fcc;
108
+ border: 1px solid #f00;
109
+ }
110
+ #about-content.failure p {
111
+ margin: 0;
112
+ padding: 10px;
113
+ }
114
+
115
+
116
+ #getting-started {
117
+ border-top: 1px solid #ccc;
118
+ margin-top: 25px;
119
+ padding-top: 15px;
120
+ }
121
+ #getting-started h1 {
122
+ margin: 0;
123
+ font-size: 20px;
124
+ }
125
+ #getting-started h2 {
126
+ margin: 0;
127
+ font-size: 14px;
128
+ font-weight: normal;
129
+ color: #333;
130
+ margin-bottom: 25px;
131
+ }
132
+ #getting-started ol {
133
+ margin-left: 0;
134
+ padding-left: 0;
135
+ }
136
+ #getting-started li {
137
+ font-size: 18px;
138
+ color: #888;
139
+ margin-bottom: 25px;
140
+ }
141
+ #getting-started li h2 {
142
+ margin: 0;
143
+ font-weight: normal;
144
+ font-size: 18px;
145
+ color: #333;
146
+ }
147
+ #getting-started li p {
148
+ color: #555;
149
+ font-size: 13px;
150
+ }
151
+
152
+
153
+ #sidebar ul {
154
+ margin-left: 0;
155
+ padding-left: 0;
156
+ }
157
+ #sidebar ul h3 {
158
+ margin-top: 25px;
159
+ font-size: 16px;
160
+ padding-bottom: 10px;
161
+ border-bottom: 1px solid #ccc;
162
+ }
163
+ #sidebar li {
164
+ list-style-type: none;
165
+ }
166
+ #sidebar ul.links li {
167
+ margin-bottom: 5px;
168
+ }
169
+
170
+ .filename {
171
+ font-style: italic;
172
+ }
173
+ </style>
174
+ <script type="text/javascript">
175
+ function about() {
176
+ info = document.getElementById('about-content');
177
+ if (window.XMLHttpRequest)
178
+ { xhr = new XMLHttpRequest(); }
179
+ else
180
+ { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
181
+ xhr.open("GET","rails/info/properties",false);
182
+ xhr.send("");
183
+ info.innerHTML = xhr.responseText;
184
+ info.style.display = 'block'
185
+ }
186
+ </script>
187
+ </head>
188
+ <body>
189
+ <div id="page">
190
+ <div id="sidebar">
191
+ <ul id="sidebar-items">
192
+ <li>
193
+ <h3>Browse the documentation</h3>
194
+ <ul class="links">
195
+ <li><a href="http://guides.rubyonrails.org/">Rails Guides</a></li>
196
+ <li><a href="http://api.rubyonrails.org/">Rails API</a></li>
197
+ <li><a href="http://www.ruby-doc.org/core/">Ruby core</a></li>
198
+ <li><a href="http://www.ruby-doc.org/stdlib/">Ruby standard library</a></li>
199
+ </ul>
200
+ </li>
201
+ </ul>
202
+ </div>
203
+
204
+ <div id="content">
205
+ <div id="header">
206
+ <h1>Welcome aboard</h1>
207
+ <h2>You&rsquo;re riding Ruby on Rails!</h2>
208
+ </div>
209
+
210
+ <div id="about">
211
+ <h3><a href="rails/info/properties" onclick="about(); return false">About your application&rsquo;s environment</a></h3>
212
+ <div id="about-content" style="display: none"></div>
213
+ </div>
214
+
215
+ <div id="getting-started">
216
+ <h1>Getting started</h1>
217
+ <h2>Here&rsquo;s how to get rolling:</h2>
218
+
219
+ <ol>
220
+ <li>
221
+ <h2>Use <code>rails generate</code> to create your models and controllers</h2>
222
+ <p>To see all available options, run it without parameters.</p>
223
+ </li>
224
+
225
+ <li>
226
+ <h2>Set up a default route and remove <span class="filename">public/index.html</span></h2>
227
+ <p>Routes are set up in <span class="filename">config/routes.rb</span>.</p>
228
+ </li>
229
+
230
+ <li>
231
+ <h2>Create your database</h2>
232
+ <p>Run <code>rake db:create</code> to create your database. If you're not using SQLite (the default), edit <span class="filename">config/database.yml</span> with your username and password.</p>
233
+ </li>
234
+ </ol>
235
+ </div>
236
+ </div>
237
+
238
+ <div id="footer">&nbsp;</div>
239
+ </div>
240
+ </body>
241
+ </html>
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,28 @@
1
+ class AppCreator
2
+ def self.get_config url
3
+ response = RestClient.post url, :plan => 'test', :heroku_id => 123
4
+ json = JSON.parse response
5
+
6
+ trackman_url = json['config']['TRACKMAN_URL']
7
+
8
+ [[:@@server_url, trackman_url], [:@@site, "#{trackman_url}/assets"]]
9
+ end
10
+
11
+ def self.create
12
+ user = ENV['HEROKU_USERNAME']
13
+ pass = ENV['HEROKU_PASSWORD']
14
+ server = ENV['TRACKMAN_SERVER_URL']
15
+
16
+ @@config = get_config "http://#{user}:#{pass}@#{server}/heroku/resources"
17
+
18
+ @@config.each do |s, v|
19
+ RemoteAsset.send(:class_variable_set, s, v)
20
+ end
21
+ end
22
+
23
+ def self.reset
24
+ @@config.each do |k,v|
25
+ RemoteAsset.send(:class_variable_set, k, v)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,117 @@
1
+ class FakablePathManTester
2
+ @@modules = [PathResolver, Rails32PathResolver, RailsPathResolver]
3
+ Conventions = Trackman::Assets::Components::Conventions
4
+
5
+ def self.switch_on prepath
6
+ @@modules.each do |m|
7
+ m.module_eval do
8
+ alias real_translate translate
9
+ alias real_working_dir working_dir if method_defined? :working_dir
10
+
11
+ define_method :translate do |url, parent_url|
12
+ parent = parent_url.to_s.dup
13
+ parent.slice!(prepath)
14
+ prepath + real_translate(url, parent)
15
+ end
16
+
17
+ if method_defined? :working_dir
18
+ define_method :working_dir do
19
+ real_working_dir + prepath
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ Conventions.module_eval do
26
+ alias :real_maintenance_path :maintenance_path
27
+ alias :real_error_path :error_path
28
+
29
+ define_method :maintenance_path do
30
+ Pathname.new(prepath + real_maintenance_path.to_s)
31
+ end
32
+
33
+ define_method :error_path do
34
+ Pathname.new(prepath + real_error_path.to_s)
35
+ end
36
+ end
37
+ end
38
+
39
+ def self.switch_off
40
+ @@modules.each do |m|
41
+ m.module_eval do
42
+ alias :translate :real_translate
43
+ remove_method :real_translate
44
+
45
+ if method_defined? :working_dir
46
+ alias :working_dir :real_working_dir
47
+ remove_method :real_working_dir
48
+ end
49
+ end
50
+ end
51
+
52
+ Conventions.module_eval do
53
+ alias :maintenance_path :real_maintenance_path
54
+ alias :error_path :real_error_path
55
+
56
+ remove_method :real_maintenance_path
57
+ remove_method :real_error_path
58
+ end
59
+ end
60
+ end
61
+
62
+
63
+ module Trackman
64
+ module Assets
65
+ module Components
66
+ module AssetFactory
67
+ alias :old_asset_pipeline_enabled? :asset_pipeline_enabled?
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ class ActLikeRails32
74
+ def self.switch_on
75
+ Trackman::Assets::Components::AssetFactory.module_eval do
76
+ alias :old_asset_pipeline_enabled? :asset_pipeline_enabled?
77
+
78
+ define_method :asset_pipeline_enabled? do
79
+ true
80
+ end
81
+ end
82
+ end
83
+
84
+ def self.switch_off
85
+ Trackman::Assets::Components::AssetFactory.module_eval do
86
+ alias :asset_pipeline_enabled? :old_asset_pipeline_enabled?
87
+ remove_method :old_asset_pipeline_enabled?
88
+ end
89
+ end
90
+ end
91
+
92
+ class ActLikeRails2311
93
+ def self.switch_on
94
+ Trackman::Assets::Components::AssetFactory.module_eval do
95
+ alias :old_rails_defined? :rails_defined?
96
+ alias :old_asset_pipeline_enabled? :asset_pipeline_enabled?
97
+
98
+ define_method :rails_defined? do
99
+ true
100
+ end
101
+
102
+ define_method :asset_pipeline_enabled? do
103
+ false
104
+ end
105
+ end
106
+ end
107
+
108
+ def self.switch_off
109
+ Trackman::Assets::Components::AssetFactory.module_eval do
110
+ alias :rails_defined? :old_rails_defined?
111
+ alias :asset_pipeline_enabled? :old_asset_pipeline_enabled?
112
+
113
+ remove_method :old_rails_defined?
114
+ remove_method :old_asset_pipeline_enabled?
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe Trackman::Assets::HtmlAsset do
4
+ it "should contains every image within the html as assets" do
5
+ asset = Asset.create(:path => 'spec/test_data/sample.html')
6
+
7
+ expected = [
8
+ 'spec/test_data/test1.jpeg',
9
+ 'spec/test_data/test2.png',
10
+ 'spec/test_data/test3.gif'
11
+ ].map{|x| Asset.create(:path => x) }
12
+
13
+ actual = asset.assets.select{|a| !(['.css', '.js'].include?(a.path.extname)) }
14
+
15
+ actual.should eq(expected)
16
+ end
17
+
18
+
19
+ it "should contains every js within the html as assets" do
20
+ asset = Asset.create(:path => 'spec/test_data/sample.html')
21
+
22
+ expected = ['a', 'b', 'c'].map{|x| Asset.create(:path =>"spec/test_data/#{x}.js") }
23
+
24
+ actual = asset.assets.select{|a| a.path.extname == '.js'}
25
+
26
+ actual.should eq(expected)
27
+ end
28
+
29
+ it "should contains every css within the html as assets" do
30
+ asset = Asset.create(:path => 'spec/test_data/sample.html')
31
+
32
+ expected = ['y', 'z'].map{|x| Asset.create(:path => "spec/test_data/#{x}.css") }
33
+
34
+ actual = asset.assets.select{|a| a.path.extname == '.css'}
35
+
36
+ actual.should eq(expected)
37
+ end
38
+
39
+ it "returns all recursive css imports and images under the html file that contains css" do
40
+ expected = [
41
+ CssAsset.new(:path => 'spec/test_data/css/recursive/imported-lvl2.css'),
42
+ CssAsset.new(:path => 'spec/test_data/css/recursive/imported-lvl3.css'),
43
+ Asset.new(:path => 'spec/test_data/css/recursive/riding-you.jpg')
44
+ ]
45
+ asset = Asset.create(:path => 'spec/test_data/css/recursive/html-with-css.html')
46
+
47
+ actual = asset.assets
48
+
49
+ actual.should == expected
50
+ end
51
+ end
data/spec/path_spec.rb ADDED
@@ -0,0 +1,6 @@
1
+
2
+
3
+
4
+
5
+
6
+
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+ require 'helpers/fakable_pathman_tester'
3
+
4
+ class Tester
5
+ extend Rails32PathResolver
6
+ end
7
+
8
+ describe FakablePathManTester do
9
+ before :all do
10
+ FakablePathManTester.switch_on 'spec/fixtures/rails32/clean_path/'
11
+ end
12
+
13
+ after :all do
14
+ FakablePathManTester.switch_off
15
+ end
16
+
17
+ it "should have a root anywhere for favicons" do
18
+ parent_url = 'spec/fixtures/rails32/clean_path/app/assets/stylesheets/trundle.css'
19
+ url = 'image.jpg'
20
+
21
+ actual = Tester.translate url, parent_url
22
+ expected = 'spec/fixtures/rails32/clean_path/app/assets/images/image.jpg'
23
+
24
+ actual.should == expected
25
+ end
26
+
27
+ it "should have a root anywhere for linked images" do
28
+ parent_url = 'spec/fixtures/rails32/clean_path/public/503.html'
29
+ url = '/favicon.png'
30
+
31
+ actual = Tester.translate url, parent_url
32
+ expected = 'spec/fixtures/rails32/clean_path/public/favicon.png'
33
+
34
+ actual.should == expected
35
+ end
36
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ class PathTester
4
+ extend PathResolver
5
+ end
6
+
7
+ describe PathResolver do
8
+ it 'gives a path at the same level as the parent if the url is relative and there is no parent specified' do
9
+ parent_url = 'allo/home.html'
10
+ url = 'bob.jpg'
11
+
12
+ actual = PathTester.translate url, parent_url
13
+ expected = 'allo/bob.jpg'
14
+
15
+ actual.should == expected
16
+ end
17
+
18
+ it 'absolute url should return a path relative to the root of the app' do
19
+ parent_url = 'allo/home.html'
20
+ url = '/bob.jpg'
21
+
22
+ actual = PathTester.translate url, parent_url
23
+ expected = 'bob.jpg'
24
+
25
+ actual.should == expected
26
+ end
27
+
28
+ it "should throw when the parent_url is absolute" do
29
+ parent_url = '/allo/home.html'
30
+ url = '/bob.jpg'
31
+
32
+ lambda{ PathTester.translate url, parent_url }.should raise_error
33
+ end
34
+
35
+ it "should nest on absolute" do
36
+ parent_url = 'allo/home.html'
37
+ url = '/johnny/cash/likes/women/but/not/bob.jpg'
38
+
39
+ actual = PathTester.translate url, parent_url
40
+ expected = 'johnny/cash/likes/women/but/not/bob.jpg'
41
+
42
+ actual.should == expected
43
+ end
44
+
45
+ it "should nest on relative" do
46
+ parent_url = 'johnny/cash/likes/women/but/not/home.html'
47
+ url = 'wazzo/wazoo/bob.jpg'
48
+
49
+ actual = PathTester.translate url, parent_url
50
+ expected = 'johnny/cash/likes/women/but/not/wazzo/wazoo/bob.jpg'
51
+
52
+ actual.should == expected
53
+ end
54
+
55
+ it "should handle pathname as strings" do
56
+ parent_url = Pathname.new 'allo/home.html'
57
+ url = Pathname.new 'bob.jpg'
58
+
59
+ actual = PathTester.translate url, parent_url
60
+ expected = 'allo/bob.jpg'
61
+
62
+ actual.should == expected
63
+ end
64
+ end