mutton 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +302 -0
- data/Rakefile +37 -0
- data/lib/mutton/config.rb +69 -0
- data/lib/mutton/engine.rb +37 -0
- data/lib/mutton/handlebars_compiler.rb +25 -0
- data/lib/mutton/handlebars_template_converter.rb +61 -0
- data/lib/mutton/handlebars_template_handler.rb +55 -0
- data/lib/mutton/notification_subscriber.rb +18 -0
- data/lib/mutton/version.rb +3 -0
- data/lib/mutton.rb +19 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +20 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +20 -0
- data/test/dummy/app/controllers/codeless_controller.rb +2 -0
- data/test/dummy/app/controllers/examples_controller.rb +7 -0
- data/test/dummy/app/controllers/libraries_controller.rb +7 -0
- data/test/dummy/app/controllers/samples_controller.rb +19 -0
- data/test/dummy/app/custom_template_directory/codeless_samples/custom.hbs +6 -0
- data/test/dummy/app/handlebars/templates/codeless/plain.hbs +1 -0
- data/test/dummy/app/handlebars/templates/codeless/with_html.hbs +6 -0
- data/test/dummy/app/handlebars/templates/examples/_the_play.hbs +1 -0
- data/test/dummy/app/handlebars/templates/examples/codeless_panel.hbs +1 -0
- data/test/dummy/app/handlebars/templates/examples/no_partials.hbs +6 -0
- data/test/dummy/app/handlebars/templates/examples/partials_included.hbs +7 -0
- data/test/dummy/app/handlebars/templates/examples/partials_within_directory.hbs +4 -0
- data/test/dummy/app/handlebars/templates/examples/partials_without_underscore.hbs +3 -0
- data/test/dummy/app/handlebars/templates/examples/the_speech.hbs +1 -0
- data/test/dummy/app/handlebars/templates/examples/underscore_partials.hbs +4 -0
- data/test/dummy/app/handlebars/templates/examples/uses_helpers.hbs +2 -0
- data/test/dummy/app/handlebars/templates/helpers/another_helper.js +3 -0
- data/test/dummy/app/handlebars/templates/helpers/sample_helpers.js +7 -0
- data/test/dummy/app/handlebars/templates/index.js +1 -0
- data/test/dummy/app/handlebars/templates/libraries/complex_helper.hbs +1 -0
- data/test/dummy/app/handlebars/templates/libraries/many_helpers.hbs +2 -0
- data/test/dummy/app/handlebars/templates/libraries/simple_helper.hbs +1 -0
- data/test/dummy/app/handlebars/templates/samples/_partial_1.hbs +1 -0
- data/test/dummy/app/handlebars/templates/samples/depth_1.hbs +2 -0
- data/test/dummy/app/handlebars/templates/samples/depth_1_name_anything.hbs +2 -0
- data/test/dummy/app/handlebars/templates/samples/depth_1_shared.hbs +2 -0
- data/test/dummy/app/handlebars/templates/samples/depth_2.hbs +3 -0
- data/test/dummy/app/handlebars/templates/samples/name_me_anything.hbs +1 -0
- data/test/dummy/app/handlebars/templates/samples/plain.hbs +1 -0
- data/test/dummy/app/handlebars/templates/samples/with_attributes.hbs +7 -0
- data/test/dummy/app/handlebars/templates/samples/with_html.hbs +7 -0
- data/test/dummy/app/handlebars/templates/shared/_coriolanus.hbs +1 -0
- data/test/dummy/app/handlebars/templates/shared/_partial_2.hbs +1 -0
- data/test/dummy/app/handlebars/templates/shared/_partial_3.hbs +2 -0
- data/test/dummy/app/handlebars/templates/shared/_partial_4.hbs +1 -0
- data/test/dummy/app/handlebars/templates/shared/menu_list.hbs +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/examples/index.html.erb +15 -0
- data/test/dummy/app/views/examples/no_partials.js.erb +5 -0
- data/test/dummy/app/views/examples/partials_included.js.erb +5 -0
- data/test/dummy/app/views/examples/partials_within_directory.js.erb +5 -0
- data/test/dummy/app/views/examples/partials_without_underscore.js.erb +5 -0
- data/test/dummy/app/views/examples/underscore_partials.js.erb +5 -0
- data/test/dummy/app/views/examples/uses_helpers.js.erb +5 -0
- data/test/dummy/app/views/examples/without_code.js.erb +5 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/bin/setup +29 -0
- data/test/dummy/config/application.rb +34 -0
- data/test/dummy/config/boot.rb +7 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +41 -0
- data/test/dummy/config/environments/production.rb +79 -0
- data/test/dummy/config/environments/test.rb +44 -0
- data/test/dummy/config/initializers/assets.rb +11 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/mutton.rb +3 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +6 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/log/development.log +10233 -0
- data/test/dummy/log/test.log +63954 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/assets/application-28dd61ca42cca674724affd9fac099baee64d4502feef14fc20f98e844a75bd6.js +12259 -0
- data/test/dummy/public/assets/application-e80e8f2318043e8af94dddc2adad5a4f09739a8ebb323b3ab31cd71d45fd9113.css +16 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-4Gb4l2J8UZRMjLSYQZXraqYGajNvJoSownetLrgGoE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-6aXXSMJ2d3ZUJ_SNIbIJLSYipo6v6ChkFFxdWAP5EY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-6itKhG5FCrsei5Q7g_3TPDqQY5oefNWXVU6H_-VfYY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-A9EXgCMqnQUQjg0YZkaGyHdwVJqxxMTv0CCDZItDyw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-W0uU28NaoEsyUKHmrfp8ysGx4JKlakIKqeHHW0qEUw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-hyuA_pfaXlNxR0DfK8GkTfLQWGMgYF5rC4h8t16Ra4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-nns5q2a5E0gp6dHAuP62ekponV7KBnPXU_MGdG-CNw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-yrKqNcW_szQr-BZMoJIsWoXG_ODKMfaWqcvBMZHYZc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0YJHMYm__BEglcitfyVHtp0g1z02mtQshsIo1G_Yvvo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0ogCXYi5cPKxZUTepylQ3l_8rPYbAcC-TruhfJzsrjw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0xlD6YEaid-B3Hoykpx_1E6h3eXCmkbESbvOggl7k78.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1-AlbZNUDxGsd4wPSVZIkpysbM3d6c94p32oqNTKeGU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/13YgWrqqbLlZyc4QUED9w_OUl6qOH_3Q9ZdwfDRgUWU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/13mU6IIs2CannHaUkGbH586k0noLA0wzPf4eF6WEXKI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/181EJNB7T-CKEf5Gtn_VnoX57TJGvB6oo7QDVEZx9UU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1MP6vb-o_jUZzuLRPSVp2uUvwdQHUFvc9LHv1EntuSw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1N4WOk9UkleGu6qwrzmqbPqt6ylcFSSG1hl7UlsY_QU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1Rqg1EwHMyxtUGWGY2XzjbvmKbIDvXTOq7dr03McTjk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1Sht7Imx2FKNgc0-E5F9cYT_vcIazxP-dZWYqqUxtxw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1ZX4OwkixtKdayerG6HBvi1zobKjvE409O0RuM05Y7A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1c5oqdfb1nVUVOkqSujOs7JTlooBcNr5Q_v-HYKkxfk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1gqHKm09rQhabOFU65VhLYCs_KDye7SXA-h7I0qK5ks.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1vblHJeMvwpFJRSNiODnexjBT1FyachvfdxQg0Y8i7U.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1vuwpFG2moiWfMdfAWN8tKv5oIhW2RCEhdzJLffRHIo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1xnJFwu36Px9oJBWLAkq3Xi1INKix_R71nCrRt7IxJU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1z9y3dSF82kWi5OWm_ZmsJ35j5QaPxsEIc_lRzUEZNU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/218b0V4AtStu-Lj-WMkxNPXJ4VGhVfeQCetuoTQDTR4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/23MGMCpHvx40EVOoT3unFeGanMbt41xUVBIaT0vkVus.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2R8ByHnGrgcDQ_jJ2o7It590FM9iPgir3doBeMPe0ZM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2mIzArRC3T-YnV0PqfYVs9oUE8h_dLcmI7PSPU2pHms.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2wd33EhySdCwjnra04OLy-493_IGshlF1ssCesYsyNM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3GKfF4Hr3MZ6RvdJziGnQLYRI3waee6Y7nVFc3vEbfo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3GTIZ_VIdhFFIHuYBVSNsNzznQmhoW7TQE9tHqRT9jM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3JEPv0gBTPC_MZy8Abk7toD34RT8Td2u-gcYWYvlGww.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3YT2-TU0geZ498HhtSwtlt0DCcK3GeNzbexlXvsO_AY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3pp87M7NDhlmCKWw8LV8CAD9dgMIZvfZO_5khvtfF1s.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3qvZcEv5p3qVFlabcVSKyjoeaFtsTAUz7zoOVJ99Pdc.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3zAo6R9b7wnMmArktz4hB2x5QeNxSJrfPQwt-yV98Qg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4-Qi-cKueYTGyZs2aAvNhnLI8nm1HFHS25BNsjULzP4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/41-fCgwScQAqOaemxQtbWdjzNuNrZGQcEPDMLRWunrc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4dHXPo39XdcXkBDCWLHbfc7slHEkLqQlozHDiYtmlJs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4mD6cC9GGPVHX20DsfOBo8KCPW7s_ZqsVRlLMFVxAbs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4nT3Jw8S2_YbvZxstI_jiHig_OJvtr8VZs5K5Pq9ak0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5B5mqaaROFuwiuiqV_Pvv6z6cnEst3OC7p9JrgFbJ5s.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5NnQSLBtw5ZmZel_ordS3M2v-SlZBmQqIkB2K1zcUhI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5XVpQWnl-oGSVi6qjE7puJRGrtUtf_AAYvPOu_oMs0A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5aximAA8S0cnxP9o_XGIzOceRcVERCgJHUX-AtIKgQg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/65zYAmSEXVnVL1vZA3hdOK91ZXSL-FMf7xw8FdBzMOc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/683WGp7_9zGVtpHL7xt_u4qZUeDWsWDs54RuPwwEA6s.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6Qk9R54e31lB4bV84C4ZMSBGsnHcUvbg6vAh5h9KWAU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6Z8cxoPptFmKDOUpHILb5exxojOm2kwp61wt7L7gWV0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6Znxp4Z0OWpuHwWtTVpYzdf-bn12nPZ04y3TDzgjgkA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6n2yOXTI1uYynV13Hvj8Ity6Q6whYylImlfD_7F8T_0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7-65qC6jyF3Bqi9oV4I3BnTRaQpzZDqHwJiHvpnmUZo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/79DoKzjo8qapdt1g-eUKvTudaaIwVFv0koqWlfwK9l0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7Z753zAmDPmvxHXolaJMfUOV7xWrobqtagYLt5qBQiU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7h3h1uQ_7Y3f-0Ox-yeE6Nhor4-Qr0qyzXYu-Jmu53U.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7kSpUk3Wnh4fdTQcIoaG_OVKloIXrGL4DwLXQvcbJS0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7st8Q_YS7njXp27ABYRu6Lot4mw2ZatF6BS8MHwUZc0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8IGyLsUqQUL7L4JCjewjPiyo0KiSUiyGol9SynMu2jA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8TrU-gy1sQETBlGA2B_u_yRI2NAolPtuJIkz0P__E7Y.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8XVJZpVn32SWNynhVeU4exopygLfhVIiaqQNTbldrL4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8ffJ59ux2A0pzkskGpazSciq5Qx_OL2suIu5vMo31r8.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8k9v0086PmB-VM32qRcHLKbVRKEXYUQpFjtY5Dh8qOs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8o5zz9-GvXfBHjmMBmAYbUDo8ayD5Lf3To1_w667c6Y.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8xWiRbefmMdWv5qDIWAL_GdYn-WG5sNXHqDPzZx1hpQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9I7FX5TmRAeenIZwLX83FNftt9cT1_G2HaPoHSB4leo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9_yWVv6dsi75zzhwn_6artTint2ppsMytcRGoYQR0CQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9dVAAsM8OxsLX0ORZDEdyIKFydgp-6-UBYnv5iH-Xc8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9lxyAh5rZLGNa22VBUm3AHFhvbHAseKGJRJiF3iSJBg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9zJ9uyGYdtLRBxsmMlnvSSdWr-2GTEM9H_74g4S4wdA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AFmsXSzkZSedTegzlToA8bJkLx-orIUKpZOGDo3Mgb8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AOgdARLDBoERf00QlIJEc1a5MbRec05_DDrLUTmKCmA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ATwjpu5Ede_zEC2Sby806EaeBoBRvY_y-rngWHzhhIE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AUlW-UnhZrU7G8ojUGFJb9kJF-6TkpoF_EpEPk_ANU8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AWbdreCOtkZkTG5nb7KwFMCmkjI60Wx2SepNBxhePmE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AbfdyxyFnPD1p0usbyisvdwcRiLo0dzrqrAC2ZLIkOQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AeArAvPiItoJ6LNmqixbiTMClh4XceRMv0Z1Nn-s9_k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Ajws5M54AFV7OP-naSmNHUDlshRGQoqBXNvQ62x7Y54.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AwJm2tHvxlSBPGdLbyVlxQc4IKF2dateMNo_cg2fNI4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AwjcxJwtlKFRA7OKqMYuKLYH_qXqv4--8gqAeQpnbNA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/B38XJe1Ck69c6H3phXKyTpElU38bWzNrN0pDUhi8mqA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BL_fxM57MilxWu_-DjQvNl72FQQcrwCDq-SQ3a-DZno.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BMXuoEaIExVaDagD7nI23wZzO1KKDil_hSUvivRZxtg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BRShljvJtVc_xxBS9qj8lmV3WlC6OLUefBIPaGooYV4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Bb9vGJacK0add-xdPmeALyVMMpKCkVQJSDjSphQ5YOE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/C84u7NGlQzzMyz-7t1LNAhMmRH-uqYvSqigXMvR6yL0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CIGeQ2IuK49eFppefeHP9WhwtBPbldOFh4hhFfQjfLY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CJ0ko4mby2hTQ4zCTGWdKrqvpujS91l7vdMnQzGrL18.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CcsvWQWArbyWEbvKMkJlAt3o_BFnWS2Ut_jJ5hWyQB8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CfSzQntm6166_Zt9eGQutnbjnoN2jHBeoGKBMHpzNBw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CmLIOS1vlDMkSsjwtFFievjKf9i1fTnDRazyUp-fT1M.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CmwzJvfPUI2JQlMSE29Ht1uqssBzEu0i6l_lX3kjxyI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CnpkW4EcQAb-FGWKU9PvRWSP7PKMRAxBd0yiYgFZ1jk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/D7VJKfuY1c6CVJtmLiDFTMtZJRXFxDpI2BUo3W_q15A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DITm2eSnYh9Or59v0kVBLalf2W5N1zyQcBgW8qIxvT4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DPkBBLhZUlmSe3yL5mSCeY8hn7WGKc3b8FZzz9jzYr8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Df2eMdV6Hx7ZghHSlAIamuE2od6paf0hyJQU9PhVD7Q.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DisBlN43aJ5Y1A5KPJZzDecUZ3yYA34T8lqL3XuQflk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DqoRFg3pzAG9kLWLzHT7q3rUxzm_R0pYU7Kww2Cusls.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Drti9_d3tYp1OWnzT4JhID3i-V3oVUj55_Xezqm9vTU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/E0Me9t2TOKP5hPAX_Q1HMy-OXsdiazgL9wbmR55hTEo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/E3plakT2DZVjogL3eJPV4zz9_PeAEtgBqeMLv0_D3zk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ERmCCgVeRo-dVZybFqNaMeraSbU67OXGuIwPuwDaJEo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/E_BuSvmKruLxkkxrpDY9tkZPk4rnQ78KV-wVorjyAJk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Eaw067ia3okh4rFstIoxdGoZL6aXrze2Sslq8QdQTLk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EkAoAkMTH5d_jpArWAWhY2bao9_rgYll9qm0E80UmMw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Ev8d_ZpHHJYaeXO-Dp4ROpOaNBdoHj35XcynBOmtq6o.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/F5-BsQc116ssrFnA4npnEJq9dP23fIPOMxUpsQxF82w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FA8PHPkoJaOhyVO1wC-pbzEInAajxTgvAFTZR4fmwOI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FIJhn3JCNk7p1oacJ873h14WTbJ3au7J3z8sMJuFsj0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FLVdfuY0UPwZMOxX0iuZJjpwImJ0SsnlPtvkUkxdwZ0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FQX00kjS8yrxuj8FynjMOTUCmaKOJNKhQH0YPymtdQk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FTuZUOrgkqI-u0jBmwPhGD65gCVpxsIee6ZPt_1YwUM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FdNbUtkSLBUM0Jr3D7Ozv8ISJRFiDnDf5wlBRxC5z_o.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FgO6zr0d_xzCfpPgMA7GiMiVvwcQbvHT4jM6bTymCIA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FkTSQ-sgNdRs4lR8fWhaNTqXX3t7XVfoR65PanxEqOI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FmlmnACSrxVjqVo_dE3wDkvRtDhY0OVvItmTf4mnNWk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Fr3rHktafbbou3FspfnJCf5Xh9CGb5unIaht-iRun14.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Fv5LNyIOWA9-gp1MIqWpQjPFdBEIk-FKxgKv_pSxvcs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/G1H_JNtcCP_ySZVwqb997dxkJGrFskfEVZKyCT86Yn8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/G4CtVx5WwUvQZ7kgNdT6mhhae9A7Vh5dPuwv9ggF53o.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/G4bYtIkaHmLl_yr2AWa0rbdFavl004ITLYgUv3cVFaI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GCVMppZNYuGd7QdaSfsMBX9Fpd34lg38zljpUnvcz-4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GaGok1Ld_aWr9j_-KURAXodef-zi_HwDNk2aRj6fRyo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GnnfhBGXLc0b9LmsMF2h0VTaXaEJMT0lfLsoMpcnd58.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H0yX0U_EHjVl9b-xjof0yN0SCFA5al7a-QdwmNpgnMc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H4bhWRvjFwP2ywC-Y2ibB-z3XI6bv6yrM5KoTOOM2uQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HGrhh1J0eb8iLVBztnzGlJntGYuvrhaVEteY9-w-URY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HPRAOQ-vKD5nraSnnXZGNwYEpchxDpzhIsmtSAV2G90.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HbuaqjwMCZqJ6H5KvkC_qAiIwOvpYPzbcwLxJNb0uuo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/I6yVCeakVKqUsaliyUltWbPDyBSBMhUv9zkFp2yw2qo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IJMmbI7acGvH89sGSYCk8MG64DgxAlPkMnVzO3qcsPU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Ie0bbRfNoWn3z0I3n_jaET3GWnM4ORD0qVWhAY6UT6g.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/If3QnMZ14zGPmgoAv1CC8407MM8HCX_Mbt8JgNy5kIk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IgGUqhkzHXI8396jm5e6AA3jgUFM-jWSlHh4Yq4UGFc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IsFTN5irVSJ7UmtclvH4t2XK62KJTGN1i-GiyBNapOE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IvZK1wes113P-P_nDqvnp0fpJSThqTPHxpgfGxDw-sY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Iz8BsJFlTbw_Px6lMiKFvr1E_q4ASTGRftJVuzKry7Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IzIhvn_1HGm9SoenHi_zLuLj1XLnotRpskuNplEJuTE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/J2T1uARvu7zW5vVwM9vZ9SbJqYgbJV4sKtv4Ce4DONA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/J2nV3Vaj3MBkmgwflEu6aFIB_LKttn6Nqe2utezEwrs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/J6rBhZcPqpEIELW_V9jAbv1W0_zqvsHFP8y7WXhsAeo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/J9t1-yLGUWA529Z0c17i5znsjGa5sXnojAVAd7T75Io.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JAULOq_7sZHQEA1IxE2vTelKzRwC2iV9Rhu0j4lEoCk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JCGrD-rrOKeIyZ7WdyZa7Zqhe31p7sfWIUkrM-rWbZs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JP_qx1WEU__d_86Xkpv5c7z255PS1c1inZLxjtpqNtk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JqrrNN5hqysG0E5olRwFhRpeupyENG4BUBQbwlBeyr0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JxopijdsjsbME-AZRoKtOzrlR0Bq-yAvX3zrNJZkmm0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JzQFshXooGdAP0tJWlWnatwCCjUawQ3S9-YiR3G9a1k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KamPqOdPn8aeGtBR2scJvAwAGS3-SPJGrQPejRxy2Q0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KkIu5rhtm00Di-mr9TMNrvHi-Sgdkq3X8jbIQHN_BqY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KkfiUl0bBuH-atgS0il_IBTO0ZdV2JIctizTVUib6gw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KnPLQsNfgqmhY-x5E1WTbG2H3kgoykRnl4tFK1tA_D8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KtEDnJ6n5IpnIw5Inc7TkvSGCkUc1LndvgTLSTFV5H8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/L7XRHPkC0b7xddmUMhB9nbrdZn_Z9EhmNKeDUxXeNnw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LTg2UHcfCN7RTyzae-nugHswjbkxl3mqjnKtZfBQLLQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Letplsx6YyGvKSnrW4a5HggOew1INSDhv5VIkLAf1SE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LnnMQfnoT33AD6NJZbwGOXkyOWhGMerXlWEKhSHUl94.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Lx28Zim1bUFhgjYQdvUmwk1xlJP0p7eYPJWCzAtzljc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/M3lqnO0iMhKkY_7Bk9jvdDSpnMj9vK8XsZlzSixBQt8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/M6l9EmEY15pm_zhbbIeSw7o3sc5hHOCWrkUISy1cRQ0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/M8ktiuDJHN5YmZ0EmF-b4QOAOk65LABTH1WwJUaFDoE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/M9XKT7wwd2LtD_c-O_--yjXDhj3J1R9-0q8GgfsyNQs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Mc_u2iCoWysUQHn8qRbQ9ffICia9IFYqmH-oqUSoQOY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/N-zFhFsd1r65a9wqHryhqH2yrHD2_iPyCvVHxurV_-Q.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NDUMfHJqQEsG0CEQj4hW4g_lL0i8ccRcT4BYJWKalgE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NNVC0K2OM9-FOswvPDef7MaJUN2JC1Z-KRe42RDztvk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NWE_UTz7LDPa_ckVWBBP0wEmkV4w77fQL5q90KE-vH8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NZgzQPXhGuB1-BFt8234AtYqbTfZuLLPijsMt6GMzic.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Naec_LN4F5v0MmTqqGk5wPzLWcETTlEvSN105nKoDew.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Nm06Mdpq5aE0r0XvR-MJYuBqkiiVZ4vOYNTGSGm0omU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/P14UP7cHmWs1cFO-wmPqxPpO_pbO4c8xJA93IbkY1uU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/P3IxY2O4_T1Kl2cT-cswpgcuuugNmt484ZEkXZ3xbGc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/P4iMZ97jNlfawygFBaZKKV1bEA94VgQbrArW7L__ubA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/P5nr4bDF66A4zyatPIodbDQoKFcC8gfPEDwUweByi1c.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PIWoIj7F4nXWhGmvC6vbJte0DnsBluBDxsL9AbSC178.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PO0TJVSk-MFo9HvpoJiRbXilRtj8nIw3KAnwe3KGdfA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PuYjncKZXA8Ds7_M7NaoWgEXlCpAFtx9hro_tDb2_0k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Q49GYFaqR4B2yFqfnKq6FtQbIuhqG9TPQ3nIqomYI2s.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QN1xEuydi3CpGkoytb1EGOOXdBhXopyI1nPU7M36M2Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QeMAnfwyezaH6_IsO3kWPzt99vxX1y2yUIIFk2t3800.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QgPZInLB0MR8MM6UdhqaN2gI2FDUyUcJ3DZ3JONPqqY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Qurk_ODzzktpg84c1KntPeyIiDilm1JyCwAUVSsoAcI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Qx0RpPHbUEnlxWtvSm4qMWTai-n5mBPDWwFJ-BUjh7A.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RHaAjEvLEMxjTc6LGfnmZq4P21_KGMRZle83wPbU3IU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RPrgjRZCMFgwcUDgUSb64KcW77QTKI5au4wnkf-EjCc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Rlemvy5p_heJ9l3Dp85EkTQzJsCGcW_gW39BXWZvx3k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SA2DfzHONBhD3lcOasR06tAjIePuLmB27vb2Luo1gbU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SJeqsYJ1Aqeqbdx9SoVsektTNADcKZN_XAnCtjYFuo8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SRT0R0j7ddeCWAxWgJqiXEIYyKHIiypNfxmT-ly4rH8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SSLbLpSc-vrKOrYwWuEZj29nFBAnHlLj4nzCvZSwv3E.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SeEr4lXePub6eQIA2eNn_G7y4AKO4oLWedp0LkY-D9U.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SpGj5jI7ftSjmbAe67eGjGfqm-hcNLQhYT1gTq5x6fQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SrmfuFUn0Ng1qtXh13LiTJV8ao2LXJ7PJdw3_6sKL1s.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/T6rWVJwMzjfS7KjdYHVmYxVyU6DS8kMfifVZqk5KS0w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/T7R81HyIET6aqs_B0mPm4sXWW2Umbu248ZU8dTd-_C4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/TEg-OSioKZ5T4NxW3gL7gkpI9uImx79qxdtmBmFaUJI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/TU9Ty-XhYjPLpUO6I20JAesFytC1umab0MncYUpywyI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/TZ_fGoUEaNeMoBTfu1C8QZc-VgDg42xuSAJcnAdnmHA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/TeXCtcy8EyJ9oQJc5BBRqjG3pZh9XNPLD9xc_d-flss.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Tnq3WMZF0BVb46JWMEULh_LYzmlai1gaL57blrw3eQ8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/TqftZ18h5DEkSSyNa6_9_w6kGeG-8Imr3kSrayzx8mc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Tr1qgvCbfUyy9bi4M_F3e-0sAoTBIV-M34LBv2AlV3A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Tt3oar9uNIJxG6uCwXQctpu0Mx9xG9zw9AA_o4O3ACU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/U1rQvgJvBLYFxWc0eXYgEuvog5JDThlxr3Gaai7Qq8s.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UJdj0dAd9eda9Hq9UtYyCgMgyGe8buf751hIC2htcqI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ULw8TLZq65Kpt3V2WVniSI2pY8G7RY1eyua_LZMqq0s.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UgNGrWjRv_EVaTjdaVTlis6kmVjkKTW3WdbtnQYE640.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UoSUDTWBfji5XjTjJDGjkRlufP4AwoLN2ciRfcdjzgg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Up9C35nldnYC451YZtr_gHZ9TJ6GFHNXyiD3j-yPEKU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/V36DIHkv-fyOwIs2KB1YtD3gVTNzxJSpZQIkBi-9Urs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/V8BD9-EbIOrBxzRlvlxrdwxZic-Hx5n-jEHutNk3M8A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VG44l6e3C2Q7_m6L61Cx3rfSwPUqje0KVqq6uYPUoBI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Vajh76UdEoSs_jqvP4ofYtd5hFFcLlgVtRiSXd4Txsc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VffmRiIMbi0vwJYKLmWVfmkK9mvKfhKmx3uN7O3ZWHY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VklEevgVpoOquNDTtyUODaArN6ExXZ7geiK20BTyGOA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VzG-nvu5kDwO6-am8wiZeEBe-CXevXonepvHpsAQikg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/W4TLr0zxru3fdu74vUPA7Q0NSo9rBQzpXsJDhhmgrOc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/W4g-AlVlisk-KmOfWK9YTK61IPZ41ieiH_PtbyKWVO8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/W9p6-ZAYQrn59pq45JzwYlrTgVFbMxDqCzUzdj7p0dE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WSZh6DkFiX8cE-wkcukg-owPR07a3PeCZKp5zwK5Wnk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WTkGyh8Pa1WKVOF1pZN2kn_g2O-yJJ1oUw1HUaotrCo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WYsi149ev-3lj8z7T_PRaMJZHP5jphtKnDhYXTYtrr8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WZaEr7Dx5qS8wxdTKpnQtFdbijo4w6fRxIfMIWkvp5E.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Wi9t7422bhXpxzveNsqNrKw-Q8hF9mfetiGOEcUi128.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WrvyHvyxskoUu2hESm8t70HuPwvKB9ckadVbGojCT6A.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WsSOcOD7a6u9aiI_0WqNH9meDsTY-Y_REWWeUCJgUq0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WwGjbo0ZR0fGGxrltve-vCviFOqWaq-_iq_ZNQOcOmo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WysAUFlZwC0wPpISStBvBQWfxQbwLfExNndDnCkcMdM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/X14i7V-QpVmIIjiktvOsBrwmbifDWnVBBmsUVnNDbZ0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XJL_JEBHf4f2ALKEoNIkMFgihf8Nvs2BuNfQxL7kKpg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XJdQDZQmF8cdBbg9y52nN45yXZ3IRkpJNNWYKW0DquI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XLY1ghKs1JM9KeV3HX9SermeaHwJVESPfCnWCzZCySY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Xv9kezPubWLhClO7oq2q93nfkyM0ht9qMiDQeqM4s64.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Xx4aHoa-QbX_gCk2RGZjmRZllakB87NXJcGbd1wyhzo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Xzhlz_YcG4J3lG6-bSCJBFq9cPNT7Ea0VrpUgWw8Cnk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y6Pgf8o3Ig7IvIK0iFAVKUVzw0aFrl3aiYkKJYWwnTU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YInrFHztUTJfpY2m3LxZ41qxWjJ3g1d_9XgQCZ5PCBg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YW2vvXT9klQPlJvu8rimJjsEOyXk4wJObsKzd1xa9RY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YbbSNTj_g-METnCM_QI9UPQN6lZUdqOzmwgqcIqanyU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YdOLkLmiKsc0BH8SxI9eHQF9u2O_vjh4hSQNvIxnJZs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YmBbddZcTBLnT4lBjsjnKr47t1m1nKoMyhwiFvFUzWM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YpZ3OslLHFLCfazpN-QORaVYbsrpYTYDmZKve8QnRek.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YuEdQWHaskrp8uBOS_AwSiWgcymqviUhuDP8TIxIiKw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YvnRG6_KIX5lxPDwTwM31eTKCaLy1KJ16evHCZkxSc4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Z0DHGSJwBcginuZMZGfuOwPCzsGOi2mDSLnDaINzsR4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Z91bGT-321OSXhf0Y6v6yzpebdh3ym988JglNem0MoI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZLyEvhQU8ymrGj6y1LqSgolOLO9mKo0ku0flcYjUmpQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZM-OWmxAhX6yI83BVZhIF9P1bTjl-6FJixUE0Jt_c2U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZVNKqfQyyLCwaHvkmHDUjD3xKpNej13bguc0Vj6aYwE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZVVC8z-DgcZUshlZpch_GTHzkWzZ5_hrdLD9l2S2zJY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Za_2noNWA_ikRmci8vV9ir_Jvpq8kylMoMSMb76K5Vo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZhZdxDhpJtajFEDhudyoLs2Qviq00vWXVikB8mnBL7A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZjkGTFT5BCIqRWPnGgq7r_gOUDZkwhWjT46yu7YdqqY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZmKVytqbFysgZ2xCL8xaVtOMdtI2f_TkzFq572h_ibU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Zw31ykcc2Ae_kssoetkmA-BB_MulqnvYyohpy7Vhirc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_2BL6VE7Zw6LX0O2eKK4V2tPDQnPJt3gcwIP3CtPU7c.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_ANBV6gkDJs2vDziW5z--SMwDQ7R-giJ23s0QIt-ISo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_OCrpqQCNxOlEY5zQMgmUHoxK3pHF-8xnsJa1YeJvEA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_x23cpb4jri77FyAaU-y5jab0ahkugGLlfmh50bmr2s.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_xLvpguDHqNI4oiYuWAyTb_tiH9E0l130P3EpkYyeA8.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/a-s2o0a3P1KP0oIW6jMOn9sWmp0YKePabq-oh3yQJ5s.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/a0tC2X6jOQ6ME04dI-JWhlvDd6R3ysneUFXvuctbXB8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/a5rjNn48R1bw9WB9DVSPBZe4C_DFqdU3kTu-PzwtTM8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aLihd3CscHu2Ii_imrqZseqmUyxJOtrKWCOo1Yjtr2U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aPBQAgt54gqOghoaTwR1OokWkeO3YLLv6PtTrX3SQvI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aVxgWmr5f8KCMuTkgUCk44kczk8TWrCT0Qy4LN9MlaA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aadH2BwLiIFddcvfPIyi8w9nGMj_7rOpvLCbDXj4bVo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/agL6ZEj9DyOTQmSJd07cOJw4MbunmaHnjswpk64WOcs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/atLNe5fs7yApcWY_pxPNdBrMwg_Q3FRRyfyyjBprmdg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/audDR_30hbJcfcwBhcUY4TCJgABvD02D03-wMx9Cfg4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/axEHC-hZ7g1l2OY85I2XMqLdCkhhMVtP07re0hcUhHY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/b1yeGPaA4uZ8P8PwETPeBW0EvZek99TgDmCkYifdWDE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bN7MQYpu6niVmMu4p3DJPgHg9ahEiqWIFaD86qNbsoA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bjBt0XAoToV1RsklC9ioNsrSIlR1hW4iXtmcqELRHNU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cLAZOyTk7WaaY0_2Ose25urSN5JP51LbSUGDVgMKI-Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cSb79BbaCqfrJvZ7nf0_aQ9eelK70PM50uj2eICdRqQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ch8nkxjjrI1bJnHnvL0cO03vL8UfHAp4RNaONJJ9c2k.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/clsYfSiVajd8WlrHTjNH6SCugVo5TV-U1OqonG1F42o.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dEXXyY4oiV4HqZ9an_jwKPbSuyXfxkekCF87XOzfjQk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dOhuI9QyNJA3W1WcU02FN7dontSKT0BNvTmlaL6PQ4w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dRSZZPLWkQ7BVbSM7q3rNDwOKFb-XOseqyPvg1e_R7U.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dWqvO-o0dt4rlCQJiA-Wz5H-F1GICBur_YJBM7mg4sY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dahKXhnnCtxcCVTu2s13jri4eKmMcaEiUkCbEWpaLdk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dbzvbXhxEa3xVCGh4RG4E8ai3SDpE4DGOaO0uS7Vzs8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/de2Rl0N5EzNgAhuqdn-po9Skjr5lzPUFUrrnuxl6aBk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dmypiOK6R35Jfy2dWmP5dyPXfRF3XRiIuBJdJUh2KCE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e2F3vonpACMjwW3WHjl7bOVlG3d3ElmuKME70mIfiq4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e4__-K6pPimomOl3RGP4r8EI7F3-8sCcv373Wm3tn4c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e4lonkqigfeSpt1G9fuUY5ogLJDgWUHn-8HeeAVBGBw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eAlrESFSQueMwcnHfF2XGjV3DHYf9EID7E9Pk0zWWdU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eLZiI9rOpo7_WmssTx6ofeMjrgyv-xy0ERGf73oqsoc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eR2k5Cn5etQoukDJUW9ftXAEnxM5iXVdHTyHyrQH6LQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eWBcgjn2RtkijDmR65uPeK0IBEMyp0fVdyFtJ-TL9QQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ejs5WdXAdNQ-sK9SsORZ_Q139bfAMjuRENBjd4I3Cv0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/enKN_H4TnOIV1a9F1Hsa62z1jjFtYqCQoKuLNi5aJ0o.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/f0OZYGUshiuvvTTKwxjQbknkewP4O1o0KYgB3GJAb5c.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fIFeQLA52qqOymnJ0Zl0lRvNcSUStQEjDaUenqnPL_E.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fJnzI-rA9M1HhzbF5hjlqoTqXM30cA9MwwkaR420PdU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/faf19GvNEP4Zw5Wna5DN3vzZ-HfcM8l4dv6jMCsLulQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fhYco00UnLuFQdOjrMtOeXm0jfd0S65PUwqwFfCVmg0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fmmuPOxN6w_ryl-N4dSbFWclt7IH2xEoHF6xYNwDmmA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gC8Y4AUzHM9wlTKbJSFe9E0wN88iU8uKlQ2SvKCDP7Y.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gamOOEv2ISPNbGZvMGBNvFOFfvOgyx4vuXNF5AGQXgI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ge_P-4hVS4V3BsDEzLb2uh-QhIuIF9QX2RGxeygKzSo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gjy68vSQgBSTCms9JftlGrYTBdvZCH4YWCMsccVUp5U.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gtl0RlnoRm90Bng-_kQvEfmAvdGGQNeNnH2Tw1pJuqc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gz0Dbs5uFHR1Z7X24pHwiaiWshOvzM-UQ0Fu2MmP9R8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/h5jvfuwSGl_5VUSv-VgCDyZCxnQul4kI1WkNELE7gn0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/h8uXTvJgPAYyOLZVDi6Ghv2SsLh_5VB572_FpcyHvyc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hEsbcB6w__LVX87bqUy0cLTgpRkBx4T92MVIYFR6WlQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hIs7vWkOuMusQsAf8Ok9cBWpZmDRiZwUd6iLQk2CMRI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hRGp8hmrP4NcYjEVpUcxnoMY0yyoYpMbukrIOlKbLHA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hSCj1WB3hGdUBOjpJbiqAMvbsTn-ee94M7iKbge0DIY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hXlUMLS-da2iaEZk75Mr9-Z-cl_jFZgJPFb5uNygbnc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hiW6ql2otP6BZaNtLKf28uhlYQFJzeIgZxMZtgyRBLs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hnLAVz7k4YRxXCZmrRiR7Qy6N4vIGhqKREXAMtATY58.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hyYS0R9YJ_Vs3bCM6FQgtKe9qgyeoOltMpdLFV-oBo8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/i0KDer3cGMdifcDRJOoOmWeOshqa1XJAcaAf8tE-8JQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iFxuUvbs8w4p7JNioTQYrlPzahCKwlREKmp705fCdwk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iKq-Xe5rBeE-3WsSl2s2gYd3fdIV4Zi1BfwXx-KJrrU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iSSVqJx39deUANM39f6xZ0o0yvfbHkZ73lJzm5IM60M.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iYOj8s9vM3dDQa7TmslKWvdyg1_QDwVgbBG7OPGdpg0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/j1h4FA8Qbnb3LuWHOE2Jec915bhR-XM1rpfFnMKBE7c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jA0aZB4phypMAhCBo_UR45NkNC3uSeIJxD7h47y9zOk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jFWNfpgXMAK4p5K3wYuxgeri1f4bMoC_K-VplUI87ls.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jGuhR3385VR01ycAPEUAxx0FB2Ds8hWvSUPUpLLJavc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jVAwxpszg7VyxgCeIg5kQkXbkYLCE606nw6vSKvo9LU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jZEkGtAvrFpmBrgfphjLILKag_-RNXbFs3RKeAuxbDs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/k8ca1eC1faS68JN5KKzOJXSMuocgmu71h3TZ0k-ZtlM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kFxOgPbI-zPaDyWH9k7Y-dN-y8pVEsiHKIerZCw25cE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kSlBp5V7ZlksqH5lCISm_EJ9EFMr3e2PHJp-nUYWMVo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kYbvszLEu6TLze21hrS4RGjf8WMravIorPtKfKSwFTM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/khSK2MS1QD06316njeJBgjKIccudqQv_KUpWu85ZMS4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/l4BWDnC_aJylkQfCPRZPIkXMr666sMR9ZVJntpppuyo.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lLentkgp9WxVVwhS7gK1EhRjqXryhVY96d4YVUFq-eU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lWILzdvgIWRo9TJ8HxpCHzdAwfsuImWwdsWFHixM-Mo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/liZeujxoDIaJZdCt6QGE7a8pY4Mg8GKK2Eejnk5TClc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/m5zrpsTPAV-63C40vaDVVjXPoP4pS5BVf0fM7vCt8ss.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mL8sSPkMXVOm4fhgDNtzC_IdCcmju3gBeCNqmHV3p10.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mNueLBGN9CuHOOh6M9UzU96t-lhFBO9gTjzx30dYREY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mZ1DriD_rCKVIvBecfK8yS0zYWrU9ZQBH4GDvFxBzE0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/meLsPaTAMJTii5pnXcFHQVlquxkfiDAp_vQQBzua0tw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mgQPFgn-uxTeuwuPZROo1Ei0UTYTkUx5hc7GyEz34Uo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mnuCO7w3vKJlSUQl3yiskqeUslPaR8cNjTpm7B9hReM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mrQ0fhxMpjfQNvmhEcfzZI33KeH9AHkwEtHkzgc5Gts.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mxd8kaBPkUqKtkqgiOzcaTESdwdD0ZhRSAsPP2BUb70.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n3ukWEyFUIQnrPO3bWJneDzPJJwTLPfZ28HK7ovyLkU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n7Qsju2biP9PnOoU2rgpElwNN5_gg92va06ZoSRfjck.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n8RKnjbY6W9X-qMLwV_o55qWV-S1LJEzPVXoimtd7dQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n90LK6FFM2BLCMZJkc4BtRtFZFB8SQXvBaZfn88RAsU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/n9y-X50q_N4z1tBDQ08M62HPro9WiZ35qSDwAPu7NwE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nJHTEwyBPfJGNb6cVAYN3ShYf7NRSPVY5W04GMb5BPw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nL0ab_SgKbdSy5SQje2OF31RkI4PKVUb3QhNSDRfL6Y.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nPy3FBLfjEqdT1FPa2s2GunIH7BIxyC3bEt245Wdn3I.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ncTmY7A0AlA7fLEruyrOnnVV4WGBY9-FtBhKSAc6agE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ni70OzAoGZhZW6IdTUoTP9oqfCdmACmK7RfJurgZx7s.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nlPczNPbq6-fwW9pKKGtS48BZGinuPvOnWlin3N4f8Y.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nurG6a-I6RSL7cDOxb8HqudOwqVDG3IG4iIZReHfEbI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nzHZiFM6F0kipwSBcpn7IsdMI0-40Ge6IyHZnYTn5ew.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nzZHtIKL9r3BQ_KNsi56Ny1-vJy0ft-JPzrxjm5Y6og.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oIRVOhroEdEiBR7Iqrzh3mgkHKC5VGSMQ9eV5nW7JpI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oZjHwGndavYHDs8OcpFulUtkzC6BwWZHYahZ6M9p4io.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oZvGZ6sUmzLmDwlB-n7g_ELNojZM5Cw0MHPbwJsWLnE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ob4QIVBdspB18sK03P9oThce9bZJQ2o59GKDL4vCwEE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pHINkYNImIK6_QRvCh-Fpc7fzPTLnn2V54IvlB95GBw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pLMpRnL2FZM05NAcpzAtdKb0yKme1ix-cO85U-dXYzw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pfjjdYmxS8Bq7V6m6yPHqfZlLsgjgAbzbpVGIddNqI4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pt7dn7Wu2f4mgOrJUUH8N_fGbB3IVRxiskZjEWDX7Tk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/q9Fc-_f0kqgFncm894GVkiHPbKfCQ98TDWbhtO6zRRs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qJ2_a8XoFKnMskSS9ZK1X2KMau5shjRbC3ZzfwQjPwk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qW0YNqXCjmBKIt9b6d7r81p-EEOLC3ol1u9Zg68I9Vk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qnOnHfaPgYuOLGntSldAFGY-NvQBP2k9sVLy1jloNqY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qtjJIPeBvQfnh-uvRUYF3vKDscyxjeII7WG4GsIdmso.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qxuaSrnLew_R3Ftrssy_ZxnVIXcAp5LoIN4vZoCi1-k.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rDBqjdw9zCorfrYUU8pfFeX2IW-UCExcdkUaeoJcYfY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rPAm60Cavvhc-L39UpVhwl5Mu14y6NoVS2FKXUtPrVs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rZc_AH3DtSOiS0rVexhnFERG4PS1grPrqSY-kv7ibZg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rkw5svHJc8EWu4_utAV-lKU5GRB6b9tHeMklj7DqEbI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/s2feIkX_5kK2K_St4luFV2APWLA6f7d8bWXYkb2Boe8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/sDPTFDmrB_-QQRgUjM_0JI49JAyym-FShkBOVtKtA_0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/sPNaDlNdq6sFwNVjdaG5UAEAm1OvqgfUxJ2nRlKlr0Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/sRvWhgtVmEIdBdTjf-X9rpZyFAsFyPDDlHM3toMI0Ac.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/snlJupB9x7Ss81XX8UDTYETQ_kGJ3L1L3C6GVkMZ5dk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/svogeOtO9ck88ovH154hiEFuQDsLaSy6Sxn9K8RX7Dk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/t5RRDhSOMQOZ-1T8kv22gIoAoH0fqH543oKPxICGd94.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/t6mAPQbV9gqXKz8UQrFK3rRwdlCxtWCdDBt8czHr-QI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/t9T25E3aNK9lZGIxM8qQaSUMfvHVfZph1qF5Ueto3PI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tEus3Bxry_kLMlVpGfxdIRtyDCZaQa96SA-ci4R4o6E.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/taQwk1QGKaT-Jnj-Hqe59mgbigWBZqMVlDtKvnJ0R8A.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/trBwIE_LrmGNqvA48z13GV5ytMukuDVtbGp93a_XrM4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/u0W81KcCtqrn-rac6_8XEjLQgMYerVeDOWtGfjm-2HI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uGcJNV5-i5MaQcCW1kti17zLkzh2xQ2mV3pM8ZRmDss.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uLqFWRpD7E0cYMOIKG2k3yTYwOJUVgOMWAKEp-uTBYE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uNdFZA26aEjuKidKFAvfTwvStkC4NYLvEoG4ChvYSvM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ueKYZ12Pq-upeXLltFwrkWYwufEAxQDEzFjJF6QlNXw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ugZumAx7waiVwuL8sOE97aCYMvW7sq6ai1mAClnlumM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vA8LqBQnWOqY5cOqR68WYNsmYBSyaB37CKJtmo8ESFY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vJJekCvvQ-CUHPnSKBhAh1JFwRJ4Bw_NNJB-hqzsdN4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vLWfHpUyU5_Y6TycsfO6TVRH3TghrRx1m8DZsZVtCe8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vcSVYW75SWkPIyUIwd7nqhG6f70XCFsNDeY2w2A66i0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vhlnAIAIJWoFkHMVm7FDm7aUeUJRT3Suei82zV7qeZY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vo8IeqG7P0QswDGvgQ6zc-4mo3sAZjxEnZd_pO7gXIQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/w-svUv3ErPwdHdZdyPvKHmpNQK22_lnzLeVsOLSyJiY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/w5nUk2hB55tB93COnpJBxWgXJKtzcK-v82jHOnvMHrQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/wc2TVsJGaeJUvfZnVTdsIZ1y6vRUt9cYftLY4fPbbdM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/wf5SyjdCEWJbiEyfS3ASNrOvDIu9RPDrnkAOUwYmNAw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/wu0DiUcorpfefrbzrkv5Gycln02Vr1bmMmy5sbRTE2M.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x-QSaO5thCqq6BdeThyfcl7VBhEfy6W6fLV70gHB454.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x5ECuzE1jiJp4LihQdDgdEBdZpWVsjU56tWVAK0fIHs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x70LLKfQWUBsw0TJcHBCI4J-15QnwrBDL07zWbEh20w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xNJoBHsfBHPMN1sHc0wmcxABdPiTJZWWIBcpiLhKh-U.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xVZbS3o2IZCL8sCd8CVkNEa3dvoyLcpoJ6X_Z2C-bD0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xgVOFvnEAbAB60iPh7swXCr-BX-Hg1HZJFKrDrziN78.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xkHALKAFi3gJvj-wYFn7cVXcTODcYBtTwQoT3zCq-4c.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xqa2LvqkWQCIFee6n8Henri_DrVhHaWLZbKsvPcMN54.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y1w6x3_LXyjCJpHgmvpCPeuzu_KyEsNBBrG2k69Vt8U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y62vfBmmbxrxTyH1FAasapBPVuLg_4XUFSJtTkgrIHM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y6OKhqAc2EqNSlEoQTfQ1SGAe0lDWog3hKecimLuJB0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yCdoXtEDrXpr0Jxs9O3McFRIPv6fZPIa--2KjFnHOS0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yDI_vOGLMtlVyz0YW9CyIy81yb7hEo6uZBok0_EARyQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yE4wvt8U93RkeT_N9jmlNpecViLBKXYzK9_G58ANAlQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yKSSkV5UNYnaQKN3FTjWYfG0Rzhp2aqMHDccPfuUAuo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yTpOFZnNfZdYx3QdyGkcSwWOym5qezyheM9A2FGziJU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y_wwMOO91_I78FUv5c4svWkuWLNTEjcsvWYi8xA__Gw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ytGhFKCKV99DuzApuggfqcfHQNEubBCQk2hAbyOHI7w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yywaz02pegQC1_jqbl85dRLFnLKzHzlzJnj-FP8bX9c.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/z0mpQR1_gWSHw5Qr0l9Q-ga7-fxKeyxnjhoXv_5v1rw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/z3DpznW0ht9FWkGVOew037-ySk2hJ_vC9e99ynvMo1U.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zAxm0Ib1Puy34tK0O9DynYtZidntTL_rvv9B_LXiW44.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zha0Z97ShQRyb9Wml2bB28Rbtizf4LmB5Esbm2YrXlA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zzeIScn75jDzWLQ6GVHcM7OR1zmjA7UsRQdIrCh692M.cache +1 -0
- data/test/integration/handlebars_converter_test.rb +66 -0
- data/test/integration/sprockets_handlebars_converter_test.rb +47 -0
- data/test/integration/template_handler_test.rb +107 -0
- data/test/mutton/handlebars_template_handler_test.rb +46 -0
- data/test/support/wait_for_ajax.rb +12 -0
- data/test/test_helper.rb +30 -0
- metadata +1182 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 01382ce7a19a6f72ff3e289d1586b0421d1ba093
|
4
|
+
data.tar.gz: 90fbca2f9f886b9cda9cb9a16db89cd32bd6f315
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 80d4697164df2592f8b18f6b49d3664f3c2672c7925c9d6d88e0323c8d6b4c523ba44f72b134af7093805d29b56bdb22de6da22acea7eff4aec1d5606a298347
|
7
|
+
data.tar.gz: b86c4fe6c3a5ba8aa9612b35102366bb9b15b8ebfa53229383db2582c41543fee60e0c45babfd483f4d18e9176a3eda768f2e1c10c4a7a87f4133d425c00f2dd
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2015 SbbSoftware
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,302 @@
|
|
1
|
+
#Share Handlebar Templates Between Server and Client With Mutton
|
2
|
+
|
3
|
+
Externalize your handlebar templates and render them from your server as a replacement to ERB,
|
4
|
+
and use them unchanged through Javascript on the client. Supports the entire handlebars specification.
|
5
|
+
Stop writing script tags and duplicating your work in ERB, every .hbs file can be served up
|
6
|
+
directly from a controller, or through Javascript on the client.
|
7
|
+
|
8
|
+
##What is Handlebars
|
9
|
+
Cut down on view pollution by using logic-less templates. Handlebars is a beautiful progression from Mustache.
|
10
|
+
The template engine adds in logical processing, helpers and context changing, while maintaining the beauty of
|
11
|
+
front end templating.
|
12
|
+
|
13
|
+
[Check out handlebars.js.com](http://handlebarsjs.com) for all the details
|
14
|
+
|
15
|
+
##Why is Handlebars great?
|
16
|
+
Handlebars turns the View back to a design and layout tier.
|
17
|
+
By eliminating <% %> you are forced to code your application cleanly, with beautiful templating.
|
18
|
+
|
19
|
+
#Quick Start
|
20
|
+
Create a new Rails application.
|
21
|
+
|
22
|
+
####Add the following to your gemfile
|
23
|
+
|
24
|
+
```
|
25
|
+
gem 'mutton'
|
26
|
+
```
|
27
|
+
|
28
|
+
####Create a directory to store your templates.
|
29
|
+
|
30
|
+
The default is `app/assets/javascript/templates`, but you can store them anywhere,
|
31
|
+
including your views directory.
|
32
|
+
Be warned, sprockets needs to append a path 1 directory up from your template folder. DISCUSS
|
33
|
+
|
34
|
+
|
35
|
+
####Create your controllers and templates
|
36
|
+
|
37
|
+
* create a SamplesController and add the following
|
38
|
+
```
|
39
|
+
app/controllers/samples_controller.rb
|
40
|
+
class SamplesController < ApplicationController
|
41
|
+
before_action :create_sample_data
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def create_sample_data
|
46
|
+
@greetings = [{ timing: 'morning', phrase: 'Good morning'},
|
47
|
+
{ timing: 'afternoon', phrase: 'Good afternoon'},
|
48
|
+
{ timing: 'evening', phrase: 'Good evening'}]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
53
|
+
* add the following to routes.rb
|
54
|
+
|
55
|
+
```
|
56
|
+
config/routes.rb
|
57
|
+
root 'samples#index'
|
58
|
+
resources :samples
|
59
|
+
```
|
60
|
+
|
61
|
+
* create a file named index.hbs in app/assets/javascripts/templates/samples
|
62
|
+
|
63
|
+
Inside the file, code the following
|
64
|
+
```
|
65
|
+
app/assets/javascripts/templates/samples/index.hbs
|
66
|
+
<h3>Greeting List</h3>
|
67
|
+
<div id="greetingPanel">
|
68
|
+
{{#greetings}}
|
69
|
+
When it's {{timing}} I will say {{phrase}}<br/>
|
70
|
+
{{/greetings}}
|
71
|
+
</div>
|
72
|
+
```
|
73
|
+
|
74
|
+
* open your browser and navigate to http://localhost:3000/samples
|
75
|
+
|
76
|
+
That's it!
|
77
|
+
|
78
|
+
####But how did that work?
|
79
|
+
If you had created index.html.erb in app/views/samples, Rails would have found
|
80
|
+
that file instead. Mutton adds a new path to the LookupContext for Handlebars templates and registers a handler
|
81
|
+
for files with .hbs and .handlebars extensions. The template handler loads up all known handlebar
|
82
|
+
files registered in sprockets, adds in javascript files stored in your helper directory and sends
|
83
|
+
it all off to ExecJS to run as javascript. That's it.
|
84
|
+
|
85
|
+
####Now try and render the template client side
|
86
|
+
|
87
|
+
* create app/views/samples/index.js.erb and copy the code below
|
88
|
+
|
89
|
+
```
|
90
|
+
app/views/samples/index.js.erb
|
91
|
+
var context = <%= assigns.to_json.html_safe %>;
|
92
|
+
$('#greetingPanel').html(JHT['samples/update'](context));
|
93
|
+
```
|
94
|
+
|
95
|
+
* create app/assets/javascripts/templates/update.hbs and copy below
|
96
|
+
|
97
|
+
```
|
98
|
+
app/assets/javascripts/templates/samples/update.hbs
|
99
|
+
<p> I am the latest information on this topic
|
100
|
+
{{#greetings}}
|
101
|
+
{{>samples/_greeting}}
|
102
|
+
{{/greetings}}
|
103
|
+
|
104
|
+
```
|
105
|
+
|
106
|
+
* create app/assets/javascripts/templates/_greeting.hbs and copy below
|
107
|
+
|
108
|
+
```
|
109
|
+
app/assets/javascripts/templates/samples/_greeting.hbs
|
110
|
+
When it's {{timing}} I will say {{phrase}}<br/>
|
111
|
+
```
|
112
|
+
|
113
|
+
* almost there, edit app/assets/javascripts/templates/samples/index.hbs and change it to below
|
114
|
+
|
115
|
+
```
|
116
|
+
app/assets/javascripts/templates/samples/index.hbs
|
117
|
+
<h3>Greeting List</h3>
|
118
|
+
<a data-remote="true" href="/samples">Update greetings</a>
|
119
|
+
<div id="greetingPanel">
|
120
|
+
{{#greetings}}
|
121
|
+
When it's {{timing}} I will say {{phrase}}<br/>
|
122
|
+
{{/greetings}}
|
123
|
+
</div>
|
124
|
+
|
125
|
+
```
|
126
|
+
|
127
|
+
* finally, add an entry in app/assets/javascripts/application.js
|
128
|
+
Add handlebars before require_tree so it looks like below
|
129
|
+
|
130
|
+
```
|
131
|
+
app/assets/javascripts/application.js
|
132
|
+
//= require jquery
|
133
|
+
//= require jquery_ujs
|
134
|
+
//= require mutton/handlebars.runtime
|
135
|
+
//= require templates
|
136
|
+
```
|
137
|
+
|
138
|
+
Thats it. You should now see an update link, click on it and watch the code render on your browser.
|
139
|
+
|
140
|
+
That was also a stealth introduction of a partial. When you use the helper {{>}} you're going to pass
|
141
|
+
the current context to a partial and see it render. There are a great many ways to change context, or pass
|
142
|
+
data on the fly to a partial, check out the [Handlebars documents](http://handlebarsjs.com/partials.html) for more
|
143
|
+
information.
|
144
|
+
|
145
|
+
While you're at it, check your rails log. You should see a 5x improvement in rendering
|
146
|
+
time between index.hbs and index.js.erb. This is why everyone wants those single page applications!
|
147
|
+
With Mutton, you can write on the server or the client with the same template and hear unicorns sing.
|
148
|
+
|
149
|
+
####Ok, well how did that work?
|
150
|
+
Registering a template engine with sprockets allows you to process files as part of the sprockets pipeline.
|
151
|
+
We hook into all .hbs and .handlebar files and convert them to javascript, calling the Handlebars pre-compiler
|
152
|
+
so that we can cut down on client processing. Once they are processed, sprockets caches them and adds them to the
|
153
|
+
chain of javascript output from ```javascript_include_tag``` in your application layout.
|
154
|
+
|
155
|
+
####So its all the same then?
|
156
|
+
Hopefully. Node/your local javascript runtime and browsers are very different. However, Handlebars is elegantly
|
157
|
+
namespaced and should not be affected by any other packages on the browser. On the server side, I have
|
158
|
+
restricted files under compilation to the templates, helpers you put in a helper directory and handlebars.
|
159
|
+
This should restrict different outcomes, but it's always possible there may be some.
|
160
|
+
|
161
|
+
##Partials
|
162
|
+
I had to make 1 compromise on partials, you have to namespace them, even if
|
163
|
+
they are in the same directory.
|
164
|
+
For example
|
165
|
+
```
|
166
|
+
<h3>Greeting List</h3>
|
167
|
+
{{#greetings}}
|
168
|
+
{{>samples/greeter}}
|
169
|
+
{{/greetings}}
|
170
|
+
```
|
171
|
+
|
172
|
+
As every template is namespaced with a directory and file name, partials are accessible
|
173
|
+
only when namespaced. In addition, everything is a partial. Partials don't need any special naming,
|
174
|
+
and you may include any template as a partial providing you access it through
|
175
|
+
the correct namespace. Technically, instead of calling the
|
176
|
+
register partial function, I copy the entire namespace over to the partial
|
177
|
+
space so that everything is available.
|
178
|
+
|
179
|
+
##Javascript Helpers and Partials
|
180
|
+
If you prefer to write helpers and partials in javascript, you can do this too.
|
181
|
+
Whatever you write, put it in your template/helpers directory and it will be included when rendering.
|
182
|
+
|
183
|
+
##Local assigns are transferred automatically
|
184
|
+
|
185
|
+
All local assigns are automatically added to the handlebar context. Be careful, every instance
|
186
|
+
variable you create in a controller context will be sent to the browser as data if you're using
|
187
|
+
the client side.
|
188
|
+
|
189
|
+
##Custom Configuration
|
190
|
+
In order to customize settings, create an initializer eg config/initializers/mutton.rb
|
191
|
+
|
192
|
+
Entries with notes and default values below
|
193
|
+
```
|
194
|
+
Mutton.configure do |config|
|
195
|
+
# path to templates directory
|
196
|
+
config.template_path = Rails.root.join('app', 'assets', 'javascripts', 'templates')
|
197
|
+
|
198
|
+
# path to javascript helpers
|
199
|
+
# every javascript file in this directory will be concatenated with
|
200
|
+
# handlebars during compilation
|
201
|
+
config.helper_path = File.join(Mutton.template_path, 'helpers')
|
202
|
+
|
203
|
+
# javascript namespace for compiled templates
|
204
|
+
# templates will be accessed by this value
|
205
|
+
# JHT['directory/file_without_extension']
|
206
|
+
config.template_namespace = 'JHT'
|
207
|
+
|
208
|
+
# handlebars file for compilation
|
209
|
+
# change this if you want to use a beta or other version
|
210
|
+
# you dont need to wait for a gem update if handlebars
|
211
|
+
# releases a new version
|
212
|
+
config.handlebars_file = File.expand_path('../../../vendor/assets/javascripts/mutton/handlebars.js', __FILE__)
|
213
|
+
|
214
|
+
# when true, instrumentation will be logged at debug level
|
215
|
+
config.subscribe_notifications = true
|
216
|
+
end
|
217
|
+
```
|
218
|
+
|
219
|
+
##Logging
|
220
|
+
By default, template rendering on the server and hbs conversion triggered by sprockets will log to the Rails log with log level debug.
|
221
|
+
You can turn this off in your configuration file
|
222
|
+
|
223
|
+
|
224
|
+
##Dependencies
|
225
|
+
Sprockets. Yes, you need sprockets. If you've moved to another pipeline solution you're going
|
226
|
+
to be unhappy.
|
227
|
+
|
228
|
+
ExecJs. You can leave it pick the best javascript environment or set the environment in your boot.rb file
|
229
|
+
|
230
|
+
```ENV['EXECJS_RUNTIME'] = 'Node'```
|
231
|
+
|
232
|
+
I recommend Node because, well, Node.
|
233
|
+
|
234
|
+
##So what sucks?
|
235
|
+
All right everyone, step forward if you use form helpers. Not so fast Handlebars! In order
|
236
|
+
to move into a world without cluttered views the tradeoff is; **you have to give up Rails form helpers**. I extracted this from a project which was almost exclusively using
|
237
|
+
javascript on the front end, so it wasn't really a hardship, but during testing I have been converting
|
238
|
+
a more traditional application and my goodness, is it 2004 already?
|
239
|
+
I've been thinking of how to overcome this, either adding compilation of ember and and using those helpers,
|
240
|
+
or working on wiring Rails helpers into the mechanism. Neither solution yet appeals but probably sometime before end of year.
|
241
|
+
|
242
|
+
**The template path**. This caused more problems than the rest of the gem combined. The issue: Rails provides
|
243
|
+
a number of hooks for an Engine or Railtie to configure settings, all but one happen after your Controllers
|
244
|
+
have been initialized with a LookupContext. That one which is available happens before initialization files
|
245
|
+
are processed, so there is no safe way to allow custom configured paths to be added to LookupContext. I add the
|
246
|
+
default during pre-initialization, and if there is a custom one I use ```ApplicationController.send(:append_view_path, path)```
|
247
|
+
to alter Controller behavior. This is great until you dynamically reload a Controller by editing during development,
|
248
|
+
if you're doing this you will have to restart your development server. I recommend using the default setting for now.
|
249
|
+
|
250
|
+
##What are the alternatives?
|
251
|
+
You could go completely Mustache with https://github.com/agoragames/stache . I found the gem to be excellent, but
|
252
|
+
didn't love the template engine enough to go with it.
|
253
|
+
|
254
|
+
If you don't need server side Handlebars, the very great https://github.com/leshill/handlebars_assets has a
|
255
|
+
similar sprockets based pipeline translation system.
|
256
|
+
|
257
|
+
If you don't need client side templating and want an elegant Ruby based solution with the ability to use helpers, you might
|
258
|
+
want to check out https://github.com/zendesk/curly . I love the template engine, but not the
|
259
|
+
View Presenter mechanism, not enough re-use for what I need, but it is an impressive design and beautifully
|
260
|
+
coded.
|
261
|
+
|
262
|
+
##What's Next?
|
263
|
+
Sprockets is great, except when it isn't. I'm not thrilled with some of the design decisions I had to make
|
264
|
+
but the payoff in simplicity and having the gem work on any new Rails app won me over. Sprockets is used consistently
|
265
|
+
on both server and client side rendering. I think Gulp makes, or will make sprockets redundant, sort of, maybe. The problem is that there are so many different ways of using Gulp
|
266
|
+
that designing a workable gem becomes exponentially more complex. I hope to make some headway here and see if a new Gulp-based
|
267
|
+
version of Mutton is feasible.
|
268
|
+
|
269
|
+
Possibly adding support for Ember, but there is such a trend toward Angular that it may not be adding any value.
|
270
|
+
|
271
|
+
##Credits
|
272
|
+
There are some really remarkable engineers whose work influenced this gem. From learning how to use ExecJS
|
273
|
+
to finding the best way to annotate view paths during configuration. There are a few projects which demonstrated
|
274
|
+
the concepts and techniques I have put to use here, and I would like to thank their authors:
|
275
|
+
|
276
|
+
* Les Hill (@leshill) and the contributors to handlebar_assets
|
277
|
+
* All the folks at @railsware, their shared handlebar assets gem was the best introduction to creating a template handler
|
278
|
+
* @sstephensen for Sprockets, ExecJS on which this gem relies
|
279
|
+
|
280
|
+
Finally, huge thanks to @wycats and the Handlebars team for the work of art that is Handlebars.
|
281
|
+
|
282
|
+
###Other tricks
|
283
|
+
Works great with https://github.com/gazay/gon, you can ditch your .js.erb files for the client and just do everything in a javascript file.
|
284
|
+
With Gon, Handlebars and an onLoad event you should be able to get rid server side template processing altogether,
|
285
|
+
provided you're down with your data being readable in the browser.
|
286
|
+
|
287
|
+
I use a view presenter (to be released soon and pimped here as much as humanely possible) which works for erb,
|
288
|
+
handlebars or plain old json. You can use Decorator, maybe even Cells, or just a PORO presenter. Models sent into
|
289
|
+
Views and accessed with Ruby are the plastic shopping bags of Rails apps, you will be shocked at how much
|
290
|
+
cleaner your application becomes when you can't branch 17 times or do lambda calculus in your views. Give it a try
|
291
|
+
even if you don't use Handlebars, find another way to sever logic and code from your view template.
|
292
|
+
|
293
|
+
Just remember, whatever you send in as assigns end up being used in the server parser and client, namespaced
|
294
|
+
by variable name.
|
295
|
+
|
296
|
+
###Contributing
|
297
|
+
Yes please!
|
298
|
+
|
299
|
+
1. Fork It
|
300
|
+
2. Create a topic branch
|
301
|
+
3. Push
|
302
|
+
4. Submit a pull request
|
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Mutton'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
load 'rails/tasks/statistics.rake'
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Bundler::GemHelper.install_tasks
|
26
|
+
|
27
|
+
require 'rake/testtask'
|
28
|
+
|
29
|
+
Rake::TestTask.new(:test) do |t|
|
30
|
+
t.libs << 'lib'
|
31
|
+
t.libs << 'test'
|
32
|
+
t.pattern = 'test/**/*_test.rb'
|
33
|
+
t.verbose = false
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
task default: :test
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Mutton
|
2
|
+
module Config
|
3
|
+
attr_writer :template_path, :template_namespace,
|
4
|
+
:javascript_asset_path, :handlebars_file
|
5
|
+
|
6
|
+
# provide a custom logger if you are magically using this from outside
|
7
|
+
# rails. logger is set during engine configuration ti Rails.logger
|
8
|
+
attr_accessor :logger
|
9
|
+
|
10
|
+
def configure
|
11
|
+
yield self
|
12
|
+
end
|
13
|
+
|
14
|
+
# path to templates directory
|
15
|
+
def template_path
|
16
|
+
@template_path ||= Rails.root.join('app', 'assets', 'javascripts', 'templates')
|
17
|
+
# @template_path ||= Rails.root.join('app', 'handlebars', 'templates')
|
18
|
+
end
|
19
|
+
|
20
|
+
# path to javascript helpers
|
21
|
+
# every javascript file in this directory will be concatenated with
|
22
|
+
# handlebars during compilation
|
23
|
+
def helper_path
|
24
|
+
@helper_path ||= File.join(Mutton.template_path, 'helpers')
|
25
|
+
end
|
26
|
+
|
27
|
+
# javascript namespace for compiled templates
|
28
|
+
# templates will be accessed by this value
|
29
|
+
# JHT['directory/file_without_extension']
|
30
|
+
def template_namespace
|
31
|
+
@template_namespace ||= 'JHT'
|
32
|
+
end
|
33
|
+
|
34
|
+
# handlebars file for compilation
|
35
|
+
# change this if you want to use a beta or other version
|
36
|
+
# you dont need to wait for a gem update if handlebars
|
37
|
+
# releases a new version
|
38
|
+
def handlebars_file
|
39
|
+
# don't want to force the user to serve my handlebars.js from sprockets so...
|
40
|
+
@handlebars_file ||= File.expand_path('../../../vendor/assets/javascripts/mutton/handlebars.js', __FILE__)
|
41
|
+
end
|
42
|
+
|
43
|
+
# when true, instrumentation will be logged at debug level
|
44
|
+
def subscribe_notifications
|
45
|
+
@subscribe_notifications ||= true
|
46
|
+
end
|
47
|
+
|
48
|
+
alias_method :subscribe_notifications?, :subscribe_notifications
|
49
|
+
|
50
|
+
# read only properties
|
51
|
+
|
52
|
+
# sprockets needs to know where hbs files are stored
|
53
|
+
# its 1 up from the template path in sprockets-speak
|
54
|
+
def sprockets_path
|
55
|
+
File.expand_path('../', Mutton.template_path)
|
56
|
+
end
|
57
|
+
|
58
|
+
# shipped default path
|
59
|
+
def default_template_path
|
60
|
+
# Rails.root.join('app', 'handlebars', 'templates')
|
61
|
+
Rails.root.join('app', 'assets', 'javascripts', 'templates')
|
62
|
+
end
|
63
|
+
|
64
|
+
# shipped version of handlebars
|
65
|
+
def vendor_version
|
66
|
+
'v3.0.3'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Mutton
|
2
|
+
# TODO: are we really using an engine?
|
3
|
+
# class Engine < ::Rails::Railtie
|
4
|
+
class Engine < ::Rails::Engine
|
5
|
+
|
6
|
+
isolate_namespace Mutton
|
7
|
+
|
8
|
+
config.before_configuration do |app|
|
9
|
+
# add the default template to rails view paths
|
10
|
+
# rails ignores any changes after this event, bastard.
|
11
|
+
app.paths['app/views'] << Mutton.default_template_path.to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
config.after_initialize do
|
15
|
+
# FIXME: maximum suckage
|
16
|
+
# rails will ignore paths set during this event so we need to
|
17
|
+
# carry out this workaround
|
18
|
+
# if a controller is reloaded dynamically, it will lose this setting and really suck
|
19
|
+
ApplicationController.send(:append_view_path, Mutton.template_path.to_s) unless Mutton.template_path == Mutton.default_template_path
|
20
|
+
end
|
21
|
+
|
22
|
+
initializer 'mutton.initialize', group: :all do |app|
|
23
|
+
# must have sprockets or you're in trouble
|
24
|
+
fail('Sprockets Not Found. This version does not work without sprockets') unless app.assets
|
25
|
+
# set logger to rails logger
|
26
|
+
Mutton.logger = Rails.logger
|
27
|
+
# register with sprockets for hbs and handlebar files
|
28
|
+
app.assets.register_engine('.hbs', HandlebarsTemplateConverter, mime_type: 'application/javascript')
|
29
|
+
app.assets.register_engine('.handlebars', HandlebarsTemplateConverter, mime_type: 'application/javascript')
|
30
|
+
# register template handler with Rails
|
31
|
+
ActionView::Template.register_template_handler(:hbs, :handlebars, Mutton::HandlebarsTemplateHandler)
|
32
|
+
# TODO: dont register a diretory if it is already part of the sprockets path?
|
33
|
+
# add assets to sprockets path
|
34
|
+
app.config.assets.paths << Mutton.sprockets_path
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Mutton
|
2
|
+
module HandlebarsCompiler
|
3
|
+
module_function
|
4
|
+
|
5
|
+
def pre_compile(source)
|
6
|
+
source = source.read if source.respond_to?(:read)
|
7
|
+
handlebar_context = ExecJS.compile(handlebars_source)
|
8
|
+
handlebar_context.call('Handlebars.precompile', source)
|
9
|
+
end
|
10
|
+
|
11
|
+
def compile_handlebars(template_content, template_namespace, mutton_namespace, javascript_helpers = nil)
|
12
|
+
ExecJS.compile("#{handlebars_source}; #{javascript_helpers}; #{template_content}; var template = this.#{mutton_namespace}['#{template_namespace}'];")
|
13
|
+
end
|
14
|
+
|
15
|
+
def process_handlebars(template_content, template_namespace, mutton_namespace, assigns, javascript_helpers = nil)
|
16
|
+
compiled = compile_handlebars(template_content, template_namespace, mutton_namespace, javascript_helpers)
|
17
|
+
compiled.call('template', assigns.as_json)
|
18
|
+
end
|
19
|
+
|
20
|
+
# TODO: get from asset pipeline
|
21
|
+
def handlebars_source
|
22
|
+
Pathname(Mutton.handlebars_file).read
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require_relative 'handlebars_compiler'
|
2
|
+
|
3
|
+
module Mutton
|
4
|
+
# convert hbs files into javascript for the asset pipeline
|
5
|
+
class HandlebarsTemplateConverter < Tilt::Template
|
6
|
+
|
7
|
+
def self.default_mime_type
|
8
|
+
'application/javascript'
|
9
|
+
end
|
10
|
+
|
11
|
+
# no changes implemented
|
12
|
+
def initialize_engine
|
13
|
+
end
|
14
|
+
|
15
|
+
# no changes implemented
|
16
|
+
def prepare
|
17
|
+
end
|
18
|
+
|
19
|
+
# called by sprockets when compiling
|
20
|
+
def evaluate(scope, _locals, &_block)
|
21
|
+
timing = {}
|
22
|
+
ActiveSupport::Notifications.instrument 'evaluate_asset.Mutton', timing do
|
23
|
+
start_time = Time.zone.now
|
24
|
+
# clients require precompiled templates for optimization
|
25
|
+
precompiled_template = HandlebarsCompiler.pre_compile(data)
|
26
|
+
end_precompile_time = Time.zone.now
|
27
|
+
start_write_source = Time.zone.now
|
28
|
+
source = write_source(precompiled_template, scope.logical_path, Mutton.template_namespace)
|
29
|
+
end_time = Time.zone.now
|
30
|
+
precompile_time = ((end_precompile_time - start_time) * 1000).round(0)
|
31
|
+
source_time = ((end_time - start_write_source) * 1000).round(0)
|
32
|
+
timing[:precompile_time] = precompile_time
|
33
|
+
timing[:source_time] = source_time
|
34
|
+
source
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def write_source(code, path, namespace)
|
39
|
+
# drop the first bit of path to get rid of root directory
|
40
|
+
paths = path.split('/')
|
41
|
+
paths.delete_at(0)
|
42
|
+
virtual_path = paths.join('/')
|
43
|
+
write_template(namespace, virtual_path, code)
|
44
|
+
end
|
45
|
+
|
46
|
+
def write_template(namespace, virtual_path, source)
|
47
|
+
javascript_code = <<CODE
|
48
|
+
(function() {
|
49
|
+
var template = Handlebars.template,
|
50
|
+
templates = this.#{namespace} = this.#{namespace} || {};
|
51
|
+
templates['#{virtual_path}'] = template(
|
52
|
+
#{source}
|
53
|
+
);
|
54
|
+
Handlebars.partials = this.#{namespace};
|
55
|
+
})(this);
|
56
|
+
//best with a large serving of mutton
|
57
|
+
CODE
|
58
|
+
javascript_code
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative 'handlebars_compiler'
|
2
|
+
module Mutton
|
3
|
+
class HandlebarsTemplateHandler
|
4
|
+
|
5
|
+
# template handler contract this is called from rendering stack
|
6
|
+
def self.call(template)
|
7
|
+
"Mutton::HandlebarsTemplateHandler.new(self).render_handlebars(#{template.virtual_path.inspect}, Rails.application.assets, assigns)"
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(view)
|
11
|
+
# not used in this version
|
12
|
+
@view = view
|
13
|
+
end
|
14
|
+
|
15
|
+
def render_handlebars(virtual_path, asset_environment, assigns = {})
|
16
|
+
timing = {}
|
17
|
+
ActiveSupport::Notifications.instrument 'render_template.Mutton', timing do
|
18
|
+
start_time = Time.zone.now
|
19
|
+
# get every hbs file name and pull from sprockets
|
20
|
+
handlebar_content = template_content(asset_environment)
|
21
|
+
end_content_time= Time.zone.now
|
22
|
+
# get custom javascript from the helper directory
|
23
|
+
javascript_helpers = custom_javascript(Rails.application.assets, Mutton.helper_path)
|
24
|
+
start_compile_time = Time.zone.now
|
25
|
+
# compile it
|
26
|
+
result = HandlebarsCompiler.process_handlebars(handlebar_content, virtual_path, Mutton.template_namespace, assigns.as_json, javascript_helpers)
|
27
|
+
end_compile_time = Time.zone.now
|
28
|
+
content_retrieval_time = ((end_content_time - start_time) * 1000).round(0)
|
29
|
+
compile_time = ((end_compile_time - start_compile_time) * 1000).round(0)
|
30
|
+
timing[:compile_time] = compile_time
|
31
|
+
timing[:content_retrieval_time] = content_retrieval_time
|
32
|
+
result.html_safe
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def template_content(asset_environment)
|
37
|
+
handlebar_content = ''
|
38
|
+
asset_environment.each_file.select { |x| x.ends_with?('.hbs') || x.ends_with?('.handlebars') }.each do |asset|
|
39
|
+
content = Rails.application.assets[asset]
|
40
|
+
handlebar_content << content.source
|
41
|
+
end
|
42
|
+
handlebar_content
|
43
|
+
end
|
44
|
+
|
45
|
+
def custom_javascript(asset_environment, helper_path, _options = {})
|
46
|
+
# get everything from the helper directory
|
47
|
+
javascript_content = ''
|
48
|
+
javascript_helpers = asset_environment.each_file.select { |x| x.starts_with?(helper_path) }
|
49
|
+
javascript_helpers.each do |helper|
|
50
|
+
javascript_content << File.new(helper, 'r').read
|
51
|
+
end
|
52
|
+
javascript_content
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Mutton
|
2
|
+
class NotificationSubscriber
|
3
|
+
|
4
|
+
if Mutton.subscribe_notifications?
|
5
|
+
ActiveSupport::Notifications.subscribe 'render_template.Mutton' do |_name, started, finished, _unique_id, data|
|
6
|
+
total_time = ((finished - started) * 1000).round(0)
|
7
|
+
Mutton.logger.debug " Mutton::Handler::Render Total Time #{total_time} ms [ Content Retrieval: #{data[:content_retrieval_time]} ms Compile: #{data[:compile_time]} ms ]" if Mutton.logger
|
8
|
+
# puts data.inspect # {:this=>:data}
|
9
|
+
end
|
10
|
+
|
11
|
+
ActiveSupport::Notifications.subscribe 'evaluate_asset.Mutton' do |_name, started, finished, _unique_id, data|
|
12
|
+
total_time = ((finished - started) * 1000).round(0)
|
13
|
+
Mutton.logger.info " Mutton::Evaluation(Asset Pipeline) Total Time #{total_time} ms [ Source Lookup: #{data[:source_time]} ms Pre-Compile: #{data[:precompile_time]} ms ]" if Mutton.logger
|
14
|
+
# puts data.inspect # {:this=>:data}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/mutton.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'mutton/config'
|
2
|
+
module Mutton
|
3
|
+
extend Config
|
4
|
+
PARTIAL_CONVENTION = { everything: 'rudolph', hunt: 'dasher', underscore: 'prancer', dash: 'blitzen' }
|
5
|
+
end
|
6
|
+
require 'tilt'
|
7
|
+
require 'execjs'
|
8
|
+
require 'mutton/engine'
|
9
|
+
require 'mutton/notification_subscriber'
|
10
|
+
# for server pages
|
11
|
+
require 'mutton/handlebars_template_handler'
|
12
|
+
# asset pipeline engine
|
13
|
+
require 'mutton/handlebars_template_converter'
|
14
|
+
# partial handling in server pages
|
15
|
+
# require 'mutton/partial_finder'
|
16
|
+
# execjs compilation for JS
|
17
|
+
require 'mutton/handlebars_compiler'
|
18
|
+
require 'mutton/version'
|
19
|
+
|