shipit-engine 0.0.1.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +24 -0
- data/app/assets/images/anchor.svg +12 -0
- data/app/assets/images/default.svg +19 -0
- data/app/assets/images/deploy_error.jpg +0 -0
- data/app/assets/images/deploy_failed.jpg +0 -0
- data/app/assets/images/deploy_success.jpg +0 -0
- data/app/assets/images/deploying.svg +12 -0
- data/app/assets/images/emoji/walrus.png +0 -0
- data/app/assets/images/error.svg +13 -0
- data/app/assets/images/failure.svg +13 -0
- data/app/assets/images/github.svg +9 -0
- data/app/assets/images/logo.svg +27 -0
- data/app/assets/images/pending.gif +0 -0
- data/app/assets/images/refresh.svg +8 -0
- data/app/assets/images/search-active.svg +7 -0
- data/app/assets/images/search.svg +7 -0
- data/app/assets/images/settings.svg +33 -0
- data/app/assets/images/ship.png +0 -0
- data/app/assets/images/success.svg +8 -0
- data/app/assets/images/unknown.svg +13 -0
- data/app/assets/images/validation/invalid.png +0 -0
- data/app/assets/images/validation/required.png +0 -0
- data/app/assets/images/validation/valid.png +0 -0
- data/app/assets/javascripts/shipit/checklist.js.coffee +10 -0
- data/app/assets/javascripts/shipit/deploy.js.coffee +7 -0
- data/app/assets/javascripts/shipit/flash.js.coffee +2 -0
- data/app/assets/javascripts/shipit/search.js.coffee +64 -0
- data/app/assets/javascripts/shipit/stacks.js.coffee +34 -0
- data/app/assets/javascripts/shipit.js.coffee +32 -0
- data/app/assets/javascripts/task/ansi_colors.js.coffee +6 -0
- data/app/assets/javascripts/task/notifications.js.coffee.erb +31 -0
- data/app/assets/javascripts/task/output_stream.js.coffee +69 -0
- data/app/assets/javascripts/task/sidebar.js.coffee +24 -0
- data/app/assets/javascripts/task/tty.js.coffee +54 -0
- data/app/assets/javascripts/task.js.coffee +16 -0
- data/app/assets/stylesheets/_base/_base.scss +365 -0
- data/app/assets/stylesheets/_base/_forms.scss +97 -0
- data/app/assets/stylesheets/_pages/_commits.scss +179 -0
- data/app/assets/stylesheets/_pages/_deploy.scss +65 -0
- data/app/assets/stylesheets/_pages/_settings.scss +29 -0
- data/app/assets/stylesheets/_pages/_stacks.scss +142 -0
- data/app/assets/stylesheets/_structure/_main.scss +156 -0
- data/app/assets/stylesheets/_structure/_sidebar.scss +80 -0
- data/app/assets/stylesheets/shipit.scss +9 -0
- data/app/assets/webfonts/CheckoutSymbols-Regular.eot +0 -0
- data/app/assets/webfonts/CheckoutSymbols-Regular.svg +143 -0
- data/app/assets/webfonts/CheckoutSymbols-Regular.ttf +0 -0
- data/app/assets/webfonts/CheckoutSymbols-Regular.woff +0 -0
- data/app/controllers/api/base_controller.rb +61 -0
- data/app/controllers/api/deploys_controller.rb +15 -0
- data/app/controllers/api/hooks_controller.rb +51 -0
- data/app/controllers/api/locks_controller.rb +30 -0
- data/app/controllers/api/outputs_controller.rb +15 -0
- data/app/controllers/api/stacks_controller.rb +19 -0
- data/app/controllers/api/tasks_controller.rb +13 -0
- data/app/controllers/chunks_controller.rb +31 -0
- data/app/controllers/concerns/api/cacheable.rb +11 -0
- data/app/controllers/concerns/api/paginable.rb +82 -0
- data/app/controllers/concerns/api/rendering.rb +23 -0
- data/app/controllers/deploys_controller.rb +48 -0
- data/app/controllers/github_authentication_controller.rb +25 -0
- data/app/controllers/rollbacks_controller.rb +24 -0
- data/app/controllers/shipit_controller.rb +48 -0
- data/app/controllers/stacks_controller.rb +76 -0
- data/app/controllers/status_controller.rb +5 -0
- data/app/controllers/tasks_controller.rb +23 -0
- data/app/controllers/webhooks_controller.rb +99 -0
- data/app/helpers/chunks_helper.rb +6 -0
- data/app/helpers/deploys_helper.rb +21 -0
- data/app/helpers/github_url_helper.rb +50 -0
- data/app/helpers/shipit_helper.rb +35 -0
- data/app/helpers/stacks_helper.rb +29 -0
- data/app/jobs/background_job/unique.rb +33 -0
- data/app/jobs/background_job.rb +22 -0
- data/app/jobs/chunk_rollup_job.rb +19 -0
- data/app/jobs/clear_git_cache_job.rb +7 -0
- data/app/jobs/deliver_hook_job.rb +7 -0
- data/app/jobs/destroy_stack_job.rb +7 -0
- data/app/jobs/emit_event_job.rb +8 -0
- data/app/jobs/fetch_commit_stats_job.rb +7 -0
- data/app/jobs/fetch_deployed_revision_job.rb +21 -0
- data/app/jobs/git_mirror_update_job.rb +10 -0
- data/app/jobs/github_sync_job.rb +42 -0
- data/app/jobs/perform_task_job.rb +53 -0
- data/app/jobs/refresh_github_user_job.rb +7 -0
- data/app/jobs/refresh_statuses_job.rb +12 -0
- data/app/jobs/setup_github_hook_job.rb +9 -0
- data/app/models/anonymous_user.rb +41 -0
- data/app/models/api_client.rb +42 -0
- data/app/models/commit.rb +163 -0
- data/app/models/delivery.rb +45 -0
- data/app/models/deploy.rb +92 -0
- data/app/models/deploy_spec/bundler_discovery.rb +51 -0
- data/app/models/deploy_spec/capistrano_discovery.rb +27 -0
- data/app/models/deploy_spec/file_system.rb +52 -0
- data/app/models/deploy_spec/pypi_discovery.rb +32 -0
- data/app/models/deploy_spec/rubygems_discovery.rb +32 -0
- data/app/models/deploy_spec.rb +123 -0
- data/app/models/github_hook.rb +144 -0
- data/app/models/hook.rb +86 -0
- data/app/models/membership.rb +6 -0
- data/app/models/output_chunk.rb +9 -0
- data/app/models/rollback.rb +19 -0
- data/app/models/stack.rb +276 -0
- data/app/models/status.rb +38 -0
- data/app/models/task.rb +143 -0
- data/app/models/task_definition.rb +34 -0
- data/app/models/team.rb +67 -0
- data/app/models/unknown_status.rb +43 -0
- data/app/models/user.rb +81 -0
- data/app/serializers/anonymous_user_serializer.rb +2 -0
- data/app/serializers/commit_serializer.rb +6 -0
- data/app/serializers/concerns/conditional_attributes.rb +20 -0
- data/app/serializers/deploy_serializer.rb +13 -0
- data/app/serializers/hook_serializer.rb +10 -0
- data/app/serializers/rollback_serializer.rb +5 -0
- data/app/serializers/short_commit_serializer.rb +7 -0
- data/app/serializers/stack_serializer.rb +31 -0
- data/app/serializers/task_serializer.rb +28 -0
- data/app/serializers/user_serializer.rb +3 -0
- data/app/validators/subset_validator.rb +7 -0
- data/app/views/commits/_commit.html.erb +21 -0
- data/app/views/commits/_deploy_button.html.erb +19 -0
- data/app/views/deploys/_checklist.html.erb +16 -0
- data/app/views/deploys/_concurrent_deploy_warning.html.erb +6 -0
- data/app/views/deploys/_deploy.html.erb +38 -0
- data/app/views/deploys/_monitoring.html.erb +13 -0
- data/app/views/deploys/_summary.html.erb +21 -0
- data/app/views/deploys/new.html.erb +41 -0
- data/app/views/deploys/rollback.html.erb +37 -0
- data/app/views/deploys/show.html.erb +31 -0
- data/app/views/github_authentication/failed.html.erb +1 -0
- data/app/views/layouts/shipit.html.erb +43 -0
- data/app/views/stacks/_header.html.erb +16 -0
- data/app/views/stacks/index.html.erb +26 -0
- data/app/views/stacks/new.html.erb +36 -0
- data/app/views/stacks/settings.html.erb +63 -0
- data/app/views/stacks/show.html.erb +53 -0
- data/app/views/statuses/_status.html.erb +5 -0
- data/app/views/tasks/_plugins.html.erb +2 -0
- data/app/views/tasks/_task.html.erb +21 -0
- data/app/views/tasks/new.html.erb +19 -0
- data/app/views/tasks/show.html.erb +17 -0
- data/config/locales/en.yml +36 -0
- data/config/routes.rb +86 -0
- data/db/migrate/20140226233935_create_baseline.rb +176 -0
- data/db/migrate/20150515190352_add_output_column_to_tasks.rb +5 -0
- data/db/migrate/20150518214944_add_ignore_ci_to_stack.rb +5 -0
- data/db/schema.rb +188 -0
- data/lib/command.rb +173 -0
- data/lib/commands.rb +25 -0
- data/lib/deploy_commands.rb +19 -0
- data/lib/rollback_commands.rb +5 -0
- data/lib/shipit/csv_serializer.rb +15 -0
- data/lib/shipit/engine.rb +30 -0
- data/lib/shipit/first_parent_commits_iterator.rb +17 -0
- data/lib/shipit/null_serializer.rb +13 -0
- data/lib/shipit/octokit_iterator.rb +24 -0
- data/lib/shipit/simple_message_verifier.rb +29 -0
- data/lib/shipit/version.rb +3 -0
- data/lib/shipit-engine.rb +1 -0
- data/lib/shipit.rb +124 -0
- data/lib/snippets/assert-egg-version-tag +23 -0
- data/lib/snippets/assert-gem-version-tag +23 -0
- data/lib/snippets/extract-egg-version +12 -0
- data/lib/snippets/extract-gem-version +24 -0
- data/lib/snippets/fetch-gem-version +21 -0
- data/lib/snippets/fetch-heroku-version +17 -0
- data/lib/snippets/push-to-heroku +72 -0
- data/lib/stack_commands.rb +57 -0
- data/lib/task_commands.rb +65 -0
- data/lib/tasks/cron.rake +15 -0
- data/lib/tasks/dev.rake +31 -0
- data/lib/tasks/team.rake +10 -0
- data/lib/tasks/webhook.rake +6 -0
- data/test/controllers/api/base_controller_test.rb +20 -0
- data/test/controllers/api/deploys_controller_test.rb +57 -0
- data/test/controllers/api/hooks_controller_test.rb +74 -0
- data/test/controllers/api/locks_controller_test.rb +43 -0
- data/test/controllers/api/outputs_controller_test.rb +17 -0
- data/test/controllers/api/stacks_controller_test.rb +57 -0
- data/test/controllers/api/tasks_controller_test.rb +16 -0
- data/test/controllers/chunks_controller_test.rb +28 -0
- data/test/controllers/deploys_controller_test.rb +83 -0
- data/test/controllers/github_authentication_controller_test.rb +12 -0
- data/test/controllers/rollbacks_controller_test.rb +42 -0
- data/test/controllers/stacks_controller_test.rb +114 -0
- data/test/controllers/status_controller_test.rb +10 -0
- data/test/controllers/tasks_controller_test.rb +28 -0
- data/test/controllers/webhooks_controller_test.rb +176 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -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 +26 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +12 -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 +42 -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/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 +3 -0
- data/test/dummy/config/secrets.yml +19 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/db/schema.rb +190 -0
- data/test/dummy/db/seeds.rb +70 -0
- data/test/dummy/log/development.log +10805 -0
- data/test/dummy/log/test.log +89257 -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/favicon.ico +0 -0
- data/test/dummy/tmp/cache/5F7/AA0/task%3A496901070%3Apid +2 -0
- data/test/dummy/tmp/cache/5FD/BF0/task%3A616453971%3Apid +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/-Svpuy5qSkiFtZsFPydzdLgop9RqO4D8hHORvHE75rQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/-mVblO-V2dhzfo-sDOQAZ5Bii8MoKb71hYsDcReOQRM.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/-nMZLEbPOA2o0OpHoXtxHKhiRSg_6BX3l5iTIztyygc.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/-xIiF2JBomnwE2qrb6LMQp8Sfaw2EDlWkhBhNDgHUPM.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/0D31DtEnyjreLzP7FSGhfk99Xn7IohNrgwcIdHkBgYo.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/0F_asRhsemd41WNUTdopb7guFKg-2v_OdeYwDqvNg_0.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/0X4d4ydG6vXWQTW-SLUMUVggRUaGmUV8VqJQEO5V1o0.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/0bjH0uaRbK2LwiGbzir2Vr1CEd_BCRM3zafyFrTxtWo.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/0vo5uBz0h_8XVbEyHjjAaQjYFNiv1pJ1t88uaZP5vgE.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/0zjPxEmdx8xESf5SQ-GCgtWntvyFvqcqxsUHR92fvGI.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/0zwxC1bY2AyEqqZfSN4xaVXopxjrecnLiVwEEnFXUj4.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/16Wb3nTKzFhipHwCvyycQYi5o2bBSfbHsS_5oGhmorQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/2W6qlNTnecxUEN-jyNTbpZXkqGlS0y-8yw0Bk_BMC1c.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/2fOJA6XBXRgV0of8SN8M1krWjVXwXhspWpcuFNiFR1M.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/3OFWTX1MsN1u3YolQMEDQa2s3wSauKeqnsCswkkzB5c.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/3gygCMbDFJRBo3mQy1o3xijN2l9IigxjWwsjyodfUX8.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/4erxjbJtY8zTAzw508nz01VXWr9KAaq0zMKNaQsiLrI.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/4xN2-up9H2rLnCZwRoYegqXIhEHrS3PMOoWfVNYwV9U.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/5XLj1Fg2z3ne9vQbf4sihnpTkXGmnXubAgPGj7ot2es.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/5qT3nt4p2Aoj5DoaPPLiMuWz7Cl0wDOHVQfsPFxlY8c.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/6KFAG929iIC5bdDDadWdp8ohukGMDq9GXk3dku5dxNI.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/6fCSqdSj4G3XMp6YWNTUbFyhSY4rw_6OakQbYSEUdOM.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/6n9PFCBVKW3Tb27z7DtxHaWd7OG-gy7yjTpLdxgQab0.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/6ut8B6osDNUYyTJYkpQrPkZpOudCLIX2_ESoqMOx4Rc.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/79odVsVErD7g_a_DfYjm3Z9YFxWGWOTTIwu0JjV9oZw.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/7OVeILINTnrhyBnMSJzCA9BSHP2WdwYwkr4xauOGM8g.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/8-Bvr3WT-xXwLNviKNZk0j1ASKSUzKhoWFG9Bf4Mzz4.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/827OJHVgQ0McTz3Up3RIDueQDw-qxXrFtPhUjYk-VSg.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/9Z8yDnEnhawuTKSXzKn2B28ESruTwr2f6OEGnDW9XYk.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/9bmg6UGOOICN8gzDj7UWomSX2Yiir0pmET1rntY3FMs.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/A18m8UutFtfPQAsEmEsLDKPg3XRgQik_FVmfeVmf74s.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ARyT0D_yLqHNfX42vJfHJpVQK9qmXylaxKwffw-bK8Q.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/AWZ-epgNJ4ELwgBo8jfjFpZFe38Nron5b-PPNe4EUY4.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/AoUs5JmbbHv9rya7vKsST8XJqjCR8JU-IOift64rGDQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/BA9bsW_K9IVOHhRPZlIe6lTn6wtubZAR1WOXUhU-WQo.cache +20 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/BR9bs2rBvkZS-2elB1WS3bNTqMd2ePwuAS6fOitW6Z0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/BxMB-nPJBAjv49th2LLgmJ6b8R2goN7xAqU-DHLEFJU.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/CCGkCssACzakr0pb-SIAsPOQiCRSpRf5shywGBt5nrQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/CSxml3OCDdrgbl5purNxVFVD4QHTy2I2-r-ij1lf4Pg.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Ck301965nPjpLwpwuaicUYFa5h8Jp8_mZgpHibVi7ew.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/DVJZdcJv_Gg4NUAjJnLLo8gAPryIK8EAKIVm919byJo.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/DXW19O6T3nCP38kltEhTzB09hr_GfDUXqvD0LhCQiu0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Dpfdw7W47inKEonMVJv5SNXZiuDtCPRzW_KSuPzQf18.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/EDkYeQDDOTsU1u02TkLjCpe2SyDvxpNKuzdqzZnX1wo.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/EOElWuFh_ifk4iH_fo5uwKhmf_nZGPjbZNfyDY2fYnY.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/EgwKzQo1qYQ1kBoQ3uhMfna68VYEneCMK590HjzpkLs.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Ei-0T-42HS9RIa1w3le6bct29PgL2om5DybIakRQqzg.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Emvowq0-Y2t-j01-5EDIvZwSffNUDwwUhGu_3OeJJZ0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/EoGhAEbM2Df1KAqycBQ2ADmblwD6Z6Xgk6LKx1c5pXg.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/FUKyxTYuAeD7ARy1CQy1vPIf_X-iEf4KkJ2kjSH0834.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/FgDsBEFY4e4-V5ZLfZRadhAckdKR37Rr2Zl_SvWrz7A.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/GGhfOjwLGkIdWz3D4NMZrhWyzP86H9UdmHBBLppJDCk.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/GaJn5HGvDVGNfSENSJLR3KtMu707-JIT3sLmsKmvVOQ.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/HH0Tm6VBet9g1JuZ2L9rOBe17P_eSJPctFLvN1waXl0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/HaV5bgOyL70jdhgDuftgMmnnXterwDZ5jBY1MazJrOo.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/HbqeHpw1tx8v5Dc_4WexMeka83bYabLLjYFmuSYmOFA.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/HkhaE8URIVnf8c9xWoDlpWvWfyKnQEDHypr7WhinNyc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/HuaIDeUZZuTVW6O66SY3zRbpRhmwK4dzNXrS6uEncyE.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ItSY_ROGhK18mLa6WZfaG6YIqABXcUWQqHeeFBlYZlw.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Iu1o_OXMHHO3Vd0sfcrokPnmRuyE7KEWXtc8eFM4ZNg.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/JrcZwj0CMuwXWhnliBiFeBg7cVkFMPHBNcPI8u8dpbc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/JyY0td6ydwiZgiVINv2tslgeRAlwmIownlqTX1JGZrc.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/KAIKYUpS-lUgMpmqPR9zNn1MEhgUsud6USvsTNZ3zL0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Kw3N3k_Mby9N_9kIITbVEH59SQbXeRjADcF8Ajf0YYk.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/KwMDXtl1FpRJHqnMdpeKNk-JG3eU1ig_ADNepqUlyNY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/LSJRgEZrxm7VqXNqSoYGcWqNp9CLc0Oq8emfkv_1Krw.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/LcawP_2CmFgJ0aGArmp3Y5OzU3Fq5ftprzhUk1oOlnU.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/LrpAZ0ICJwktWuK7QWYWb7F7-TSlqGgCkt8qqbzbcso.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/MH6FybAtwkVK595sKGsjJD0cUP7DQgWmB6pzeNk_AKc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/MI1SW5esw79g2uG4wlBVABG4mdf2HXdg16k_J09BELY.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/MLMbmRJlsIws2zVQHcJ7rCiYC80_HWi2wtNOfcYSwms.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/MV5La-EQl_S8y13wXAIIJOeMW2NMHLvz82BQCs2OKyI.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/MbmJeItof25me2r7QeCx-hLFL1MqHR6pmSc5QivaP8w.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/N0BNO49Row05oLOUjvNwSzMD3OkWOiu1JH3x5sIjOGo.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/NJS_0DD49ggZhk3RhAlbxDtekRUNexcbFBERE3lphoY.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/NV-3NPtnt8Gmd2ywpD3KXu8OJGROQWvTfBC_XzJVGgw.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/OFtYh3kL0OSQKgGGpK-F6NLPg2SLyK66Ey3-cJ7bTnU.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/OqcdyP8U-1yQmsVRUFCuXvs-wJ0Q9zoLkxa8RrAsowY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/P8dvwB1U7H7RjCzU71OLmdrBzkBWhxNuPcK-J8hFNyQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/PR8Q50mMVzmIN_aggQXVKoja0vtL-EAJyEQvK_UCarI.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/QL4HWY_CCW7hJkGLNnxpQS9395ZiFxxrycWmw82FA7c.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/QwFgVzdqWk1U9IJu_iuo48z2wQX0nG4x_WTEpRgQejs.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/QwGnjp6jYOqq66DmJSJhjMfIzvDjNSQrzNjeuldyVTg.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/RTW2G_W3mtAiyIltmBhvDkOwXHlmz--SYhNU_ds6JSc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/RVmhBIJkBQ-4Sat4FUh233KvxbyQtNL7_BIR9Ks-G0Y.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/RXRRnxPgyBhfo4V7bZWSebiVZs4gfcEoTVxE586c4lQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/RarKYi-qrs-BQYnbK54qAMURAE424kCrthIwsRgQ94s.cache +19 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Rlsg7VPtRgnP1yzRVwKdBC04dtgIq6WS25THCro-RIc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/SD3Ol83RfPjB8BS_mcOmO-VJznl69GVwmXJYbwPG77I.cache +105 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/SOqnJbRZjN7VvSGY5McdxjLB2S0ZX8b89h8U-jBczp4.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/SW88UkYs0ZWqRdFCAEM5yJd53xmrNEy6O6GGGzWhu8k.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/TohOC514tYbacv-fJPUf7CtmW2s0O0jfO_mfyhVU-7U.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/U4eiDxZi5D33lcsDPwCfcG3X1xqiaf_LvGnbDcU5Zwc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/U7Gd1TAPsiS73V6Z1VYeeWlMP3Isrz8rEW1t2zRyCCA.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/UQWoOMkPIYRJx_FDpHJgPXVvbE1kc4_4-UpMvLihRiU.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/URMXqRNkAXXUrHOcDxwuirbsm1pcwbp6DOgn35JuByQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/UXlxEIkPihLXpIBMLjzup5wro9EjhJLe_UGDHm5VhKs.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/U_ILtYQgzvFhheI63SSDoXaBfJL0Akdy7R42lE0SVSU.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/UtwxNuCOYG4rcIhlD7HelYaZIqYt3nltQ_w2K_-p4Ck.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Ve7LudoBelar7rV9D6kWWZLTNwqbMOHXEX2hPj8tSlM.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Vfl8HC52-bbviS84eEZxrXi1-ioECC3he2GU6vVfryY.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Vl5mV6tInC-AMfCAzK27IeK4FTX4tP4xPtq1QF226Y0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/W9Fjhf8pn7MLHj8gz5wCd6s2gsR_vKk_f7xxe1LwVU4.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/WPdAL_Lqgb7_4yjLuRkEvSCGiZKP6nSo_-ChjS-_lE4.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/X1oq-rIggwESRIEYhYkgkoWmg7pmEllUVyp-LONyPQ8.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/XYiutOiHAp8RwwiVfSijdh-8UiVCDv0_wZEThtff3b4.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/XgZCchZuerFn9jRwXqhox03zPvnO6zGMFonkXXSsSFM.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Xkx8icYIHXIHJmUqjuiNzd1figVtMQ_mu1rXDajGwMY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/XnIXzLut0xx98YvXT_nYHxKvdSfmY5ZHNmPMeZGdoNE.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Xwvzd4LlA0IbFYPyZItdhvA2uLrMnuTiMFjFpByJbkw.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/YjzxuCef_6LBQ3XNaItf-sCynDcMZc5XiOZfJMkTa0M.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/YqSyIrjbDjhodfq_KOe3xscOxddDT7_Bk0dpTgnC578.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/Z7lgC4S1HJT5MBm5kJgIqxozY__pC66SviBV_rxVuiU.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ZMsxYb7MZs4eOp9vf1GqVjWL7J38-6PGKgqflC7o5Hc.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ZxY7a7E-7NdoNGkiuO1i8aOd_n6aZPGTKlsPdFunMco.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/_GIKnKOoV9ZF8Al739SyzWhD-GN0YfdERfHlAxJ_4sk.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/_m788jlvKlZMNcGNWyuhzBbsC55krOzJmVEf2ujFreo.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/aIwPWtsELy-iVFlWJMrx_M6_pfd2A0bqx9jHd0M0a9g.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/aMWlvhJIQ8ccR_fLm6XU2WIbOKWlBpr-E-PmV3VnVBc.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ahd6onuCZxaa-ok1Fmlgw_MafQUNfhF2Emzet6KRgkk.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/atiR0R0CAj5PD0ruX_nONGxh_sPXGRUd8bKChAg-iyw.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/bA7c2aRmDpgyp9g-dwvBTha3_eJYfwEcUUAvas8LaY0.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/bTmFJ9jOV4XX1-qQt5eL_vs5ym0Ujq5AlqShH1Iuab0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/bolYufxu1-GHsHX1ZNXeJWfM21VN6c7FrATpOt8-fSI.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/btUsWol_m0bfhn2tM4QZF0p6UxqimfRO1lGnSdjwAss.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/c3DPKk5y5wK03hiHahNvYIcS6MhcWGihfd6FtRMLHBY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/cTrmxpXU9ApI086ePHzFAq0j7B_B1_YvJvz0RzmmTCA.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/cfRx3ipBTXBD0h2rd1sKk-L5DabMC5E9A-gctjVekWA.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ci1SmvlG70ux0eVB4T2Hq0uMWUEUrW0d99t-RCUyyG0.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/cnfLyAbfkbLV1AYabLtnufb9HHD-DVUsjEFEnLV7axY.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/cyAooGZVL1huLzcNmE5jytAY76u1QVs9nogd5IjIang.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/dh6UGD2Sw2UZspsLpyX9w0_YQaE5SQyMwpLvTQlPR50.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/e1UTzoa3w2cfZQqN9uWGzWr4hkAvGoDO2aHIljsoizc.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/eFeAdQ5B7BQIdYq-P8jMfBVvn8JpnVUn8WRFuWnFD1I.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/fDCMk3VTrgyg45sDyEWpAR01Z1wgFJLJ3OW_e_bTy7c.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/fLP5p_VyHlzDn2zaOgyvwxD8sw9o5CmYFw2F-d_cRM4.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/fQaNSw-ypQPwly1n6O-485MV_X4a5S7tB4_IkF6omJw.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/fhEbU257BW-dpKmj-hl4rX0oOmnEJDXuEWzhgXwlYtM.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/gK-V98E7cO1u-xt632svaYaeLKHrwVdN1el_Tf7OdjI.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ghbMFfG2FX0j_dXR5i0EekKUPPZW9gJ5a9Ymy569eYY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/graU-e4yIipr7ZSCf6lM6bmH4LDIZtgp2MI777l_IMA.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/gu2rIo1OFVLfxzxVGyw5ZsHWZGejzrzjnvX24oiGR-w.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/gyFpNnWQp4_Hq_JG5iaZ1_V8lcxU7EkMMok2r_dmAJI.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/hsUNux1yPb7tKKlGnLYF5Q2Tw085JsTKqp5vf-DJnrw.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/iIgYiHp_87ujUPWmg3DAOju2EgekJtl_ZF7LmKl1lI4.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/iOw2L1RkhXlm3YhifknLkRW8sIbWQvTQutWE2awOk-M.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ifnHDGmGE3XnB9zwYbZVVpBoR_NaVMt8GUeiN2MsdHk.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/jB0ZFcqrW6VUi_sNT81XAW29L509iMyKomvnK9upgzk.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/jVgaiQV1tX5tkr7W17W4xBY3shfOfIdoRktHYhU6C5I.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/kFWVZecoz1kW3Wobp6_rZH1WRsb8m5GFkAhPC0VEUPY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/kH7bEdrjJRnuuD5FOopSnzAtXKsBsQki6Dru50gXq5c.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/kHBaM2fOz0224c4c62qeVx16vFxlijX4UJZp6oA8g40.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/kMRPMn8ZW5hHKoBJKHxJJFWqbFLy63fgOoqVlsztYRo.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/kV-EY_oYRYsVMyVc90iLAVk17OWwWFQ6OqUMi-YdNv8.cache +9 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/kXhmcRnQ1DMKO500oXLgbQATMlZ4J6jaK5sM1l0jn84.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/ky7PLTdm-fpj2wb7As1WG34psSb9vnu9g8tcbjOYVGk.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/lIXpLp9Ksp8SsGX1waXXnIvcDtPotycT4PR-6y5r7kc.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/le23hz0CHWNBn47lLpU5O4RnAhWMeZhbpT1HJZVL4C0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/lknip8bQoJdZJqLgT-_EqNO-1rbeF3bv-fcrt5WR3dY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/lzIlyywNJ_DeKA8f2hHho-0GFFannFJsQ1hqQLiOu4o.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/m3PrgpgGAaXO-MXdI7ukEAiTw6DWc4RnaNgoZFNHTMg.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/mBSdYTpsQk2qKOBUg1DUE4HemcJiUHZqa0HfTmmhHZc.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/mfZNw7i_BZQ6g-wm0NCbi6urAyb3-CdE_Z_vqEEVX6Y.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/mkHRd5M-ZCoNB1znrOsdOeOFtiJOrZXNKugRhryp3kg.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/mn1hUZrlYsuULP48vHtFh0JpLzJKgNWWCmNnbLD-GTk.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/n5M16vhIw8DdPInGBfOW5jzqzbNN02D2xy-DKgDZP50.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/nDXW7K6M6_yyhIv-6bGeS1aN2ezwRZRwcNpfwdBp4J8.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/nIBiA_CFLpPtwIzw_PhGUNVSYuaIn69kPfR94E4L3Hs.cache +19 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/nTLxYQi8Jh7ni0gmVLq_2oE3uUc_s2oclks-ZwYmMXY.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/nihP0YNwxwKdpMlyN9ZNePfSx1dAemJjIUZik7SlYxI.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/oH-hbt3vGnTckrMe1K-3JrzfzkfcloPDQ4L0CFn1bwM.cache +32 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/oY_XU5ADj_NmjH0omdCyuf1qGeV18Lhy8qDS6uzg7oA.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/oy_eLLrZtAbv8Ivsvn5TXhMNXJrYd9xGhbzkIEvtRgU.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/pDd5HlYaW01ZecvMLIAubLwMTNCTfqDgVdIeeHMuDQI.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/pNuI7nym5ZtskUMpJgLr4RWmFpHhY_dZLA5NwSK3dis.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/q188cwMLy5FD8FkFa7frjoJr6VR3RjQhjD2P9IrYzNk.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/qKlEUp2I8S_8cU-IooV08s2MujEdsFS1pCQc_QTRzCc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/r2glI8vPCduR65mk18XVmk65uIquarjwFGgb59CH3tE.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/r9T1HQ-hSfuQcrL_nSpZ7J6mpU_LiT8Mw2fSA-xQR8A.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/rQQn3COcRPRzd5CUtTfn5MLHuLvIEj2BR152ESk1kAQ.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/rSg_bYso__nRoIKqlpIp1sDO-dK_NpBv9WAR3P5aChY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/rqE-uWjUpjTJQacEck-1wlj9hHrdRJ2PmMsUkiL88QY.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/szb7FhgpUPZ5iwd8P15GLG2Y-nXOZQlPuoNnkZodDZs.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/t7Avh-u8ClVbyPheuvXJoNourlIqKwNTXs_7ElS3j8k.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/tZyb7vpt98L9jubim32NOpy6ln_2a9N1NipM31VEbXs.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/tdO1XsjC5iWX0Ev1dTRlppKaajG4ATtWGKQ8NkyPiuI.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/tj75VSAHiWx2gbOaiNbjvSpWEVqjHACSWPwtv2VCoSk.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/tnkY73Yfb7qArDJBY4gZjw5fyclLqhudGRp78u8AxOU.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/u4yYOpNMR6jzA8kEBKWIw4h0AYzXPW5v93E_yzhnc4A.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/vE-x41_K8TQ3Z7XeQTivuiBOGI2lPCsuCkE5oPuqZZM.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/vK1tr8vtDEBfPQ8eVLucCdOvJpcWDYg2eA4jZtPWej4.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/vYp1wNky3OrU7mcJfRfrrZwBTRpx6WDq4A3YCYljX0I.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/wrTVFMBsweZ8U34G3oNE1tGjC3905qsJbpNbK-qz2hg.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/xAu3ysgWqBbO73MJ4_44j_vnOCumvXJyDG2ADjnb5Ck.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/xBOd1xpwofj-D3bcu-Dfh5hp2tMWBNfxNAp6qe5x0Ig.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/xCcL_B6JyBZSNMMyvg-BJbZDwAl6fJxYw7GJNBZUwvc.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/xr5BkAXYL4E29303MfN2hOmc-LxEYbzDQpUiN9Qt4k0.cache +1 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/yIDJo17UyDMSmBr7SDMK7zKrMWtl5i4Jf8RX-XE9y8k.cache +2 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/yQvqeK7OrdTQsommu8-RnFzjFcLavinCoDDqDQEQVrU.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/zdtm0jbYXVIz_MRLk626UeTIVMn9TfnwG4ZPYeHChfc.cache +0 -0
- data/test/dummy/tmp/cache/assets/development/sprockets/v3.0/zuoPybsXsCBTU15ZlqU_pkrCqXtN97fv4WOzpjquWek.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/--xYYg28ZgG74o2MD9rsG5dpKtURVxoIDsqcc8qgakA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-3B5Sq_gO-FSdY8_L5qlv_DMJj-Qnhr66f1H2yiuqbE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-Q07CPm59S5ORobb8fwq4UlsHxQhcqCG7KMF43XIBvQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-S8RCLZUZHMujh41FwO7bZgH7r-dZ_Ttwa3jKPEf7D0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-Svpuy5qSkiFtZsFPydzdLgop9RqO4D8hHORvHE75rQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-Zl5a7hl5EKRFECAfcUfbufXUzTCF0GCYT43ksSeoS4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-iLvx0LVcOG_nqz7Fdj1C9DRzieksHjWrXvsg2MXe_I.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-mVblO-V2dhzfo-sDOQAZ5Bii8MoKb71hYsDcReOQRM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-xIiF2JBomnwE2qrb6LMQp8Sfaw2EDlWkhBhNDgHUPM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0NxqZho4ZZ9hoELrS2P4tvlolQFBpstWUV9bwB--hbQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0UsdriPGE52puvNRs_QVjnUt5k66EzqX1vuxQ6zHGHk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0X4d4ydG6vXWQTW-SLUMUVggRUaGmUV8VqJQEO5V1o0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0bjH0uaRbK2LwiGbzir2Vr1CEd_BCRM3zafyFrTxtWo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0vo5uBz0h_8XVbEyHjjAaQjYFNiv1pJ1t88uaZP5vgE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/12ZGGSiVtaGImFqpL3E7wYM8BLgza-Soy2gvp-85iKg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/16Wb3nTKzFhipHwCvyycQYi5o2bBSfbHsS_5oGhmorQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1_959hoGCdTXc7SRcOU61Q3bynVkxUUOJ4YM36Hj6Dg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1kuMWc_5k3pjBZLNEnHvepf-AyRFH33BOT3Sn1Pz3zQ.cache +60 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1lvvsnWri7lBSX5c_k5wpY-iUqApvNHtRgAAF2cF698.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1n25jTvxlE0_W4Vny4241ilVRFhO7iNBqTBySiAkVe0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1ro777nvt9hjYDdIzR_Pw30aAyqetWwSj5zKDE2WIog.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/1zBRTZdcDRu40j-ZnUqIe2M0zaoKswztd32zKC-y81E.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/25lxycnfQK4dlVGfzAci6GiYt4lQq6fd_qiVNZo0JM4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2awJSiCKzMNAPcXXHmS1YYE8rw82M_5O-Gq9agiZuig.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3gygCMbDFJRBo3mQy1o3xijN2l9IigxjWwsjyodfUX8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/3rmfS6SQaVEfYqGp_fPyJyQ6C3OFiqd4P22R-zZmGTc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4XVry62-Oy3F-4OuAIOND2OtOIgosg5VVM5YTo8rZ2w.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4erxjbJtY8zTAzw508nz01VXWr9KAaq0zMKNaQsiLrI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4g2h1H3cGVZBXKg61dDYW0VaPexUM8aSTFIl9ultF_s.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4hP4QN3j6cVc09qghrcIrJtKzD5ClNafvWO23FFT70I.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4hYxdJzS6DXXtabQYCZyFjuHr8AHRwjQgcl1q6tsjS0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4uCsK_x53wwKnTDJHYCyDACNB_Reb6z8wHieAgx7yiE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/4xN2-up9H2rLnCZwRoYegqXIhEHrS3PMOoWfVNYwV9U.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5-U7omAI0wWlpYtm4-S-0h2s2orLnhYlJctYVZn8H3M.cache +46 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5QxwpwBpxpXTsBQkjMcheP4Ln9p4tkB9DQpUFDgpkYM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5XDag_F0lOIb4J0uXrXSQAVBYlDxifQloAMs0QsHLRI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5XLj1Fg2z3ne9vQbf4sihnpTkXGmnXubAgPGj7ot2es.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5_rfWOfsRxc3w3_noXoTq_GLncwWosv9YI05ltqVTrA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/5n0Kh-4f0eYJAxZZLgugvHVEdoHwLcpyBuNPdN60Ee4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6HeDvRGCfqlqk23evy8VddT4EAW89Ss8s3qscR4ptH4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6KFAG929iIC5bdDDadWdp8ohukGMDq9GXk3dku5dxNI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/6fCSqdSj4G3XMp6YWNTUbFyhSY4rw_6OakQbYSEUdOM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/79odVsVErD7g_a_DfYjm3Z9YFxWGWOTTIwu0JjV9oZw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/7P0joc4hEGhjx_5KgRyWYVgHDE0GeaUq57sGd4edbFw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/827OJHVgQ0McTz3Up3RIDueQDw-qxXrFtPhUjYk-VSg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/85mike006lRp6geKXjeKgvIvMDXDNvDw48ptdTUCo44.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8MY0VO78Oyrax7dhgf0tXt5HA_sGYWQiQ1hlIPkASmc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/8Zjkb8Nbyf_fyorM9OYSg1IW-NY4Pk96-g_1U4d5uls.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/998R2V4dOSn3eMG0eN-ZlMNCZbUylPubzGQsDxKs_gg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9CGVA3IfUIwEqtQQABOKf3y79eF_ffEOZsCSI8dwnsM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9Z8yDnEnhawuTKSXzKn2B28ESruTwr2f6OEGnDW9XYk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9bmg6UGOOICN8gzDj7UWomSX2Yiir0pmET1rntY3FMs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/9rUFrRUHzbmpYRa1YhTYSr3E7_b2qI5TcqwcyThkqS0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/A18m8UutFtfPQAsEmEsLDKPg3XRgQik_FVmfeVmf74s.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/A349hKKDjByNyQbt6UJJC_wiNKpekz8LPTsRQxZfL_I.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ARyT0D_yLqHNfX42vJfHJpVQK9qmXylaxKwffw-bK8Q.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AXSKlO2Sxm2An8wkP5qYs12Qwa2Z9AmF8uvy7QQzvKY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/AlmSreEEi3ehLI_NnRga_sguil2POSjPHR---Fm7fgU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/B52hPzEnHTBv6R1ccsa_nCZepnMMKuuFTZt5r4HiWBE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BA9bsW_K9IVOHhRPZlIe6lTn6wtubZAR1WOXUhU-WQo.cache +20 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BRCz37MapTKcrHup6ZjsEtEZtHNBp_bHNq6ZHPYZsYg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BROQnDhwyTD5fSETT8ZdUu81o38jSGU4bMZ9LrIETU8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/BxMB-nPJBAjv49th2LLgmJ6b8R2goN7xAqU-DHLEFJU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/CSxml3OCDdrgbl5purNxVFVD4QHTy2I2-r-ij1lf4Pg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/D0Jg_F_hCc-w-JuDlLcQlO8NcA8Cvt6wC8aes9FQ8No.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DAuGN5SgyRQHoMIMSjixXkF95UFMCWX2mVKek4PQru4.cache +19 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DICNVWZuYxJziT9YJDU4XShqsoB3EgDXHbbjHhdGP24.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DVJZdcJv_Gg4NUAjJnLLo8gAPryIK8EAKIVm919byJo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DWst_RfDvZvN7kPfGemYnLYI-SLzI8cQolQRqDr-Rhg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DhRjwXkxYAq2yAQfUB6wnok6KAXqQsIrw_fjZp7uzsE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/DpZ1ZqrjWPAL5iFn9j0QAd8AicRKjdy9ZeLWMPdpi-g.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/E0ETAEMGdo60gkvYCL5G_Vn7tXoJdmsBUukmCfxJ0iM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/E8l9q6b3-ddKWl7FXOmpuvTg2r90TyVLFwSMWUPGE3Y.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EMApzh9Zc-zZpBTDp62Q5ouIUmvt4vxcwsqzRGxs_BA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EOElWuFh_ifk4iH_fo5uwKhmf_nZGPjbZNfyDY2fYnY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Ej_cosO1rr0pAQBmFqlC87mCyF3RgtIMGJcemwzf-SQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Emvowq0-Y2t-j01-5EDIvZwSffNUDwwUhGu_3OeJJZ0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/F37uHaVREUTDUjX1e27DJbYpPuGvu9SVj0qlH7A4QYo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FFGEFID_cOucpuisWHfJyorPiwkZ_mQQDFYbvTr7PFc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FUKyxTYuAeD7ARy1CQy1vPIf_X-iEf4KkJ2kjSH0834.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FgDsBEFY4e4-V5ZLfZRadhAckdKR37Rr2Zl_SvWrz7A.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/FwHhmedTcTbIKeoMXpSW3I-gJfdAxkDdhewpc0mPrP0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/G3iLKadXny4kV1WxAsV8UIZL2VH0p1RshXbpuRq_8yg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GGhfOjwLGkIdWz3D4NMZrhWyzP86H9UdmHBBLppJDCk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GaJn5HGvDVGNfSENSJLR3KtMu707-JIT3sLmsKmvVOQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GagiRkmj9cxYLhz5VSz3QnhCGss9vntY-R-IyoIhJvE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/GgMf3w0fmEjYugVfvVbtygBWEGTh6Cak-Te1J5EIaNo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/H-Jz_LFXIKyb_g7xm2DdU_-FROr1oWmendLwz9-q41k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HL1UvheKLBZXtr8P8oaA2-yUyTbSSI2t0rY-aqKn30k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HP08GG0ceTVQmISmltR8IPsfP4v1eWUFE8rWg7JrePM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HbqeHpw1tx8v5Dc_4WexMeka83bYabLLjYFmuSYmOFA.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/HuaIDeUZZuTVW6O66SY3zRbpRhmwK4dzNXrS6uEncyE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/I0HYg1pV13ZQpHIpDpxU0DnSZAqQDHtc-CD8caQv8fs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/I4eNrSofbsifXIql0FOb_MqOBll3b8mwB5AOM1xDUtw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/IEOm3Kuz032yL4pBPin63qsyMmgIg0I0ukB3krtulg0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ItA-7kAIOwUJE5I5KvoiYDiwZahQduh1FBIivkucbGA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/J1FRJEK2s7BElPtVEbILj12-JpbYwcwEu89hfOeDnzs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/J738qcaLvepTDALOEFtX4SLvBiW-xBKZaWc5qMWn1IA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JPmSn9p4wmW8RfOF6--bvMKdGB_nPUcYfTIDwUXD9io.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/JyY0td6ydwiZgiVINv2tslgeRAlwmIownlqTX1JGZrc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/K6ZvX0-uKZSVw1XMtcGvp5hltEbByjjsc1mIVDU4s-A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KAIKYUpS-lUgMpmqPR9zNn1MEhgUsud6USvsTNZ3zL0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KJyTJM1FL9mPAfarmV46NGHFC1MLEANsJn4aBsSeofY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KPV18Bn4TSWNhehGZ1yyxctPVZ5Ml-a8ohimUdxIQ9w.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KddCd-yqhUcXwQ6MT85dUb6yxMpbNXpp_Vu4e8Jq7NQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/KmGY-_e-RBtXrjPIHtp4kbC_tSpLSVwv2ZrAGU7dWhE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/L3MalVYxWA0aV4wedbyfuloJhyT7fYcCFUsI4XQPQt0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LLa_nArZhPNytvaWEMIdkIj8NI8v8nwaQryZ7NWFdzQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LNdXskRK5LA8RB2PvLQqahvip00928K0hIiM0RqCjYE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LQs-CnMa_GpPs-OPBWYDhKqpLt8OyAyZkQYP23FGXvE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LUXMtlEGRFCiRhU1Teb6KQTAyz99i46YafhKeA8V7ZE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LbgSSjU__mozAxJTfXkCJa_WXJt-rDnBlbR2JlV_oSY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Lfalx3rOcysdbuZMY4pUXKmWLoq6qhQMS90zEC92fIE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LgPEh1a-gczEJtPS0dY6rOFu_So64fKoAqSbKTikeSo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LyXwxormtRZcaXzIMoQY1GG_cOyfPDRcUrqh4Z-tXzs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/LzkTltF6Tj69P3XdIYTgoA8IaSHa0AC4j56nXcJtm_c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MH6FybAtwkVK595sKGsjJD0cUP7DQgWmB6pzeNk_AKc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/MI1SW5esw79g2uG4wlBVABG4mdf2HXdg16k_J09BELY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/N0BNO49Row05oLOUjvNwSzMD3OkWOiu1JH3x5sIjOGo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NJS_0DD49ggZhk3RhAlbxDtekRUNexcbFBERE3lphoY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NOoCN73Mfou0sHvvMnlOMLECtprgKWNPmOtzGDJL8aI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/NnHHX_WjteTP59l5aA8h0tRCVkQaFcn5f59eU-aXRKY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/O28Tl7beTGm8tOGThnfq_yjisj6DwQiS2I3gk0gojmE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OB2JHNrhaYRcKUu-6gOGAOfDGN324cu22pHNTwYUTPw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OFtYh3kL0OSQKgGGpK-F6NLPg2SLyK66Ey3-cJ7bTnU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OGmGlWntiZ7ZVFMeDogZlItG_EYlFr05jg8d9Dg3ON0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OUqmqA_-k5ekc5dju4JFyrJPNJMR5c0dP_FyrtRzsAE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/OfuIsxeQmZWy1tbBdvSLPyDTl2uKFmpWtomRtGx-x1c.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/P0_YdzVs4se3C_-OBPd86NaCO7bC_QaDqnGh9aY4x-I.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PCTfmMsySv8slVKZHH-9jzxrKL705uiNSaIWUgM51i0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/PR8Q50mMVzmIN_aggQXVKoja0vtL-EAJyEQvK_UCarI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pg8NuP-Xj3PdqcAYG0YyyUsj90Zn18iPU5lpeHbTDpE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Q6OsC95J6F983SqDNxfJ4hK1oTJo1AcGRZR3mTfYO2c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QCnCQ33fDmdqooEW5dqorhObNkGRcuRJc6iL6dhaswI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QL4HWY_CCW7hJkGLNnxpQS9395ZiFxxrycWmw82FA7c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QZSKy1W0Pl_9ntTk3XD6CxCDYu7JwO-w084ovFu606w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QaJxPv_bif6i_35hKW_bqEoflYTPf62ZihJwno-S144.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QjYV_JHbdUV-osJQ_G39-v8aWJs9jk2Gijkv2QxaGqw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QklnVbVBv8BRGfUgG26H0gn1Q74Y4LHJ7n6UW3euIMI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QwFgVzdqWk1U9IJu_iuo48z2wQX0nG4x_WTEpRgQejs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QwGnjp6jYOqq66DmJSJhjMfIzvDjNSQrzNjeuldyVTg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RTW2G_W3mtAiyIltmBhvDkOwXHlmz--SYhNU_ds6JSc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RU8_ju_q3MBZ8d164sgK7zWVBRPM8qYIzNdU_bKoILo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RXRRnxPgyBhfo4V7bZWSebiVZs4gfcEoTVxE586c4lQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/RarKYi-qrs-BQYnbK54qAMURAE424kCrthIwsRgQ94s.cache +19 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SD3Ol83RfPjB8BS_mcOmO-VJznl69GVwmXJYbwPG77I.cache +105 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SOqnJbRZjN7VvSGY5McdxjLB2S0ZX8b89h8U-jBczp4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/SswBfs6AV1clSCHB4KAqcuw5NGYaS5PsnpweXcPsZi8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/TnEsoTFCziCt_GZ9hA0c_wXARuanwiEk8BfBRGnLy4g.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Tp2VZ7l74KvvhtrxOW5lNJD0tGW6xJmoe-6TVTrAbNk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/U7Gd1TAPsiS73V6Z1VYeeWlMP3Isrz8rEW1t2zRyCCA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UBnE_4EiOap1HqQbVH5sIW7RheUyTF9aApgtpR5JL38.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UIShRK0o5Pt9qRzaTTv6DZ60frQqalz6Dca3oLJm42Y.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UQWoOMkPIYRJx_FDpHJgPXVvbE1kc4_4-UpMvLihRiU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UXlxEIkPihLXpIBMLjzup5wro9EjhJLe_UGDHm5VhKs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/UtwxNuCOYG4rcIhlD7HelYaZIqYt3nltQ_w2K_-p4Ck.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/V5DOA129DSkbRyS-gpsjFdXX-RdU4LJwbACHfF3o4oI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VBryDxFVdHbfUxOFTOCO_MgvBar61L8XqQXLKd3bJNI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VCVA07H6JUbiTcijMKFnZpTe9b12jAnYdzlFN0Ny5R4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Vfl8HC52-bbviS84eEZxrXi1-ioECC3he2GU6vVfryY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Vh11J3D94ta2uMLHH-7k5q_Icv81FaUgiI7P7hk-t_0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VlJzoDet-Pb5a-m10rz153Kx_-emGvjG4UuIGwX3M40.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/W-4phS1xYaMGFda8d1u3_Zj6k4F-_H2cSnifylCpngI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/W05fMg1C5j-h8AxLMarGbpJ1VRvgkaEuBNV1lCBhpIE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/WPdAL_Lqgb7_4yjLuRkEvSCGiZKP6nSo_-ChjS-_lE4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/X1oq-rIggwESRIEYhYkgkoWmg7pmEllUVyp-LONyPQ8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XYiutOiHAp8RwwiVfSijdh-8UiVCDv0_wZEThtff3b4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/X_mZKcs3iyMNlkfrt3L1moIZ89J9WAMs-UZFrOUd4dY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XgZCchZuerFn9jRwXqhox03zPvnO6zGMFonkXXSsSFM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/XhxIIqWR8_UIEwpJ2uwdeN7ADla96LIq1UK2mZlaN5M.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Xkx8icYIHXIHJmUqjuiNzd1figVtMQ_mu1rXDajGwMY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Xwvzd4LlA0IbFYPyZItdhvA2uLrMnuTiMFjFpByJbkw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YIuk8i59pWUFreVXnyBoV7aS3c5jeinwWdfU-l9jJDI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YjzxuCef_6LBQ3XNaItf-sCynDcMZc5XiOZfJMkTa0M.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Yq5TAUpNe4UyScrtPvm5rhtJHeIdeM2lHMtHLtANKdE.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/YqSyIrjbDjhodfq_KOe3xscOxddDT7_Bk0dpTgnC578.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Yu6J5-BhGgBpLhcv0ZciFVC7y8O7Ssk2qPU6p1AdObo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Z7lgC4S1HJT5MBm5kJgIqxozY__pC66SviBV_rxVuiU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZMsxYb7MZs4eOp9vf1GqVjWL7J38-6PGKgqflC7o5Hc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZdaS2o6E-OeW7HrwZcjUM4USCtwydIVYjL1DP0l407c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ZrK6oI42856G53uiS9Bm2OG3wVQwl-wrmp_FkmprtpU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_-jJI90DyQhMvgaZq2zoOhkRQJWpD9hIJ0pp056vLns.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_ClMSBItDYjLNQAatrzpg-keANlRkz1SI2vxGa8ycT0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_GIKnKOoV9ZF8Al739SyzWhD-GN0YfdERfHlAxJ_4sk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_K_Uif6gYLD6Ri7jJCbtFldLVD2YMCZHhKWuWl0hq3w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/_m788jlvKlZMNcGNWyuhzBbsC55krOzJmVEf2ujFreo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aTmKVUEqneywgst_BBiwZnkxE8fdf16swyVbYTh3dko.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aU_EdTwbIP23W3D-slo6v3xLrrTCKEZgdamn4M_Reos.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/aYKzEnXfqZxOvd3rAOCGL8eIP9f8EJumJVNRpvYUqfQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/atiR0R0CAj5PD0ruX_nONGxh_sPXGRUd8bKChAg-iyw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/b1FK619DMnZMJ5Uuoz0Laj5U6x49A2JKRrodQ85Z39w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/b4qgRJnAj2Y5q_JgarDi-P08oAWNVHILzFIrZ5AwAJI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bOJr3AhtPOMx9ejMmsJYzgskmzZ_SMdN9yfTf17CkVs.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/brdVDUPanvjgpUirkFiZ0-uQUCkainrBvL53yChjeNw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/bto6afDJ16B0PlFYq7XXhi6IvJcJLUlOXCtdkg8NdPg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/buZYlq1zs42SAmiZLJCuyXgYmzc-2hAQnrfx9ehsUBY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cNl8gR2Lavef5KAE0XyueIXnTpjvj73OHFzPx8iBrlw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cTrmxpXU9ApI086ePHzFAq0j7B_B1_YvJvz0RzmmTCA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/cfRx3ipBTXBD0h2rd1sKk-L5DabMC5E9A-gctjVekWA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ci1SmvlG70ux0eVB4T2Hq0uMWUEUrW0d99t-RCUyyG0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ciQ2R18kG-tyiFJ3HJ7yTiiaSrikiA-dyahRpIthlkk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/d2IRgpfaj8Mcw7iDjpw_Pd6c-ZB4pnAfFxcJujLXVPw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dRIV8oZy_Qn6eC4ThOJEfprH26YY3tjRLQiigpVSgOA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dkuz9zm5ESeLfVVwzPl3bUg0e6Rqg2MZXxAhMtXoJj8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/dq4Tsiwd3ZB3JxjBMStyXCGC-esAhMmpbUY4t6lRuHM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e1UTzoa3w2cfZQqN9uWGzWr4hkAvGoDO2aHIljsoizc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e3-sQb70y3jHaD07YEZiJ-DQfcrqnRP3atG_5bu8HTY.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/e5P56HyISEQtFOD-_07iacjJvkfnjBetUIBJf7BgaaI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eFeAdQ5B7BQIdYq-P8jMfBVvn8JpnVUn8WRFuWnFD1I.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eMYjRGGfXZxScoR1PjKplOLyXqR_PSgZ2e799iqT2Rg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eY6__r1VgPA_sUFUGSWTFPzbn-i_prhrv2Z6xNL-x34.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eZlYE44-8BUpBm8cidvhwxjZNoUewE9SDAjRahCvX8w.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ehi2OrT9vnbTMNHw-iPa26VUVtDZqY7fDm0-IMGpkCw.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ejVQcfTBkjEAMtNdDnz_a081cNvSmcob9HECjKA3SYk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/eprfeyusllUgPu89H6tx9tCiupwxnfl6BWQjj6K4IcU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fDCMk3VTrgyg45sDyEWpAR01Z1wgFJLJ3OW_e_bTy7c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fGhle70_knfNKLnBhkaoCOnkXa_w_zDc54zI2Ai9QUw.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fO8BZ1pSfeHoeEfxNn87mpWvbfnwE7S0iDMI6gDg-zk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/fzJdBiDo7FHxGo0Yo2KKBMiS2sCllVpPw1K8LC2t1pA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gJBKZgBfpSVFA1ioBj3sw-ej_2E5osWxz-EOIWsVNq0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gK-V98E7cO1u-xt632svaYaeLKHrwVdN1el_Tf7OdjI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gL6Ftk12EQ-c56kvi6mYjDBpVEhVHwm60ZFp-fyo9vs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gj0kWoYz_O6ptxHG9gLTLgzJlxNMQ7UgjjUTSnMiDys.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/glV3tqN6rfMtWtfHT0_oTvuEHV0o2rV1Ma-T62Pq1o8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/graU-e4yIipr7ZSCf6lM6bmH4LDIZtgp2MI777l_IMA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gu2rIo1OFVLfxzxVGyw5ZsHWZGejzrzjnvX24oiGR-w.cache +2 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/gyFpNnWQp4_Hq_JG5iaZ1_V8lcxU7EkMMok2r_dmAJI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/h1HelHQXMwT6cGdcG8mWrbxvfqeh23ke3j4oCenQrfQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hJFyMrbkoWRAGvCsSb8jDkE0zRbYNHYHmrvneV5rNpE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hb3qUfgxsCRjJnrMC7DqzNNfjTwcGTlsypxBZFwt1L8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/hkJJ01ATHIvI6x6zh1xBaitcoDK1NQbJNs_3oqcY_Tg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iIgYiHp_87ujUPWmg3DAOju2EgekJtl_ZF7LmKl1lI4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iOw2L1RkhXlm3YhifknLkRW8sIbWQvTQutWE2awOk-M.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/iXP2sX4KiBPouSh0ePODxvKoMiW2PQog5Ktladan2_o.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ifnHDGmGE3XnB9zwYbZVVpBoR_NaVMt8GUeiN2MsdHk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/igEaqPVgdElZfVqP3XJILzh8OirFjcDnoVNXNu_Ci0E.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ih2NImCRnfFX8d79xQYc4Z6DVgjjI7_TY146Xe3sjOQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jB0ZFcqrW6VUi_sNT81XAW29L509iMyKomvnK9upgzk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jHlrtUhKTtjANlTGI5RhTEXU5She5s4DUBgfBtdFCLI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jY7L80PVtlzW8o5IViA50lp2KhX8XWdWh81WPkbyz7c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/jqlD5l1U5ZrdRMdutXMV2yTNAYeiPWkElR8on58imrs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/k2dt-mmzTcpfbEwSu07f7uq-eti-DBpOkAdUZPc9C4k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kFWVZecoz1kW3Wobp6_rZH1WRsb8m5GFkAhPC0VEUPY.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kHBaM2fOz0224c4c62qeVx16vFxlijX4UJZp6oA8g40.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kV-EY_oYRYsVMyVc90iLAVk17OWwWFQ6OqUMi-YdNv8.cache +9 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kXhmcRnQ1DMKO500oXLgbQATMlZ4J6jaK5sM1l0jn84.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ky7PLTdm-fpj2wb7As1WG34psSb9vnu9g8tcbjOYVGk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lAkkBi-SBWauvtX8gUAbSHpkQv8tTN5Ao89ZekrHOA4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lFazcVEqdNP_u8ktAbDLNJXV8hZU8IhBkbPYdM-7mZg.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lIXpLp9Ksp8SsGX1waXXnIvcDtPotycT4PR-6y5r7kc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lLgAoQdQcLX5OADukstsUdWyCWkwhFDco_x5HrC8RKg.cache +140 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/le23hz0CHWNBn47lLpU5O4RnAhWMeZhbpT1HJZVL4C0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lpGGGP2ZEZ-AzpaodLPhuL-ofq2WTTzYz9FRPHWfdu4.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/lzIlyywNJ_DeKA8f2hHho-0GFFannFJsQ1hqQLiOu4o.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mFDLBh9qPX-WwfxnM2CwV08EYNBpCntXor65I2g5zEg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mOc6-R14LV_aNyEj4Kctb9sdf2OTNT1eJd6gq3-1ZqI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mk7SmWmZqpNqz95LWKih8v3rtP7a2aQDN8pgjSj3qDA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mn1hUZrlYsuULP48vHtFh0JpLzJKgNWWCmNnbLD-GTk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/mz52qfsOMUKqALEsn_TqTe6U636ZF5gBNgcFzHY3Q3k.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nDXW7K6M6_yyhIv-6bGeS1aN2ezwRZRwcNpfwdBp4J8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nIBiA_CFLpPtwIzw_PhGUNVSYuaIn69kPfR94E4L3Hs.cache +19 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nToh0VToMkuzWPFW1NUIiFsdyiQMob9tV203qq3WpZo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ni5PVuP8H7CBkGdwpQAqP5-MssEVjd5gNKWvf0SOolg.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nihP0YNwxwKdpMlyN9ZNePfSx1dAemJjIUZik7SlYxI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/nzUWR8xDKZ_Ir7DXHpxR-zOwHC-yWsR4YL8k520DNfc.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/o1DVS19Zc2CqckQofSeuHUs66vv5SobsBHK3pS_-5FQ.cache +11 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oH-hbt3vGnTckrMe1K-3JrzfzkfcloPDQ4L0CFn1bwM.cache +32 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oWmxYxRCTTlDAsSdOZRIvNgLaGJxtb_WIONB4ftWCG8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ofLUP_Yk8AXybQ9gzUU-we1S7_LA8il_aIE1sXniOrU.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ojMiDmtBMyF_KT3txYukUKUL5Kj2yIZmFEJpzObtxgs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/oq69gqQBKyOzQHwGAPT-u1zyv_GVTDDDacsF366746c.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pDd5HlYaW01ZecvMLIAubLwMTNCTfqDgVdIeeHMuDQI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pNuI7nym5ZtskUMpJgLr4RWmFpHhY_dZLA5NwSK3dis.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/pkZR29akn1drRpVUOeTHNfD_gnE0AWXYaXcE56HVJ7M.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qHhRJPrgqNW7mXcmW3VxIulf9QHQ30-sbvHUng52Sjk.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qKlEUp2I8S_8cU-IooV08s2MujEdsFS1pCQc_QTRzCc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qfHRPPCKFQus6afwccgP3JNKe5_RYJcy7DYgP8gfnzs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qio20wHZICpzQE4kJ1DarhsVmm_S7azt4AZ5Pq3P9As.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qkkFwVb1cVM3YCNThW1Cz1UTypZgAr_zAdeWtV5f8l0.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r9DR1K6ommSyp-M0JTn-UTxyU3bIVKAUqnRBdUu39P8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/r9T1HQ-hSfuQcrL_nSpZ7J6mpU_LiT8Mw2fSA-xQR8A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rQQn3COcRPRzd5CUtTfn5MLHuLvIEj2BR152ESk1kAQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rctQTrcaea0gbgtr2T3qwYWynbsqv6WQvmjYzNlxlv4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rey0z3BNoJD05np0wY6XcgvA9HibXXcufR_MjzdAuAQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/rnzZU7qrBQCXvieRP1ks4_yYH9txXfNfgTtoujlacW8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ru4jDqqVpEAlQjx5E-f4Fv5D0NLeeI_oDLwKNDkyBho.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/saI61t1Gx36NNGQgdFWqxkMpEFrNb9aTxcorD003Ak4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/szb7FhgpUPZ5iwd8P15GLG2Y-nXOZQlPuoNnkZodDZs.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/t7Avh-u8ClVbyPheuvXJoNourlIqKwNTXs_7ElS3j8k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/te4pM1TEiH-GIKjOGWISta0-ket_fnWehtdMjFSDiAo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tj75VSAHiWx2gbOaiNbjvSpWEVqjHACSWPwtv2VCoSk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tnkY73Yfb7qArDJBY4gZjw5fyclLqhudGRp78u8AxOU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tpduPkOXPTJYIYuQDQA-RjgaedaTTC_FKPHywx7t7UE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/tpxrga44pIPw4V5vhDYZW9pZdbFHrxF0htVJ7fURkOk.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/u3atPL-XOxrUiYxndBh9gf_nOqgsVk1o2uTTF2SubRQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/u4yYOpNMR6jzA8kEBKWIw4h0AYzXPW5v93E_yzhnc4A.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uP4Fu5bTeMEZY9aGRJwTJtq0In7-18uTCGCfqPdUmg8.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uYRWhPJj7DCOZc-75cumLgmUs0yo3Weg8zv7Yzu1bUI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/uatCh0KL8lRbFxjebfBDG7jOOd1ZWuHMwDDLDDqybjI.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vE-x41_K8TQ3Z7XeQTivuiBOGI2lPCsuCkE5oPuqZZM.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/vTguw-uCigkl0isJPx705KEi1AcWFf6mnEmI6Nq6P-w.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/voB4t40IUoMQIKjZQ0NiSHYUGBeDuInHnnrpV0unKy4.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/w3WqCYzTelVRx1brN1EL64magy1NxAlV3_tpTubVl9g.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/wE2EvUFir2Zw_rtB0tPg8Nt2kAdtQ80hutoymJGfjvA.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/wbGRKNQTK3p7wwn2kZiiyS1HnNTTzvKo0oaHnRhFWx8.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/wt69bdlXAN1b9lhV8rgWKo9RdzV6gOKAkR0buSZ8_sM.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/wwdRA7D2ql_Ie9cHUnafLxTYPcI5T-wzbK8RhLsemZE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/x3Z_eNYi80gtLQMiTapLgr--wqUapolNPAOoAudKzkE.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xBOd1xpwofj-D3bcu-Dfh5hp2tMWBNfxNAp6qe5x0Ig.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xCcL_B6JyBZSNMMyvg-BJbZDwAl6fJxYw7GJNBZUwvc.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xJ2aUUwebHjY-4Gs1j0-ridrrc6DQck0S30FcL_U1zo.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xWkMdV-Akyv9gYdNw2SGbLRMuYVpjMnJ0ILqArzmLds.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xeWfanjaDdKH0v3jSQnjOwNev6PTkqNhXQNwH0qSvrQ.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xoIgzWIiNa7vXnufFO4-O7VH5UhTmU-HgVhok8h5a2g.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xr5BkAXYL4E29303MfN2hOmc-LxEYbzDQpUiN9Qt4k0.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/xrYjbWp_UBf36hhBnuuvF2Qpxdi8yj_TQCiA4cxXykU.cache +98 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y1onYMNB-kLzEeuEI9NF7qYMlVRuTypHXqLa5ozJXTo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yAz1OsBonngvZoLedoNzSOp4kE75i2mglhWfNv05Q4g.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yIDJo17UyDMSmBr7SDMK7zKrMWtl5i4Jf8RX-XE9y8k.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yQvqeK7OrdTQsommu8-RnFzjFcLavinCoDDqDQEQVrU.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yT6ggTIDiAOphCbBIF5ofYw7MebsuoIhMI6XOrSd31o.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/yX_q6Ed3aaBwSSO81cUXcHyhUCLfGC1fc0cGAQvbpAo.cache +145 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/ykDqGI7K5FHyR2BZyrRia-AGUYIdnR6zxsDyJZ6tuw4.cache +5 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/z9I54TIBC_r-x0kO0i-lOhntWDn6y_7cVsa4ERKHEgo.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zAkRi8hEYqm3CpbrZx7fBvr2xhWHXDBNGKBlXC-mcHA.cache +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zd8kl79CPoe0tIx9BZsUM8goF3Jjln6BqiOFn7ckKyI.cache +1 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/zuoPybsXsCBTU15ZlqU_pkrCqXtN97fv4WOzpjquWek.cache +0 -0
- data/test/fixtures/api_clients.yml +17 -0
- data/test/fixtures/commits.yml +77 -0
- data/test/fixtures/deliveries.yml +13 -0
- data/test/fixtures/github_hooks.yml +25 -0
- data/test/fixtures/hooks.yml +16 -0
- data/test/fixtures/memberships.yml +3 -0
- data/test/fixtures/output_chunks.yml +25 -0
- data/test/fixtures/payloads/push_master.json +84 -0
- data/test/fixtures/payloads/push_not_master.json +84 -0
- data/test/fixtures/payloads/status_master.json +206 -0
- data/test/fixtures/stacks.yml +65 -0
- data/test/fixtures/statuses.yml +82 -0
- data/test/fixtures/tasks.yml +65 -0
- data/test/fixtures/teams.yml +17 -0
- data/test/fixtures/users.yml +15 -0
- data/test/helpers/api_helper.rb +9 -0
- data/test/helpers/fixture_aliases_helper.rb +9 -0
- data/test/helpers/json_helper.rb +47 -0
- data/test/helpers/links_helper.rb +21 -0
- data/test/helpers/payloads_helper.rb +6 -0
- data/test/helpers/queries_helper.rb +57 -0
- data/test/jobs/chunk_rollup_job_test.rb +41 -0
- data/test/jobs/deliver_hook_job_test.rb +14 -0
- data/test/jobs/destroy_stack_job_test.rb +16 -0
- data/test/jobs/emit_event_job_test.rb +14 -0
- data/test/jobs/fetch_commit_stats_job_test.rb +13 -0
- data/test/jobs/fetch_deployed_revision_job_test.rb +30 -0
- data/test/jobs/github_sync_job_test.rb +51 -0
- data/test/jobs/perform_task_job_test.rb +104 -0
- data/test/jobs/refresh_github_user_job_test.rb +13 -0
- data/test/jobs/refresh_status_job_test.rb +20 -0
- data/test/jobs/unique_job_test.rb +17 -0
- data/test/models/api_client_test.rb +27 -0
- data/test/models/commits_test.rb +234 -0
- data/test/models/delivery_test.rb +37 -0
- data/test/models/deploys_test.rb +290 -0
- data/test/models/github_hook_test.rb +54 -0
- data/test/models/hook_test.rb +43 -0
- data/test/models/membership_test.rb +12 -0
- data/test/models/output_chunk_test.rb +18 -0
- data/test/models/rollbacks_test.rb +11 -0
- data/test/models/stacks_test.rb +296 -0
- data/test/models/status_test.rb +55 -0
- data/test/models/task_definitions_test.rb +31 -0
- data/test/models/team_test.rb +50 -0
- data/test/models/users_test.rb +82 -0
- data/test/test_helper.rb +56 -0
- data/test/unit/command_test.rb +39 -0
- data/test/unit/commands_test.rb +11 -0
- data/test/unit/csv_serializer_test.rb +36 -0
- data/test/unit/deploy_commands_test.rb +165 -0
- data/test/unit/deploy_spec_test.rb +250 -0
- data/test/unit/github_url_helper_test.rb +30 -0
- metadata +1772 -0
@@ -0,0 +1,144 @@
|
|
1
|
+
class GithubHook < ActiveRecord::Base
|
2
|
+
include SecureCompare
|
3
|
+
|
4
|
+
before_create :generate_secret
|
5
|
+
before_destroy :teardown!
|
6
|
+
|
7
|
+
def verify_signature(signature, message)
|
8
|
+
algorithm, signature = signature.split("=", 2)
|
9
|
+
return false unless algorithm == 'sha1'
|
10
|
+
|
11
|
+
secure_compare(signature, OpenSSL::HMAC.hexdigest(algorithm, secret, message))
|
12
|
+
end
|
13
|
+
|
14
|
+
delegate :github_repo_name, to: :stack
|
15
|
+
def setup!
|
16
|
+
hook = already_setup? ? update_hook! : create_hook!
|
17
|
+
update!(github_id: hook.id, api_url: hook.rels[:self].href)
|
18
|
+
end
|
19
|
+
|
20
|
+
def schedule_setup!
|
21
|
+
SetupGithubHookJob.perform_later(self)
|
22
|
+
end
|
23
|
+
|
24
|
+
def teardown!
|
25
|
+
destroy_hook! if already_setup?
|
26
|
+
true
|
27
|
+
end
|
28
|
+
|
29
|
+
def event=(event)
|
30
|
+
super(event.to_s)
|
31
|
+
end
|
32
|
+
|
33
|
+
def already_setup?
|
34
|
+
github_id?
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def update_hook!
|
40
|
+
edit_hook!
|
41
|
+
rescue Octokit::NotFound
|
42
|
+
create_hook!
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def endpoint_url
|
48
|
+
raise NotImplementedError.new('Subclasses must implement a `endpoint_url` method')
|
49
|
+
end
|
50
|
+
|
51
|
+
def hook_properties
|
52
|
+
{url: endpoint_url, content_type: 'json', secret: secret}
|
53
|
+
end
|
54
|
+
|
55
|
+
def generate_secret
|
56
|
+
self.secret = SecureRandom.hex
|
57
|
+
end
|
58
|
+
|
59
|
+
def url_helpers
|
60
|
+
Shipit::Engine.routes.url_helpers
|
61
|
+
end
|
62
|
+
|
63
|
+
def host
|
64
|
+
Shipit.host
|
65
|
+
end
|
66
|
+
|
67
|
+
def api
|
68
|
+
Shipit.github_api
|
69
|
+
end
|
70
|
+
|
71
|
+
class Repo < GithubHook
|
72
|
+
belongs_to :stack, required: true
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def create_hook!
|
77
|
+
api.create_hook(github_repo_name, 'web', properties, events: [event], active: true)
|
78
|
+
end
|
79
|
+
|
80
|
+
def edit_hook!
|
81
|
+
api.edit_hook(github_repo_name, github_id, 'web', properties, events: [event], active: true)
|
82
|
+
end
|
83
|
+
|
84
|
+
def destroy_hook!
|
85
|
+
api.remove_hook(github_repo_name, github_id)
|
86
|
+
rescue Octokit::NotFound
|
87
|
+
end
|
88
|
+
|
89
|
+
def properties
|
90
|
+
{
|
91
|
+
url: endpoint_url,
|
92
|
+
content_type: 'json',
|
93
|
+
secret: secret,
|
94
|
+
}
|
95
|
+
end
|
96
|
+
|
97
|
+
def endpoint_url
|
98
|
+
case event
|
99
|
+
when 'push'
|
100
|
+
url_helpers.push_stack_webhooks_url(stack_id, host: host)
|
101
|
+
when 'status'
|
102
|
+
url_helpers.state_stack_webhooks_url(stack_id, host: host)
|
103
|
+
else
|
104
|
+
raise ArgumentError, "Unknown GithubHook::Repo event: `#{event.inspect}`"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
class Organization < GithubHook
|
110
|
+
validates :organization, presence: true
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def create_hook!
|
115
|
+
api.create_org_hook(organization, properties, events: [event], active: true)
|
116
|
+
end
|
117
|
+
|
118
|
+
def edit_hook!
|
119
|
+
api.edit_org_hook(organization, github_id, properties, events: [event], active: true)
|
120
|
+
end
|
121
|
+
|
122
|
+
def destroy_hook!
|
123
|
+
api.remove_org_hook(organization, github_id)
|
124
|
+
rescue Octokit::NotFound
|
125
|
+
end
|
126
|
+
|
127
|
+
def properties
|
128
|
+
{
|
129
|
+
url: endpoint_url,
|
130
|
+
content_type: 'json',
|
131
|
+
secret: secret,
|
132
|
+
}
|
133
|
+
end
|
134
|
+
|
135
|
+
def endpoint_url
|
136
|
+
case event
|
137
|
+
when 'membership'
|
138
|
+
url_helpers.membership_webhooks_url(host: host)
|
139
|
+
else
|
140
|
+
raise ArgumentError, "Unknown GithubHook::Organization event: `#{event.inspect}`"
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
data/app/models/hook.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
class Hook < ActiveRecord::Base
|
2
|
+
default_scope { order :id }
|
3
|
+
|
4
|
+
CONTENT_TYPES = {
|
5
|
+
'json' => 'application/json',
|
6
|
+
'form' => 'application/x-www-form-urlencoded',
|
7
|
+
}.freeze
|
8
|
+
|
9
|
+
EVENTS = %w(
|
10
|
+
task
|
11
|
+
deploy
|
12
|
+
rollback
|
13
|
+
lock
|
14
|
+
).freeze
|
15
|
+
|
16
|
+
belongs_to :stack, required: false
|
17
|
+
has_many :deliveries
|
18
|
+
|
19
|
+
validates :url, presence: true, url: {no_local: true, allow_blank: true}
|
20
|
+
validates :content_type, presence: true, inclusion: {in: CONTENT_TYPES.keys}
|
21
|
+
validates :events, presence: true, subset: {of: EVENTS}
|
22
|
+
|
23
|
+
serialize :events, Shipit::CSVSerializer
|
24
|
+
|
25
|
+
scope :global, -> { where(stack_id: nil) }
|
26
|
+
scope :scoped_to, -> (stack) { where(stack_id: stack.id) }
|
27
|
+
scope :for_stack, -> (stack_id) { where(stack_id: [nil, stack_id]) }
|
28
|
+
|
29
|
+
class << self
|
30
|
+
def emit(event, stack, payload)
|
31
|
+
EmitEventJob.perform_later(
|
32
|
+
event: event.to_s,
|
33
|
+
stack_id: stack.try!(:id),
|
34
|
+
payload: coerce_payload(payload),
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
def deliver(event, stack_id, payload)
|
39
|
+
for_stack(stack_id).listening_event(event).each do |hook|
|
40
|
+
hook.deliver!(event, payload)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def listening_event(event)
|
45
|
+
event = event.to_s
|
46
|
+
all.to_a.select { |h| h.events.include?(event) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def coerce_payload(payload)
|
50
|
+
coerced_payload = payload.dup
|
51
|
+
payload.each do |key, value|
|
52
|
+
if serializer = ActiveModel::Serializer.serializer_for(value)
|
53
|
+
coerced_payload[key] = serializer.new(value)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
coerced_payload.to_json
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def global?
|
61
|
+
!stack_id?
|
62
|
+
end
|
63
|
+
|
64
|
+
def scoped?
|
65
|
+
stack_id?
|
66
|
+
end
|
67
|
+
|
68
|
+
def deliver!(event, payload)
|
69
|
+
deliveries.create!(
|
70
|
+
event: event,
|
71
|
+
url: url,
|
72
|
+
content_type: CONTENT_TYPES[content_type],
|
73
|
+
payload: serialize_payload(payload),
|
74
|
+
).schedule!
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def serialize_payload(payload)
|
80
|
+
if content_type == 'form'
|
81
|
+
payload.to_query
|
82
|
+
else
|
83
|
+
JSON.pretty_generate(payload)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Rollback < Deploy
|
2
|
+
def rollback?
|
3
|
+
true
|
4
|
+
end
|
5
|
+
|
6
|
+
def commits
|
7
|
+
return Commit.none unless stack
|
8
|
+
|
9
|
+
@commits ||= stack.commits.reachable.newer_than(until_commit_id).until(since_commit_id).order(id: :asc)
|
10
|
+
end
|
11
|
+
|
12
|
+
def commit_range
|
13
|
+
[until_commit, since_commit]
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_partial_path
|
17
|
+
'deploys/deploy'
|
18
|
+
end
|
19
|
+
end
|
data/app/models/stack.rb
ADDED
@@ -0,0 +1,276 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
class Stack < ActiveRecord::Base
|
4
|
+
REQUIRED_HOOKS = %i(push status)
|
5
|
+
|
6
|
+
has_many :commits, dependent: :destroy
|
7
|
+
has_many :tasks, dependent: :destroy
|
8
|
+
has_many :deploys
|
9
|
+
has_many :rollbacks
|
10
|
+
has_many :github_hooks, dependent: :destroy, class_name: 'GithubHook::Repo'
|
11
|
+
has_many :hooks, dependent: :destroy
|
12
|
+
has_many :api_clients, dependent: :destroy
|
13
|
+
belongs_to :lock_author, class_name: :User
|
14
|
+
|
15
|
+
before_validation :update_defaults
|
16
|
+
before_destroy :clear_local_files
|
17
|
+
after_commit :emit_hooks
|
18
|
+
after_commit :broadcast_update, on: :update
|
19
|
+
after_commit :setup_hooks, :sync_github, on: :create
|
20
|
+
after_touch :clear_cache
|
21
|
+
|
22
|
+
validates :repo_name, uniqueness: {scope: %i(repo_owner environment)}
|
23
|
+
validates :repo_owner, :repo_name, presence: true, format: {with: /\A[a-z0-9_\-\.]+\z/}
|
24
|
+
validates :environment, presence: true, format: {with: /\A[a-z0-9\-_\:]+\z/}
|
25
|
+
|
26
|
+
serialize :cached_deploy_spec, DeploySpec
|
27
|
+
delegate :find_task_definition, :supports_rollback?,
|
28
|
+
:supports_fetch_deployed_revision?, to: :cached_deploy_spec, allow_nil: true
|
29
|
+
|
30
|
+
def self.refresh_deployed_revisions
|
31
|
+
find_each.select(&:supports_fetch_deployed_revision?).each(&:async_refresh_deployed_revision)
|
32
|
+
end
|
33
|
+
|
34
|
+
def undeployed_commits?
|
35
|
+
undeployed_commits_count > 0
|
36
|
+
end
|
37
|
+
|
38
|
+
def trigger_task(definition_id, user)
|
39
|
+
commit = last_deployed_commit
|
40
|
+
task = tasks.create(
|
41
|
+
user_id: user.id,
|
42
|
+
definition: find_task_definition(definition_id),
|
43
|
+
until_commit_id: commit.id,
|
44
|
+
since_commit_id: commit.id,
|
45
|
+
)
|
46
|
+
task.enqueue
|
47
|
+
task
|
48
|
+
end
|
49
|
+
|
50
|
+
def trigger_deploy(until_commit, user)
|
51
|
+
since_commit = last_deployed_commit
|
52
|
+
|
53
|
+
deploy = deploys.create(
|
54
|
+
user_id: user.id,
|
55
|
+
until_commit: until_commit,
|
56
|
+
since_commit: since_commit,
|
57
|
+
)
|
58
|
+
deploy.enqueue
|
59
|
+
deploy
|
60
|
+
end
|
61
|
+
|
62
|
+
def async_refresh_deployed_revision
|
63
|
+
FetchDeployedRevisionJob.perform_later(self)
|
64
|
+
end
|
65
|
+
|
66
|
+
def update_deployed_revision(sha)
|
67
|
+
return if deploying?
|
68
|
+
|
69
|
+
actual_deployed_commit = commits.reachable.by_sha!(sha)
|
70
|
+
|
71
|
+
recorded_last_deployed_commit = last_deployed_commit
|
72
|
+
return if recorded_last_deployed_commit.id == actual_deployed_commit.id
|
73
|
+
|
74
|
+
deploys.create!(
|
75
|
+
until_commit: actual_deployed_commit,
|
76
|
+
since_commit: recorded_last_deployed_commit,
|
77
|
+
status: 'success',
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
81
|
+
def task_definitions
|
82
|
+
cached_deploy_spec.try!(:task_definitions) || []
|
83
|
+
end
|
84
|
+
|
85
|
+
def head
|
86
|
+
commits.reachable.first.try(:sha)
|
87
|
+
end
|
88
|
+
|
89
|
+
def status
|
90
|
+
return :deploying if deploying?
|
91
|
+
:default
|
92
|
+
end
|
93
|
+
|
94
|
+
def last_deploy
|
95
|
+
@last_deploy ||= deploys.last
|
96
|
+
end
|
97
|
+
|
98
|
+
def last_successful_deploy
|
99
|
+
deploys.success.last
|
100
|
+
end
|
101
|
+
|
102
|
+
def last_deployed_commit
|
103
|
+
if deploy = last_successful_deploy
|
104
|
+
deploy.until_commit
|
105
|
+
else
|
106
|
+
commits.first
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def deployable?
|
111
|
+
!locked? && !deploying?
|
112
|
+
end
|
113
|
+
|
114
|
+
def repo_name=(name)
|
115
|
+
super(name.try(:downcase))
|
116
|
+
end
|
117
|
+
|
118
|
+
def repo_owner=(name)
|
119
|
+
super(name.try(:downcase))
|
120
|
+
end
|
121
|
+
|
122
|
+
def repo_http_url
|
123
|
+
"https://github.com/#{repo_owner}/#{repo_name}"
|
124
|
+
end
|
125
|
+
|
126
|
+
def repo_git_url
|
127
|
+
"git@github.com:#{repo_owner}/#{repo_name}.git"
|
128
|
+
end
|
129
|
+
|
130
|
+
def base_path
|
131
|
+
Rails.root.join('data/stacks', repo_owner, repo_name, environment)
|
132
|
+
end
|
133
|
+
|
134
|
+
def deploys_path
|
135
|
+
File.join(base_path, "deploys")
|
136
|
+
end
|
137
|
+
|
138
|
+
def git_path
|
139
|
+
File.join(base_path, "git")
|
140
|
+
end
|
141
|
+
|
142
|
+
def acquire_git_cache_lock(timeout: 15, &block)
|
143
|
+
Redis::Lock.new(
|
144
|
+
"stack:#{id}:git-cache-lock",
|
145
|
+
Shipit.redis,
|
146
|
+
timeout: timeout,
|
147
|
+
expiration: 60,
|
148
|
+
).lock(&block)
|
149
|
+
end
|
150
|
+
|
151
|
+
def clear_git_cache!
|
152
|
+
tmp_path = "#{git_path}-#{SecureRandom.hex}"
|
153
|
+
acquire_git_cache_lock do
|
154
|
+
return unless File.exist?(git_path)
|
155
|
+
File.rename(git_path, tmp_path)
|
156
|
+
end
|
157
|
+
FileUtils.rm_rf(tmp_path)
|
158
|
+
end
|
159
|
+
|
160
|
+
def github_repo_name
|
161
|
+
[repo_owner, repo_name].join('/')
|
162
|
+
end
|
163
|
+
|
164
|
+
def github_repo
|
165
|
+
Shipit.github_api.repo(github_repo_name)
|
166
|
+
end
|
167
|
+
|
168
|
+
def github_commits
|
169
|
+
Shipit.github_api.commits(github_repo_name, sha: branch)
|
170
|
+
end
|
171
|
+
|
172
|
+
def deploying?
|
173
|
+
!!active_deploy
|
174
|
+
end
|
175
|
+
|
176
|
+
def active_deploy
|
177
|
+
return @active_deploy if defined?(@active_deploy)
|
178
|
+
@active_deploy ||= deploys.active.last
|
179
|
+
end
|
180
|
+
|
181
|
+
def locked?
|
182
|
+
lock_reason.present?
|
183
|
+
end
|
184
|
+
|
185
|
+
def to_param
|
186
|
+
[repo_owner, repo_name, environment].join('/')
|
187
|
+
end
|
188
|
+
|
189
|
+
def self.from_param!(param)
|
190
|
+
repo_owner, repo_name, environment = param.split('/')
|
191
|
+
where(
|
192
|
+
repo_owner: repo_owner.downcase,
|
193
|
+
repo_name: repo_name.downcase,
|
194
|
+
environment: environment,
|
195
|
+
).first!
|
196
|
+
end
|
197
|
+
|
198
|
+
def monitoring?
|
199
|
+
monitoring.present?
|
200
|
+
end
|
201
|
+
|
202
|
+
def monitoring
|
203
|
+
return [] unless cached_deploy_spec
|
204
|
+
cached_deploy_spec.review_monitoring.select(&:present?)
|
205
|
+
end
|
206
|
+
|
207
|
+
def checklist?
|
208
|
+
checklist.present?
|
209
|
+
end
|
210
|
+
|
211
|
+
def checklist
|
212
|
+
return [] unless cached_deploy_spec
|
213
|
+
cached_deploy_spec.review_checklist.map(&:strip).select(&:present?)
|
214
|
+
end
|
215
|
+
|
216
|
+
def update_undeployed_commits_count(after_commit = nil)
|
217
|
+
after_commit ||= last_deployed_commit
|
218
|
+
undeployed_commits = commits.reachable.select('count(*) as count').where('id > ?', after_commit.id)
|
219
|
+
self.class.where(id: id).update_all("undeployed_commits_count = (#{undeployed_commits.to_sql})")
|
220
|
+
end
|
221
|
+
|
222
|
+
def broadcast_update
|
223
|
+
payload = {url: Shipit::Engine.routes.url_helpers.stack_path(self)}.to_json
|
224
|
+
event = Pubsubstub::Event.new(payload, name: "stack.update")
|
225
|
+
Pubsubstub::RedisPubSub.publish("stack.#{id}", event)
|
226
|
+
end
|
227
|
+
|
228
|
+
def setup_hooks
|
229
|
+
REQUIRED_HOOKS.each do |event|
|
230
|
+
hook = github_hooks.find_or_create_by!(event: event)
|
231
|
+
hook.schedule_setup!
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
def schedule_for_destroy!
|
236
|
+
DestroyStackJob.perform_later(self)
|
237
|
+
end
|
238
|
+
|
239
|
+
def ci_enabled?
|
240
|
+
Rails.cache.fetch(ci_enabled_cache_key) do
|
241
|
+
commits.joins(:statuses).any?
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
def enable_ci!
|
246
|
+
Rails.cache.write(ci_enabled_cache_key, true)
|
247
|
+
end
|
248
|
+
|
249
|
+
private
|
250
|
+
|
251
|
+
def clear_cache
|
252
|
+
remove_instance_variable(:@active_deploy) if defined?(@active_deploy)
|
253
|
+
end
|
254
|
+
|
255
|
+
def sync_github
|
256
|
+
GithubSyncJob.perform_later(stack_id: id)
|
257
|
+
end
|
258
|
+
|
259
|
+
def clear_local_files
|
260
|
+
FileUtils.rm_rf(base_path.to_s)
|
261
|
+
end
|
262
|
+
|
263
|
+
def update_defaults
|
264
|
+
self.environment = 'production' if environment.blank?
|
265
|
+
self.branch = 'master' if branch.blank?
|
266
|
+
end
|
267
|
+
|
268
|
+
def emit_hooks
|
269
|
+
return unless previous_changes.include?('lock_reason')
|
270
|
+
Hook.emit(:lock, self, locked: locked?, stack: self)
|
271
|
+
end
|
272
|
+
|
273
|
+
def ci_enabled_cache_key
|
274
|
+
"stacks:#{id}:ci_enabled"
|
275
|
+
end
|
276
|
+
end
|