stenographer-rails 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (558) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +83 -0
  4. data/Rakefile +22 -0
  5. data/app/assets/config/stenographer_manifest.js +2 -0
  6. data/app/assets/javascripts/stenographer/admin/changes.js +2 -0
  7. data/app/assets/javascripts/stenographer/admin.js +2 -0
  8. data/app/assets/javascripts/stenographer/admins.js +2 -0
  9. data/app/assets/javascripts/stenographer/application.js +15 -0
  10. data/app/assets/javascripts/stenographer/changes.js +2 -0
  11. data/app/assets/stylesheets/stenographer/admin/changes.css +4 -0
  12. data/app/assets/stylesheets/stenographer/admin.css +0 -0
  13. data/app/assets/stylesheets/stenographer/application.sass +18 -0
  14. data/app/assets/stylesheets/stenographer/changes.css +23 -0
  15. data/app/controllers/stenographer/admin/authentications_controller.rb +32 -0
  16. data/app/controllers/stenographer/admin/changes_controller.rb +65 -0
  17. data/app/controllers/stenographer/admin/outputs_controller.rb +77 -0
  18. data/app/controllers/stenographer/admin_controller.rb +13 -0
  19. data/app/controllers/stenographer/application_controller.rb +7 -0
  20. data/app/controllers/stenographer/authentications_controller.rb +30 -0
  21. data/app/controllers/stenographer/changes_controller.rb +34 -0
  22. data/app/helpers/stenographer/admins_helper.rb +6 -0
  23. data/app/helpers/stenographer/application_helper.rb +21 -0
  24. data/app/helpers/stenographer/changes_helper.rb +6 -0
  25. data/app/helpers/stenographer/outputs_helper.rb +10 -0
  26. data/app/jobs/stenographer/application_job.rb +6 -0
  27. data/app/mailers/stenographer/application_mailer.rb +8 -0
  28. data/app/models/stenographer/application_record.rb +7 -0
  29. data/app/models/stenographer/authentication.rb +18 -0
  30. data/app/models/stenographer/change.rb +85 -0
  31. data/app/models/stenographer/output.rb +22 -0
  32. data/app/views/layouts/stenographer/application.html.erb +24 -0
  33. data/app/views/stenographer/admin/authentications/index.html.erb +55 -0
  34. data/app/views/stenographer/admin/authentications/show.html.erb +31 -0
  35. data/app/views/stenographer/admin/changes/edit.html.erb +68 -0
  36. data/app/views/stenographer/admin/changes/index.html.erb +48 -0
  37. data/app/views/stenographer/admin/changes/new.html.erb +55 -0
  38. data/app/views/stenographer/admin/changes/show.html.erb +59 -0
  39. data/app/views/stenographer/admin/index.html.erb +27 -0
  40. data/app/views/stenographer/admin/outputs/_filters.html.erb +22 -0
  41. data/app/views/stenographer/admin/outputs/edit.html.erb +26 -0
  42. data/app/views/stenographer/admin/outputs/index.html.erb +59 -0
  43. data/app/views/stenographer/admin/outputs/new.html.erb +22 -0
  44. data/app/views/stenographer/admin/outputs/providers/_slack.html.erb +30 -0
  45. data/app/views/stenographer/admin/outputs/show.html.erb +35 -0
  46. data/app/views/stenographer/authentications/create.html.erb +3 -0
  47. data/app/views/stenographer/changes/index.html.erb +51 -0
  48. data/app/views/stenographer/changes/show.html.erb +48 -0
  49. data/app/views/stenographer/shared/_header.html.erb +20 -0
  50. data/app/views/stenographer/shared/_key_value_field_display.html.erb +8 -0
  51. data/app/views/stenographer/shared/_key_value_row_display.html.erb +5 -0
  52. data/app/views/stenographer/shared/_tags.html.erb +3 -0
  53. data/config/routes.rb +22 -0
  54. data/db/migrate/20180502170621_create_stenographer_tables.rb +35 -0
  55. data/lib/generators/stenographer/install_generator.rb +32 -0
  56. data/lib/generators/stenographer/templates/config/initializers/stenographer.rb +85 -0
  57. data/lib/stenographer/commit_message_parser.citrus +36 -0
  58. data/lib/stenographer/engine.rb +19 -0
  59. data/lib/stenographer/inputs/base_input.rb +12 -0
  60. data/lib/stenographer/inputs/github_input.rb +94 -0
  61. data/lib/stenographer/outputs/base_output.rb +17 -0
  62. data/lib/stenographer/outputs/slack_output.rb +62 -0
  63. data/lib/stenographer/routing_constraints/manager_only.rb +17 -0
  64. data/lib/stenographer/routing_constraints/viewer_only.rb +17 -0
  65. data/lib/stenographer/version.rb +5 -0
  66. data/lib/stenographer.rb +58 -0
  67. data/lib/tasks/stenographer_tasks.rake +6 -0
  68. data/spec/controllers/stenographer/admin/authentications_controller_spec.rb +80 -0
  69. data/spec/controllers/stenographer/admin/changes_controller_spec.rb +180 -0
  70. data/spec/controllers/stenographer/admin/outputs_controller_spec.rb +209 -0
  71. data/spec/controllers/stenographer/admin_controller_spec.rb +34 -0
  72. data/spec/controllers/stenographer/application_controller_spec.rb +4 -0
  73. data/spec/controllers/stenographer/authentications_controller_spec.rb +38 -0
  74. data/spec/controllers/stenographer/changes_controller_spec.rb +103 -0
  75. data/spec/dummy/Rakefile +8 -0
  76. data/spec/dummy/app/assets/config/manifest.js +4 -0
  77. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  78. data/spec/dummy/app/assets/javascripts/cable.js +13 -0
  79. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  80. data/spec/dummy/app/channels/application_cable/channel.rb +6 -0
  81. data/spec/dummy/app/channels/application_cable/connection.rb +6 -0
  82. data/spec/dummy/app/controllers/application_controller.rb +4 -0
  83. data/spec/dummy/app/helpers/application_helper.rb +4 -0
  84. data/spec/dummy/app/jobs/application_job.rb +4 -0
  85. data/spec/dummy/app/mailers/application_mailer.rb +6 -0
  86. data/spec/dummy/app/models/application_record.rb +5 -0
  87. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  88. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  89. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  90. data/spec/dummy/bin/bundle +5 -0
  91. data/spec/dummy/bin/rails +6 -0
  92. data/spec/dummy/bin/rake +6 -0
  93. data/spec/dummy/bin/setup +38 -0
  94. data/spec/dummy/bin/update +33 -0
  95. data/spec/dummy/bin/yarn +13 -0
  96. data/spec/dummy/config/application.rb +20 -0
  97. data/spec/dummy/config/boot.rb +7 -0
  98. data/spec/dummy/config/cable.yml +10 -0
  99. data/spec/dummy/config/database.yml +25 -0
  100. data/spec/dummy/config/environment.rb +7 -0
  101. data/spec/dummy/config/environments/development.rb +63 -0
  102. data/spec/dummy/config/environments/production.rb +96 -0
  103. data/spec/dummy/config/environments/test.rb +48 -0
  104. data/spec/dummy/config/initializers/application_controller_renderer.rb +10 -0
  105. data/spec/dummy/config/initializers/assets.rb +16 -0
  106. data/spec/dummy/config/initializers/backtrace_silencers.rb +9 -0
  107. data/spec/dummy/config/initializers/content_security_policy.rb +27 -0
  108. data/spec/dummy/config/initializers/cookies_serializer.rb +7 -0
  109. data/spec/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  110. data/spec/dummy/config/initializers/inflections.rb +18 -0
  111. data/spec/dummy/config/initializers/mime_types.rb +6 -0
  112. data/spec/dummy/config/initializers/wrap_parameters.rb +16 -0
  113. data/spec/dummy/config/locales/en.yml +33 -0
  114. data/spec/dummy/config/puma.rb +36 -0
  115. data/spec/dummy/config/routes.rb +5 -0
  116. data/spec/dummy/config/spring.rb +8 -0
  117. data/spec/dummy/config/storage.yml +34 -0
  118. data/spec/dummy/config.ru +7 -0
  119. data/spec/dummy/db/development.sqlite3 +0 -0
  120. data/spec/dummy/db/schema.rb +45 -0
  121. data/spec/dummy/db/test.sqlite3 +0 -0
  122. data/spec/dummy/log/development.log +26032 -0
  123. data/spec/dummy/log/test.log +95460 -0
  124. data/spec/dummy/package.json +5 -0
  125. data/spec/dummy/public/404.html +67 -0
  126. data/spec/dummy/public/422.html +67 -0
  127. data/spec/dummy/public/500.html +66 -0
  128. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  129. data/spec/dummy/public/apple-touch-icon.png +0 -0
  130. data/spec/dummy/public/favicon.ico +0 -0
  131. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/--/--j6X2MJy0nMV4m7OScmBVoZpcaBIDHy4K_ifDJDKns.cache +0 -0
  132. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-F/-FMQ0qnaBalAxqeceKyIcLuCNpnjlq9-59nc-QKVxRc.cache +0 -0
  133. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-G/-GgKXal7DzC96O5Y54rh6ZjvENNQp6ZVK4ZZsGM7zSY.cache +0 -0
  134. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-j/-jM3Ay791ypHIxM3EVssDUX5LuokaE1yfMRWPak2SSg.cache +2 -0
  135. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-s/-sSJYykM403vDWMoS0mPp3fb5gaDtO1RE6jOl_l32F4.cache +1 -0
  136. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-x/-xNtyQHBDtoYnxI8SgEV_1xDjKmLwRcKTniLo8CNnvs.cache +1 -0
  137. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/08/08A7mgQNQm0KGNIV8rN81oPIlFSU1S0KhSglmnMMjJU.cache +0 -0
  138. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0F/0FxaDoc0v2AYwSjEKwr5D5NTbvAC_gVr07q5mP8LN40.cache +0 -0
  139. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0a/0aG48QZTCiq4aqDaCS5ssio47fK_kmz079zADTLQVHE.cache +1 -0
  140. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0k/0kyGP9PTXSO7ekk-YcnkLvvgbb1Kt6uY10DqRShqaXM.cache +0 -0
  141. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0o/0oIovdoPhY1ausojzMKAQg1inPJ3JRzyPQbrDqcSsBg.cache +1 -0
  142. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0p/0pojgYWLL3IW5LxQqarjoPD56zL-5hCB3w6bpktYVWI.cache +0 -0
  143. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0t/0tQiZ6VKNRPoWYwhjosXhTEbf7ANg3K0EU5oYtuL-9M.cache +0 -0
  144. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1A/1Aa2fbBqEvJ47JETQ-zjKsFHaTkXyf_M2myV_uQZayM.cache +1 -0
  145. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1L/1LajSY8LFLh66FoQv_4VUocbH951VnaBaR601MgBHq4.cache +1 -0
  146. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1b/1bfY_zdh6VErpfZMKO_9YPsQw3uHU5d2Nr7HZ-XoZoQ.cache +1 -0
  147. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1c/1c860iYCfBCcY-lts3tLVHjMsdiyfuI4I70LRbrxhc4.cache +1 -0
  148. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1e/1ez9LF1rtIOfyZYIy8LyIEa719Zsm9K_n1OR5Q76uUc.cache +0 -0
  149. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1f/1fRdooAjRLjtuchhbTR4qi55jd0BeB5Rzsg_5NSkMnU.cache +0 -0
  150. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1g/1gcPNIy3RzpA3hFZrhJM4fAKccQ7kjsJ_uBaZfcfC3s.cache +0 -0
  151. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1p/1p5SXfYUyWar9WRi7UXMfNVdX19ZJkJSQrZ1G7z3SKw.cache +1 -0
  152. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1v/1vGemNooALOz84Tk9q6-e7G0lbkL6JhEXYoLri0a7F4.cache +0 -0
  153. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1v/1vvl4Owv2bwH_TpWb-GQ2yGuW6vl0hGHUcI_UZ-FsPg.cache +0 -0
  154. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/20/20Wx5ByzRGcVP4_2GkN0G6yN27uw7yDGY2aHZqUP6nY.cache +2 -0
  155. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2E/2EKQCIBs8_zuGFkRUDnOOnuc1jGjY06mdcZSct2rEwk.cache +0 -0
  156. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2f/2fgXMzuyNPB4xGQy-bjcOe4GCDlpgcO1HtTuijiD6eM.cache +0 -0
  157. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2h/2hOLWb0eyr-l2laktKmbrxdSjYwtZF9oGkBepKCb1LM.cache +0 -0
  158. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2p/2plgVRPgTD2yZNuKcr3djAkEvB-1LsA2qOXrsp4xESI.cache +0 -0
  159. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2v/2v4lWB3y7LndiyZYntEwRsMPUl3quw1BNZg6S-jBrEY.cache +1 -0
  160. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2x/2xmIf0hnQMDeVphspFB_C3KkquhO01bbaseaZDJyhVE.cache +0 -0
  161. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2z/2z5kXZLsyez0FCtBfTL6uS-GAaQwim2WNIk9W5x4at4.cache +2 -0
  162. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/30/30MOFx-_dBJAFihTmFZLqFKl6EH69lcyk22dQgkbyM4.cache +0 -0
  163. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/38/389KU58cVLABDADEgLDtIjvqrXxHBUU8FNEnnwU86Pk.cache +1 -0
  164. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3_/3_i0fLTIyYA_JIoKqp8gGsTuc2ezh9603eO_sSWfirw.cache +1 -0
  165. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3e/3egCu3oAxwntb9iBJegxIgDdqBmHUyo-8hRv7hWyh5I.cache +1 -0
  166. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3m/3mstIxPPFBSXvzQL0daA_vlIDi3AOfoHRzLLHm-wx3I.cache +1 -0
  167. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3w/3wbH0_PigFjez-rxjqaIuLk_f0yme_0b79fcLdvNecA.cache +0 -0
  168. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4T/4Tj8Sbw97WNkA-WsdiFBKnbjqG_K7w7taGVcRoPqOjU.cache +0 -0
  169. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4f/4f0R0ecLsEP-c-GJnIHsy_fEEohUTZSZIoSm3_pLeeY.cache +0 -0
  170. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4m/4MPfr9b_zRavcT-DpC2klwPiFNPAhDCOzbXvSyj92Vk.cache +0 -0
  171. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4m/4mV60YuLa68r3BFw7iHlDwG8tD8C-AwHf6QJj0N0tM8.cache +1 -0
  172. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4m/4mb9jzYfwpqPSFxZHlN4rA6iztZyYeh_5lDhbLGuiWQ.cache +1 -0
  173. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4v/4vHNN1BDHxH89GiZ4hAmtIkzK376H0jaQMO6BBIiEZ4.cache +1 -0
  174. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/53/53crJIeo--I0H2ZLtDlFx0CBTHU1kJVz8iFcP43p8iU.cache +0 -0
  175. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/55/55Vkt2cx9_G5BVmpdRLxZQeLG6WZvyIoGeJoI0JcOQw.cache +1 -0
  176. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5E/5Ex80hQaUCTL43fgEE720jhLQbMtJhg0swl7QR6zmBc.cache +0 -0
  177. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5I/5I7mex_1U2yH_LRIyQNsg8ZZHD2C6_h1ofi-eNadm-Q.cache +1 -0
  178. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5k/5Kmu0xR76b_7pkvAAdLzj-V1oPm2wMsqgd828em1OfM.cache +1 -0
  179. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5k/5krTO9dLmmztTeGOj_4LXD89gUPhm-QfgIyS8-VDN-M.cache +0 -0
  180. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/64/64Qr-CcEz-vJHVji3zv_zf5XUswx3V9apWOx0-IG8i0.cache +1 -0
  181. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6d/6Dc6C1WGdiTgoxI4HwECeO3JKb4YhTt-bZeOf5HOiUI.cache +0 -0
  182. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6d/6dJren9KGhdXxqSIBHto4s6qoonz4e55G9p5_6uJA7w.cache +0 -0
  183. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6i/6irNkTgf4YymYfjrydRNuPMruoNCSrReY0alI2TiEvI.cache +0 -0
  184. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6q/6qNqmY_V7PiX8epgic56x-MCb08WuIew-52DvL-n7ps.cache +1 -0
  185. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6q/6qfc-hZ_UGBe5hkQKt_sbtagFEk2Hw9vZbJohiXK5-s.cache +2 -0
  186. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6x/6xAxxUjS-gz7bsoxi2WZCQMoZttqX3i-lqqltbsg9Qo.cache +0 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/78/78J08kAswpCoXt1ru3d4C6WJ2zzhFYKMdhu3E6_n3QY.cache +2 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7G/7GVJF6FQUVBjZBLgANhD0kt9lIxSrjvs3eEMs9wMQvA.cache +0 -0
  189. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7H/7Hml7xRJLDjid2WIe2A9lhao51dQkO1GbMqSMtWu9_o.cache +0 -0
  190. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7O/7OAwySsF8eV5rNtttDKbc7B06Mi1lktDoaj8clVBrVE.cache +0 -0
  191. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7d/7dbSHc4QN8h2a3Bq3EPxvM0e3m12kf86NCfLqaewhYI.cache +0 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7i/7INNztEB9qQisi5D9ji7m0Bw9OUyvkXFWxbfAg-eu-0.cache +0 -0
  193. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7i/7iGnkrg0JU6zT4Aj04bTOfbss9TluRKtAuEXfQi4fd4.cache +1 -0
  194. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7m/7miMHuo5JZW3i-8gzqYrK6KeZBucQGJv8_X3jLw_on4.cache +1 -0
  195. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7w/7wSvO715lFzOTjB2bTmt9qH6IXR8YjgVRpepzTYAfgI.cache +1 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/83/836M8uVu4qEpNcngD3qY0hSa6JPM4rV2rnMnRv6ELi0.cache +0 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8i/8IrH1BJualhwFlHvRcfytMB16DRLar40rCnEMZnKTYw.cache +1 -0
  198. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8i/8islnM7pxGgCXV58Q1Zxi44KHaaSQEUsEeVvpP5Pm-Y.cache +2 -0
  199. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8o/8oTM2zexkissGi6m6KSc1btEuC4HrZ8iHvLA-asYuLA.cache +0 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8z/8zXX4G8C-4VpP98cWWQ6AdfEMQvoKU9E8vR7z2UF6Is.cache +0 -0
  201. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/94/94tKK3aCCdBUZi6QHUhR4xz5jl04DqJbFafis2MXxFY.cache +0 -0
  202. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/98/98u4Nrap1qNnXvte0IMiRsU_sI4cppO16Jxf4laos5s.cache +1 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9e/9eioeH8BY4aNuiqcCmfuvtEMS-Aqd-5VpNg8HKQUgW8.cache +0 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9l/9lK8n_XxVjXIuzJnR_2j0Yh1V1TWoWUp_-cMsE4_Q9I.cache +0 -0
  205. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9n/9nElUNjBQbA84YtzK1o9JoJZMyCxjDn-FgyOzwQqZEo.cache +0 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/A6/A6Fb9dWOPkjxkqkk28j5g1-mlxuVrjoSbPdMYxRfp4U.cache +1 -0
  207. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ae/AeCk0-U-xUSUW2_qSijkETPkDsL8lVImpc7dUWywDps.cache +3 -0
  208. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ae/aEMySlzmBZY1kbmY-bpp0HogzvR6q7dwPEr_S9YSk3c.cache +0 -0
  209. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ag/AgeeCxojgoprgInstYRSbqRrPtDdOiXRdWdZJ96toto.cache +0 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Aq/AQbiMXO53apxHM2Ee8mYZJXI_f-dUiNf4Q-nwtf96Fk.cache +2 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ar/ArbfrMyF3ENnUyIVGG_P5nULK1a6BnSJcaA_bxi4m04.cache +0 -0
  212. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Au/Auopy7qFGJnnhcGyWQo0nBKGyYXJuIspRcMfcHX1LHE.cache +1 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Az/AzFdtFquX0zqhVX11s0dRO-qB7lEukCgLKggYfKcuCw.cache +1 -0
  214. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/B1/B1-msUEL1v1vj33Nkk74rgID0sBTjll85WsMkMiBfI0.cache +1 -0
  215. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bd/BdctUZG4neFmn1JaXt0s5xkQyKS93cWO3Kz-LabkEs0.cache +0 -0
  216. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Be/BeUwQjoJZK3DOXWRua8GyHep2eLKWtDbjH_QU2vaGlw.cache +1 -0
  217. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Bh/Bh-kxmF1cS9UPCirYowzhVPnZtA9kIs4OG5e3o8d3KM.cache +0 -0
  218. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C1/C1mzRan8DRKOqt76CfsySnUmBTf_wETMw2eAStSaZHI.cache +2 -0
  219. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/C9/C90rctDC9dCZ2mFFKfQZnDudVTFITV9s9Q6nDStsFgY.cache +1 -0
  220. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CM/CM6cZVQOkrB0Nrv9X0mUUuWTz0h5vssiGlovnY3YY3U.cache +1 -0
  221. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CV/CVsBjQ2j77NXLLOqeGpGOAtO4LgJo-dKMr4wzIhdpNE.cache +2 -0
  222. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Co/CoZYiyHUY2mK-KSMvO9J88cxl7iWtUdmN8JWSTzc87s.cache +0 -0
  223. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cp/CpNjew9okSS9njepy05WfNDGdUOldCuw4WHsxlwzn00.cache +1 -0
  224. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D1/D1wFuigvPxZzY3_AUD3NIgI66ovBLResy0VQY_ql4qs.cache +0 -0
  225. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D5/D51KplZKNoTku-iuRJAApOw46xEm2iIbLw-J5d1yvyg.cache +1 -0
  226. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DT/DTLQfeTe1wetaBeg8egghgXyU_cJG6CsbVNdRGLU24Y.cache +1 -0
  227. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dy/Dyb6-c6rYZmNvXMicf032l03q8eFbRp4O8TnubMiW9c.cache +0 -0
  228. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EA/EAVCQherPkJyqIw2_TjOGezM6WsGY8Z5nhAGdJjnsl4.cache +0 -0
  229. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EC/ECI7NI-zOzW06J2rxwdQG8kdjM6BvvqKuSQJMUSqo0E.cache +2 -0
  230. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EJ/EJAVyctynPJ2kucMn0PH3vlOq4eEM_lwwYtk1Qebazo.cache +0 -0
  231. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ET/EThn7-aPnNIPJA60BEZADFiarlLwXTkPsuFiAHS6aB0.cache +0 -0
  232. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/EY/EYe-WAqxgQO6U1t9n9Z35tgGWi6cpGz62iGVzc-qBRg.cache +1 -0
  233. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ee/EeKmq-nqtimwLqH3cOymO6rwsscHZTI4KUGq-5GEdJ8.cache +0 -0
  234. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F5/F5U2Y03qH2S-nl53CbrEH9ce-5UkbDVV_bwhhvUKud4.cache +1 -0
  235. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FC/FCma-hiMP1VeAgsF_Z67-DxcmzBfpgzoqd_NYRXTc78.cache +0 -0
  236. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FF/FFAibEwXfYCnRYg7YqI4BX7yuNsR9Zb-4pH5cqMjnjs.cache +0 -0
  237. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FF/FFs0iDCbMQ8XBp3qrVKZlCU9Y35G3b1uq3fiIsuYs4w.cache +1 -0
  238. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FL/FLAhTHozY8AcYbpwTfVw6OkfbYsFmyHRW3JpNUNf0GM.cache +1 -0
  239. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FL/FLr8CPvwvDGj2AmLe8vxPxjgzTD6x-_sVYPFoMEhOfg.cache +1 -0
  240. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FR/FR8tHZuqRRKxws8DssbH0CqYCon5o7OjfkPwHnfiCQY.cache +0 -0
  241. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fk/FkFwfnSajet9ZsqgIGdICjYNtI-sc9-q_A9kOC0x7r4.cache +1 -0
  242. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ft/Ftl4p4HXnScZrPtJlKKBExjkFmlOAcA19ki7RgpKWho.cache +1 -0
  243. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fv/Fvgi50Ynu-neSUkX6HdZLSWUk-yD6DqsqpbyfvruNlM.cache +0 -0
  244. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gn/Gnwm3Drs_3ap4FfOcHrcm2w0mrlO8Rhm1G-h3h6vH-k.cache +0 -0
  245. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Go/Go_1rWTW0mt0wOXeuuxoh_NJQBdZL1_cVH0pebsbpi4.cache +3 -0
  246. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/H5/H58UUtWePE1Z0S1UcQA8-EwjpIBHg3O9Ts9XvIWdKeA.cache +0 -0
  247. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +0 -0
  248. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HF/HFyu1vxw5E2uCEa1-qEMyzcrH3pxvt7g0480rSjF4Kk.cache +0 -0
  249. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HZ/HZnO0pBCMSMkq7vqyzGJjPzPSqb9pTD41_vPuRDU7-s.cache +1 -0
  250. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HZ/hzmJCC9dVXGo05m6SXHZGyRG1Giv-sumtktW9dGSp9s.cache +0 -0
  251. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I8/I8PnuYlhVK36jxRaM6EwTFfgi7LBx7pAk1D3Czr6Vu8.cache +1 -0
  252. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ig/IgaHoG0LXR248y-EKwW87rPRwLQK1TGqCQryC3AkB5o.cache +0 -0
  253. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ip/IpS6xKpPpzu9PzKx6BZfeS41n2EMjIl50KVcD8QAO3M.cache +6 -0
  254. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Iv/IvFg5Se3l2lyMaDUfKYd_aD_BpT1g-otaEeZf4u9AKA.cache +1 -0
  255. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Iy/IyxmtWACLNhwJoinP62VTW_IDErdw9wknotd6HDMZGg.cache +0 -0
  256. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/J-/J-Hwef_6kXTD7z0SGv0HW0H6fd3DQHwFO7ryZH_YLGA.cache +0 -0
  257. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K2/K2P_BRi7h8P7-WdHjwzhG3A4WsZWDijzopbUe-fSYck.cache +1 -0
  258. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/K4/K402jns8tOOpOADFFMKBJa68z1OTIExDGmP2Xccx6YA.cache +0 -0
  259. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Kx/KxPTCDg5D5nylmDvHEax5Pma6VLBbTFLIr3qPwMy1os.cache +0 -0
  260. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L4/L4whS6logFuDgmfIfNiVMVrUgB1Hn6eUKi_5A1IVhoM.cache +1 -0
  261. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L8/L8dx4eMF5g5XPhJEmBLu3v3IdE97iwy0lJNza6i1mQk.cache +0 -0
  262. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LC/LCCXXMr8OCkZpNT1PUUqMNZvVxoYa6MEz4_HN25pLGc.cache +1 -0
  263. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LI/Lifzo6jiUjfGMkC34kf69rtdmT9Sal_VnIKTELN6xeU.cache +1 -0
  264. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LI/lI5QyJbKzHdYQswV5dy3SHOtLvWymlJpbED4ZjcWY-Q.cache +0 -0
  265. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LJ/LJP8EHXwQa4Cs5R29_G3k7_P-uvHnou0WG4YR39aFdY.cache +1 -0
  266. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LJ/Lj3YLMqLI6h4ZUObv5FlPfDjyOho5APrMetItBnPkwY.cache +4 -0
  267. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ln/LnEfzN0GyYrXJ3mTpvuvshlHqebuf07YSg2LhprBpcM.cache +1 -0
  268. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MH/MHzvc-KLwsTvhoY85Zn21oYFX0ylfijhvt2D5WgolhE.cache +1 -0
  269. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MN/MNZRBpjnS_tTAthdD-FjgDMBJ55RpCQEqgF3sZUetzY.cache +1 -0
  270. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/M_/M_YvO6Nk-iV5ftvAvmYPUgBaiSo47300zdDc0DPMyUY.cache +1 -0
  271. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mc/McINvFkOUcSIG8H0hJvWcejzgBAd2U6pk0yrS45SM68.cache +1 -0
  272. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mk/Mkf5NntifiaAXDZr6TMws2swE6RFBigp36NRdE8kGPg.cache +1 -0
  273. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ml/MlIXFeZij4UxCJoUct4OP2sqYli14tve7Ico47pbINE.cache +0 -0
  274. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mx/MxaNORy8qTkgSqU83fj8Nae-LVhJNV3aWUpLuI3-XWE.cache +0 -0
  275. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N0/N0D93r2EjPX_cvx4nmJusoTf3HgeNGnmBASX1ZXgKws.cache +1 -0
  276. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N1/N1GOUO4MYrT4BOu7pCZS7-oUnLm-e7cg2evEN-00Z5c.cache +3 -0
  277. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NI/NIEN_SxN-TBh_Xxf6_Arri118Y0M3-E7qQEZ7JsjjM0.cache +3 -0
  278. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NU/NUnKy-pYrGKAQG1UAGpiw4vXf3e9UcNOYhoL0YvWIUw.cache +1 -0
  279. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NU/NUvJEnboPF60Wk_fdCFEzvgLydd2fUMwupTjNKeLbTY.cache +1 -0
  280. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NV/NVZTe7t0ifzkg6qMvbt5YwqA5tkCpNjYpLTgUgTJlUs.cache +1 -0
  281. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NW/NWYCaV5mnKGyJQ29vtcqB76je6fZyn2OcL2oGYSnkdo.cache +1 -0
  282. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/NW/nWdKh2lI9QaobHjizU1xDOnCghlIT9YZtv4FI2AFxt4.cache +1 -0
  283. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nl/Nlx0WrsD5Sb24QaeCXl9xcvYRfeB2eDU9oSActHAulM.cache +1 -0
  284. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nr/NrB6a8h0iN_5lcfLN3hRelqmbSBzLm_i9FwoWjT8gNU.cache +2 -0
  285. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Nz/NzLQqVsFq7Cqz9ki90XRBaKlblRbK_HkD6oA69dJqxI.cache +1 -0
  286. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O0/O0ak92-HxaJKdpNpHTH1CHwfpS_Z66q954V5C75zSj4.cache +1 -0
  287. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/O0/o0Og4tzdoNxxpj48-wmn6bsvGzpEtTsC31KvaQRV-EY.cache +1 -0
  288. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oa/OA4QX_OWqPQUeVoT6Ss0K-sFzr5W3qllTkgNOcnMhx8.cache +1 -0
  289. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oa/OacpCxB4lqy6rlXHDO29v5Y6zq65GR72Ng3pOfn6-7M.cache +3 -0
  290. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oj/OJItQf6YlekqKOX2naH_qKghroJarNVagD7PvANbAT8.cache +0 -0
  291. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oj/OjiiiJVw-gRmg162Y-HRH3gfXb-sa05Lb6QuQ1EEfiU.cache +1 -0
  292. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ok/Okg1cGDcMamNfC6NAvWM4MjX95u78gNqYNX6oqxqd4I.cache +0 -0
  293. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Om/Omr0JOZpCUlE91Tt07VZf4PDUt1wpoTrCpB07AMlXj8.cache +0 -0
  294. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/P-/P-pbRBIZyZ_ingenNgJNCBuBXOgQ_lcVle1hmNvb3po.cache +1 -0
  295. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pk/PkwkLEfoYIg1bvk3BPBItybvh8aKIdyR8qFwBoXasnY.cache +0 -0
  296. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Po/POC0zIkl-dd1WZwt4ND9WFzLwUX9iDWEWjXfh204NTQ.cache +1 -0
  297. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Po/PoGdDBvYlxXK8vThUtfu51od89X9MN8WZ_w2mV7WkVM.cache +0 -0
  298. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Po/pOiEM-qIy9jd2w6uzT3QBK-LvVPqhSsOAf4pXMMIkxY.cache +1 -0
  299. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pv/PvU4ij47NUp2dzWPF0h3qfZZxhVGTIdQ_OPC6RfnxxQ.cache +0 -0
  300. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pw/PwKwcSq0POsWpKNb6uzQ3PbMZFuSj_ePtP_Qk_OScWU.cache +0 -0
  301. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q1/Q1TgIX4UFbvoReYl0tEwsjXLr9HV649TWnqnnJLJIEQ.cache +1 -0
  302. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QE/QEBNxlLE0dMIYZ4byjfmbPQBOHzwY7HyfF5N0ByosP0.cache +0 -0
  303. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R0/R0Qa2I_yo8nA66jmfzrn9bhZmuKrG63uz4fAYcdFNz8.cache +1 -0
  304. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RG/RGlJ9QacSEA-TnF9ZJV4e_9XU9e2lKOpYSLCUUECBQc.cache +0 -0
  305. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rc/RcVQLpNgfoeOhshZ8RW5cLEdbdJydfNJYUc77ztzwAE.cache +1 -0
  306. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ri/Rikpzl4f6PuoYy8SrCciDv_h6S1BJGU4gla5qAiXwlw.cache +1 -0
  307. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rj/Rjzp4wQ6OGyxkhQ1h5tY0-SApKcdPlknjQre0GSypOw.cache +0 -0
  308. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rs/RsyukIHEg9nFVKgX1qOdiguoepKN2IGS7yYGI2bJcf4.cache +1 -0
  309. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rs/rsWjpcU0yJWy2IFUyoE5TAro8lvNPDGrLPwaA9QQqgY.cache +1 -0
  310. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SD/SDN7421ju0VTIyB8-XWitcQTO47BG9uJIXfh1hd5SGM.cache +0 -0
  311. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SJ/SJqFSJzm7eVtEwZK9yyKrEwRYk1HZgbcUSEckMdqMQg.cache +0 -0
  312. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SY/SYBK7CQSxNmu9IiTgj8ZR2emcmlyAk8cS_qlvOo-3ZI.cache +1 -0
  313. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SY/syq05E9SEHOj57dkeWu8t2rzQuMzjzsffaoeYed50z0.cache +1 -0
  314. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sk/Skt1AoSthI6LBMLkNlTCzFUDwV4hard_U4P9nMs1yx4.cache +0 -0
  315. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sp/Sp8Cv9QiTSoIQv7BOssjyRR8juo_jeoJHG268qJPLkc.cache +1 -0
  316. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/T0/T0Xfl93kKt2SOhLC5xEg8KfthKDEcdh7r-onaakGsnE.cache +3 -0
  317. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/T3/T3QiPQFw7GZPTPNeSE2LynkgKqx1i1ZU34K_-6MrMPI.cache +0 -0
  318. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TC/TCurPWDUIR9uVeyfHM_rtBkZ3jiyWciqNfuKD5H4n3Y.cache +0 -0
  319. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TK/TK5n8w0-gZP89_9rJHqH88MBhJF2Vx_hlCiHExK7td0.cache +1 -0
  320. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TQ/TQdOu9qmstULcB3RzraBnIld6b6-lYBO6q4_9UV0UNs.cache +0 -0
  321. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/TQ/tqU0u1EUEDgwJ6s_43YxySt_Qq0__nHC5jfFYFOpey8.cache +0 -0
  322. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tt/Tte5RXEcvGWkD176TCaBmLUsX-voMMJxNGYZ26jajEw.cache +1 -0
  323. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Tw/TwfxrcXw_krS9_SF3rMSJBqh660RQMeVO7NPRmMEFSs.cache +1 -0
  324. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UA/UAz9INul2ky2tio6xm-LS2KLsIY3as0R1VrLHHJG5j0.cache +1 -0
  325. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UN/UNYVb7AL5lvRYfkiJ4Upzr5yHy-NPX0tiG0_Gf3eAjU.cache +1 -0
  326. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/UP/UPZOYEcOwxG-2CqR1bf9XOnpBFnJM8LRNGIBztjm9zA.cache +0 -0
  327. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Um/Umb2j6t2P-N5XH7aXjUmfuxV0hDyquhgCcf3uDN3CEI.cache +0 -0
  328. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Um/uMgzScrkEwcWGAJSw9corAG5QKCAWfrjchq7aKSBJ9I.cache +0 -0
  329. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Uw/Uw1OPnMxRo6xTdQmUfxV9xn11hfe9LWqZncabeDye0Q.cache +1 -0
  330. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VG/VGxUCtfgACRZ20o5jAw-a-KVg7ZLr-yaGfyk74V28YE.cache +1 -0
  331. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VJ/VJNPFWAYRssGM4ToLmOT8rq2lewFr8Dja0ajyteku70.cache +1 -0
  332. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VR/VRoBQetM4GIHsMe-E7IRFp4goXvvgppkPc4rhDYFBFA.cache +2 -0
  333. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VR/VrUB8tbl2PcZoXVpw-osTj_o-oN9NfqhAM6pzbFZGh4.cache +1 -0
  334. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/VU/VUWMkNGhrwe-EAmmmmNt7Az-GRrRcHbXAG2HC0X8GHc.cache +0 -0
  335. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V_/V_Jd1TdD8yXT6JHrY1JJ3jAQrBljYH2pHzq4RTmeuNw.cache +1 -0
  336. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V_/V_kAwQe01_4xfZGiWL8tItLwW-7b0f8xBMOtQjVI-pE.cache +0 -0
  337. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Va/VaUWZR4JwP37KO6HAQXTeXmjKW5g3XeZ61j39UZqz6M.cache +1 -0
  338. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vi/VifO8vWqdfQ9eoTl3WIzy087CHZg1vzIEpKIIJRzMHc.cache +0 -0
  339. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vp/VpNyX-De9cFruxoMasf-nOJPRvig8T5o4Yde8b0nwec.cache +1 -0
  340. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vp/vP4q0W1hoWyVKvHHH2ptEzZGeoD-lEEbM4Vs3GLsZc4.cache +0 -0
  341. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vy/Vy07J90LgLJbjJBRPi_UiUGO_kIpEUi8Zs15wQFKtKo.cache +0 -0
  342. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WL/WLe_Rgkeu_HthdBUfpw3vHUt_5CQ6owJMrpkz8tRp38.cache +0 -0
  343. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WN/WNKrQKo13mNloW9YI8DZSVMDn5snXJXkQ8oZKFLFWmo.cache +2 -0
  344. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WQ/WQCBtQzlzayh91nUK51QtzYiosGkuR28dND9aQPXo1Y.cache +0 -0
  345. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WQ/wqOdJKJYz9FED3Cww2gbRULb0vIbSZGfpiJNuWtl-kI.cache +0 -0
  346. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WU/WUQghzKJDCYW0H_keyyvH6HGEFBdJy-zpP6zF73jhPk.cache +1 -0
  347. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WW/WWufIqlOXGvOZFiin-Xv15zJcYbldRZ_ZSplFv_q2zU.cache +0 -0
  348. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WY/WYTBKe2RDuH4MFkfW_Ln6b069Rhycbu0JMpBQW60_Mk.cache +1 -0
  349. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wc/WcEo4tsNtxr0-yKbco5mknvx89_hJPB-3wwlLSY8OpI.cache +1 -0
  350. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/We/We6PYWaWj0ElfqTAHuhYo3ZlgLxa2Aydtodiv5_UHps.cache +3 -0
  351. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wr/Wrdhm1CejitmfoWacX9MOt6MBxC1aYJY2p7dwCVPFGs.cache +0 -0
  352. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XD/XDm9_hHKMvM0AcVGB2DZR-DopvSALr1MzoVebVCnonY.cache +1 -0
  353. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XT/XT65o-420NjBtdoKjooGwOBvJXaUSvOD_k1Bi71Rn64.cache +0 -0
  354. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XZ/XZnRzN-j_SZwSL9rwAgfJh_uVfIyg0z9BgcN28lKsNQ.cache +1 -0
  355. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X_/X_Lywnd4OmrROqRWaovgnf21n0zgq0mN27qAiprTHPs.cache +0 -0
  356. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xg/Xg6offmoSJxhejjTbnZV4vfVjThSgd289H1OKTBp7oA.cache +1 -0
  357. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xj/XjHAZazZtm5hxiNcKVOUDM6olzdn8YWqfc3YpDJF9Pg.cache +1 -0
  358. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xm/XmlNjvL3opaW8uZX-QETSTplhn6noYJJdGMIN4yjOlQ.cache +0 -0
  359. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xr/Xr1pzlMzUR3YsKKd8eY3qFiT_gZTfSlm-XYpdJ5qpZ8.cache +1 -0
  360. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y4/Y4DqK1HnbnuJ2WOFQgo-QRseR0RRXA02tyz5SwmoPfA.cache +1 -0
  361. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y_/Y_jtj8vcxj0wRD9IfAJOQ36q1ddM96QL5p5K2nviqR4.cache +0 -0
  362. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YR0NBM_C-9KhAkPE6RFW4_MOkORw3EJdPdRiGdXNvHo.cache +2 -0
  363. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YrIMJQQa_i-vd8lvmqooJBi1hdZwSLz7K3oLr_y1I4Y.cache +0 -0
  364. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yv/Yvitvm5dZmHjMPIbRZcM-yQ_SjDdMEHKi0W2u4Tqxpk.cache +0 -0
  365. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZK/ZK-N75vp8633OgyILt63mRoKDnAtc4SXqOVwwMxphPk.cache +0 -0
  366. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZT/ZT040P6XNCs62d6r70wIW7QwBCMKsilJ71hMY3biD4E.cache +1 -0
  367. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zf/Zflzt18s3kZ7yMA8tw40EKLLRO-5LUDpiwxeAM2X--4.cache +3 -0
  368. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Zw/ZwLGNeWzp9GBNXDXokZPgTjW3OOg4UeBRG-1aL8-zVc.cache +1 -0
  369. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_2/_2ZzVQ2h54LAHFMV77TqkQ64rZLWhauLen5Jgc9DSco.cache +0 -0
  370. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_A/_AT6xi7iCeGhJfLCoK2_8G7tyClflqcxy6V2mZfGSxo.cache +1 -0
  371. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_G/_Gciqf3UZSTaeHqTUtKG9SCTaHsxowcuR5DrzgdYQUQ.cache +2 -0
  372. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_V/_VEPXYZvgPQmuSh2r0bjkJ_pKSHa001gsuIhVTSFiuY.cache +0 -0
  373. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_Z/_Zs7itraBZcCTQM61t3V5xXTTUMYx_ZqGbQ7MsT_YCg.cache +3 -0
  374. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_k/_kQ1Xd_1NWelbdzJQ_b_ec4V3s8HKLRQrgKAUnF2Mzs.cache +3 -0
  375. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_n/_n6qQEH_UTt3iHle8hpvQagYq68wh8Wn_37Q5xfsBFM.cache +1 -0
  376. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a0/a0rqbUzxIvAC9Ukz8eUfYp_gQ91NGuDKIZXiAq3hRTc.cache +1 -0
  377. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a4/a4rg8Zo8vj1jL_m4GRnJWKDmftBDc2PxM_5A6ZgPEIo.cache +0 -0
  378. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aJ/aJOlSWF_QxAzp7HDcUzR-vktK5PSuWLxkC3vMW174PA.cache +0 -0
  379. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/aa/aauu6pTjCPY4fJjH7j5M9F_BCnv-8wMtSjvsv-23b7Y.cache +0 -0
  380. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/as/asSYbxO5LC8T9uxNoXKaiPtptNVGAKI_VmZpX3_4fec.cache +0 -0
  381. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b6/b6xxWz-F6x39l6KiRLz53fe_gaxyBFKWqH0usEL-4Zo.cache +1 -0
  382. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/bN/bNXge7DVrxoNOI2YBLDdH8LcbZO0vfQYTluXpHj70-A.cache +0 -0
  383. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_rePD84jH8iFG58NDee-C4a3p46zdqoM4uowuqWnWM.cache +1 -0
  384. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cX/cXWPUNxVKxeLdk1STBGTCDsK6Oy1DQYj-614LHUvI2s.cache +0 -0
  385. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c_/c_6S0wLMCgzJITm5r-cfvaytJR_zF7U3OnZZiSvBOGo.cache +0 -0
  386. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cn/CNfpcm0lM-uBiXzEbtnkBYvhoxh-MumDTVVu5BINIaM.cache +0 -0
  387. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cn/CnSnDTdIbdHXFiwJdNkLamBfVqb-HiXmsAOIXc0LoO0.cache +2 -0
  388. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cn/cnEnCShKjxZ6TGBmLlv-aOA6MFm2_WIv49PJMdZNSH4.cache +1 -0
  389. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/d6/d6dJZrcx3oF4oyNpHlgtt5jdGJrY7AipjifcifHO6po.cache +0 -0
  390. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dK/DKJjlKfS25oKoc1Ni0HQxD8bx7Ku2i369ePrpTee2Ok.cache +0 -0
  391. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dK/dKluZVh6QVhQTG3za9E8oWD52QUor49Br_AQifIA3g0.cache +0 -0
  392. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dV/dV5dCLi4LjQHUfWp22iQ78LQEx0olJW2mrqrCuPoAQA.cache +0 -0
  393. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dZ/dZxNmamjzY4g03AAli51sNGlegvlAloqr_qFT01NBGI.cache +1 -0
  394. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/db/dbEMQMwFuREyIzOI7Ukd_GizX7aexPHPDC5m8HKEmjg.cache +0 -0
  395. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dd/ddnGLbJhY18JrDbxYMaPf3V9TJHZHg1oNadcUtQpzOQ.cache +1 -0
  396. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/df4kxCettBRE4K5JPs95gnASgU08sEy7cxwjMsav97Q.cache +0 -0
  397. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfpybpJD5xy4ISrheyOs5uz34yv56hW7n1MgI9GONfw.cache +1 -0
  398. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dw/DwzSeQontap9FU8VQc0R0jHbJ04q75gDBmgg_CAi6r8.cache +1 -0
  399. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dw/dw3AouI7_TEqrQufNiraHGmK5PiJcxQ6D1zIPoGKdRQ.cache +1 -0
  400. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/e1/e1h7pTiTtfPHvVSkeH12fnZDfAKwY27PIF0cVlmcIYo.cache +0 -0
  401. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eR/eRLP0E5zbdj_QJFLSJJZgXGVcjS37rLviwpTXp6nzmI.cache +1 -0
  402. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/e_/e_g2Uw_LjKL3OnG8yxFLaNNmJoIJS_OR-kgiVukJYnM.cache +1 -0
  403. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ef/efcXE9JQf_KLH1IXKerpyJ06xYyXdXX6JqP5VpuKBZk.cache +0 -0
  404. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ei/eiOHv1yu0Og1ME3zkNfDo9eoKoXIzehfsx34ImjV-6w.cache +0 -0
  405. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ei/einvDZJdZgmo4btrW_elos30rfSgmohrCJBTrQCJ_TA.cache +0 -0
  406. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eq/EQut2-wjSJv44R20vQxjkGguqSikNj7klomilV3RYlo.cache +0 -0
  407. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/eq/eqxAw4iDZZb-6QKGtlXjRN1psRba37VS_16YmVlzk8g.cache +2 -0
  408. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f1/f1A8nGdjNSAILNI7_yQgVf8u_frIxKV1fwtFB39cRes.cache +1 -0
  409. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f1/f1wn8fW6_DBHm7xUaADsb-duzlu5ExUGAsbfFO_Y5QQ.cache +1 -0
  410. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fA/fAfWRFktr1OSEwli71AlVXNIrGch5hKUHGbe9psTM94.cache +1 -0
  411. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fD/fD8If4TAyc9Iwb55PMfN2-rTx_VA9DykrYbjRnVfnRQ.cache +0 -0
  412. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fJ/fJ6TRjPWHyOrW3NjW-wMsA2gk9GrwEKgxYdfko0BnnI.cache +1 -0
  413. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fJ/fjT60yy9LMkT9ZEc2srBms2JnOyuB0M7iqq0opTikj4.cache +1 -0
  414. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/f_/f_KJXKW8AR5j5YtGGETJlcnQnI7h1rxUUuJaEbSR3g8.cache +0 -0
  415. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fq/fquLTKWE7T20y5d_aQmvVVjHsKhylSgTGWdH6B9yTUo.cache +1 -0
  416. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g4/g4Eh_NJe78bzrZ8USbiMRH1iBWlY7nooq2qNvOVNIU8.cache +1 -0
  417. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gW/GwaDLVwATi43ZQN4Jm-K0NrcSB7vDJGIXRGrKVowxXI.cache +0 -0
  418. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gW/gWSO9ggybfJ-R4E2xw1mRXQv5lkagvKjdw6obqokAXs.cache +0 -0
  419. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gf/gfeACD2a8XGLgD2u2LL9K4yE8UQVQx0S_K5h7JGTuys.cache +0 -0
  420. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gk/gkTEysCp3B2GJGIm5zsvGsOl0u-ryT48d_mgJM6w5fg.cache +0 -0
  421. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gr/GrppSkL6NykONX_Hvevz5OJ_uonjiWCM7P23dMUK2Qw.cache +1 -0
  422. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gr/grMPLzlcXX1FGva_qdT1EuF1MlilKG1J-Y-R41QFST0.cache +1 -0
  423. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gt/GtaWb3LR8o1E5KFLx0QxCewadH0mcGJreruiryCR35E.cache +1 -0
  424. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gt/gtCxNY8xcm18dzIUF0nFj-ffRBy4uWG6jZ7v1oibqp4.cache +1 -0
  425. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gy/gyd-nyY9HfwZFWYuqU2tsSaD_0Y554O0q4-Haup1zQE.cache +0 -0
  426. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/h3/h39DUWB1fHfXUJAtqTj4nyr4m3W78ji4l9XDiKgLYxo.cache +0 -0
  427. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hH/hHOaYhuHyZKewr-9uLpfT6UqsyCZILMcLfmaGFnjyRY.cache +0 -0
  428. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hH/hHaoN4MKqw_ERQGn9JmPhT6d9V9uHTEFTs1Nwc15PNQ.cache +0 -0
  429. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hJ/hJelmoNj6LVkvuq_QViGyBiUTvsEA4Q3ZOpP3qC4f4Q.cache +1 -0
  430. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hd/hdzfjNYF2ma6YmGtM8sGzVJIN0C8ZgPRSRU1UGsU8xM.cache +2 -0
  431. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iA/iAiA9SK3of64eG5f8qQyuB3izLJNgf9zaJ6RS2kqCLk.cache +0 -0
  432. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iN/iNP9GIkkgdOlvEYLEk0KVCCE73TsQua8ZDT-otZpUy4.cache +0 -0
  433. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iX/iX9z2tUIURou1r4-diSnSUbc4YEqUfa59TXK7ZqxbuY.cache +0 -0
  434. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/j6/j6mIelt8yiyXv0fft4uxp2b-z0wpBsNC38RXtoVBDpQ.cache +1 -0
  435. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jB/jB-UF9zPSyX0ub7yoaMuhe2uJCF07_GJSS5KgQnpxA0.cache +1 -0
  436. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jD/jDKJfRDkcsciM6ZqQi1GCOJoRLmcGexyW6o9KQjznHw.cache +0 -0
  437. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/jOFkhKtkcjQDlKcw25QS6rT2FSU3PFH2dxoPGjv-Yto.cache +0 -0
  438. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/joaAM8nRwMI5RVYx2l3JaQuyS8PF14-0vxz69fEP1vM.cache +0 -0
  439. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jX/jXKBS4kDjgaIZ3MbKt_lCDYtMvxv2DPCIkNzzv4H5Sk.cache +0 -0
  440. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/js/jsexYHVMPccKus6qrVtWTXaY_qS1CjTyzjL1V2YSdUI.cache +0 -0
  441. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/js/jsnrljrrK9uoTxAJKsHIvbIlDmuE3_pkCfbIdUgsTHg.cache +2 -0
  442. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kC/kCHXFKmTlmunYZG3zd1fUn1gU5VruSAhKhgR1d3w3eE.cache +1 -0
  443. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kL/kLVgkpeaiYFLwq6qDzaljK1kh3lndRtvMt4Z5Gu2QLk.cache +0 -0
  444. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kN/kNKJH0ipyr71u7pR1mnpkWv0RJPWN-bc9ApcDrZqvEk.cache +1 -0
  445. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kN/kNxYZPRLr5Heg40po5rQeETfFsQSz2Spq0P96dQwm6g.cache +1 -0
  446. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kV/kVcNFNFViTc59sqdB7TCep3kIjJKRAq0JiOsYT96gw4.cache +1 -0
  447. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kw/kwt7Otg76mx3HABJwdoLh4XCaJA7fcEA0oasYnNM4qc.cache +1 -0
  448. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lA/lA44SwgiBeStVfPt6vCOLXLDtVk6fR-JcXuluwUtE8Y.cache +1 -0
  449. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lB/lBcEC70oyiQVE2wHYr5dne-6WjEX9BrIF1fsHtQDYyA.cache +1 -0
  450. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lO/lOtkvwxYi3C6HvRMLsraWuf3K3tLjFrRi_zwDOK7-w4.cache +1 -0
  451. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lS/lStvx9Beg2l4s8L-QdTSKuc5_qQPQAZPnIcRI7JkpPE.cache +0 -0
  452. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lU/lUBp4c-ZzIx5LGpBVDKucfvEI2CgzbtlBVkR5FzIKHI.cache +1 -0
  453. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lV/lVVIhrods_UJgMZe7qbv47e-r7kPxZ19EEq7h3mA2aw.cache +0 -0
  454. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lX/lXLZvZUXgOexc1g2xtl_abG8qkPFRiVzEwxUnNDnwtk.cache +1 -0
  455. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lX/lxNjCV2i0rpHrbkB2LGbb37CQzl-U-gvmO2JDdfRi40.cache +0 -0
  456. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m5/m5NBFkASap4y3IFQ_btHCp54vLBYhN_vEi_uXo0mox0.cache +0 -0
  457. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/m9/m9M-9wLrOMKCfHFHurDIkqkrP0zkNGcVGQNYC-eR2ro.cache +1 -0
  458. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mv/MV6XTPgYKXYQzM554hzkvDAKBZ7ByuK0hOU59m3pD3Y.cache +0 -0
  459. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mv/mvodaow8rgRd9sJDqsG08aOcREoDKtOpiCPFvK_TsZ4.cache +0 -0
  460. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mw/mwrSJYs8gfH-O9CK5xpjAnaKb4pnRcm3Ghff1wzWZKI.cache +0 -0
  461. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n5/n5IAwQM3a6MmQ6mn5N22pOAxrtO4pw4v-YJf-dVKGaA.cache +0 -0
  462. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nG/nGlhcnU2eRYMKFF5f76U66banPkmjY-_3-QTWTEEdk0.cache +1 -0
  463. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nG/nGwK9qWKfoTXRod_l7Y9YIG8MPU0PUr1qCLZW3hZxZE.cache +1 -0
  464. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nQ/nQRhhKYln8VXsKw6VHqn4gj13OU7NdtT83AyEJJ76-E.cache +1 -0
  465. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
  466. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/no/no1vcTRmhUVKL2hWnpZit_393BNAzgh1KezB5PoNWMs.cache +0 -0
  467. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/no/noNjdb5H4KX9glHjmVa2bUzTI66VHVq6yng6tMut1-U.cache +1 -0
  468. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
  469. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/o5/o5QZkQKglOPpmumbwNt58mzdNGAyoRcKv6wmlFf94Bg.cache +1 -0
  470. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oG/oGzkqutLFFtVguuqb9SscboFeXqziD5hF7hKtaNU_Lc.cache +1 -0
  471. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oV/oVEHhh6phdasQUMJjtgB-HoOwiNiSL_7OFMT0Wug6SM.cache +1 -0
  472. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oq/oqEk3_3iEpPjP3k-4AHrTcs1W3s1hiRYhnE2kKKwNK0.cache +0 -0
  473. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/p8/p8Vz2R6ju6XmOmt2NVN65FGgtc34QrxoQOQUuOwZ4vc.cache +3 -0
  474. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/p9/p9sY4mrW92mk0ILUZayk6y8ZH03vCaap5bnAv8wHQxc.cache +1 -0
  475. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pG/pGzZCiduCkDh0hD_HA_7yT-pCdr50GsBSR9XUhG4SCA.cache +0 -0
  476. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pG/pgn6MGAwQc38eKTGIiW6v6I-uqJcoTMrUxXEgX-QxlE.cache +1 -0
  477. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pR/pRZa-KxJwmjiC1-SP_5DbLraVN7cL_3xYjlpRgDuwrk.cache +1 -0
  478. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pR/prhsHL709EIrbLlfttBHGgMlHq0-w6S1b_6BOkPSNCM.cache +0 -0
  479. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pS/pSArjPqSk-pkk_-HgZTZcSlYdQRjxU86R9hhV8XXNPM.cache +1 -0
  480. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q4/q4Ij4UM1ZEPpDKlM6Il0by_yr9l_SBAGy0v0qJqd6pA.cache +1 -0
  481. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q7/q7qcA0gIIgE1tj2DLy9ijyQHueoZ-axAV5KG304tIyU.cache +1 -0
  482. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qA/qAgADtahXZN-Z9arTpnZir1sLZAU-txlFDhvopoMqu0.cache +0 -0
  483. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qD/qDV1EnK2LQPWRUtyvEHrwRMzHmsdcuL6hPTuP-QTNgw.cache +0 -0
  484. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qP/qPUrP7xNST4tFIY67h143tMh9pr68ihQuCZXGuzbzQ8.cache +1 -0
  485. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qi/qinQgw3_UR-pyhQjPjXFtSmhC3aH5_J2mMzY42bWOr0.cache +3 -0
  486. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qj/qjY2p4O6x-rJLfyrQQumFP4EFs7UlkxpiB6pPWa3by4.cache +0 -0
  487. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qk/qkU4syO2eEp04hDYWJAJs9p_dCJ-jZEGn_JbkBHaGKE.cache +1 -0
  488. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rA/RADQ6HqmwcrSXNInwShZEBY8hJCrMWJif3gS9n0yZdQ.cache +1 -0
  489. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rA/RAvnusx7xJn70O0ZPoSoK0tD6qTRUzoSF9q8r2vvWOk.cache +0 -0
  490. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rA/rAf6Bvt6LFXHfE9pAoHiNxRcQkCj9UoRfrfxNsUQpgo.cache +0 -0
  491. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ro/rooedbp7EPhyBa8ECvKQZlY9-FbOlPBze1l5sBfDk0Y.cache +2 -0
  492. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s1/s1tnMgdDTyOvPT6jq5lWVBbhdZC6VrCGhSGxjhzHUDI.cache +1 -0
  493. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s4/s4ZfAmC6Rd7p90O_s1caQBrDeAXieelCP_w16Vb2zfs.cache +1 -0
  494. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/s4/s4cq9MtM-4cIELqzM_m1q7knPQHU0JArGA8i2KvmhDg.cache +2 -0
  495. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sH/sH39zSQMaSrUkyD8tbV-PIrcXsdrPBny_gIbSTFItVU.cache +0 -0
  496. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sL/sLZkfxGYyALN_ZgxowJyTy9U-ZbE0JUmDqegJqMO9x0.cache +2 -0
  497. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sQ/sQ1OvFgxENiqdMSbojMQWjtImC6iyYBEc67-QKtr1fg.cache +1 -0
  498. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sS/Ss5ZWGzFag9HGqjA7-YpPBQM7qWS8T7vbkqEL_CtBmQ.cache +1 -0
  499. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sS/sSGsoeyFPtNw8cOUqqYNHG4NsZFRnQhsUBrNS1Hzt6M.cache +0 -0
  500. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sU/sUKRUtjBa4FGl8MdnWreoI_e2UifnouCogyV7_AodnE.cache +1 -0
  501. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sV/sV5XC50x6MzBeuowy1603iMLPIk1WGRZPpIvFqw6b70.cache +1 -0
  502. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sx/sxSW_O3DBwIzc9K_-4H9Gk6hTuyNoL6zf2n1ql4BOWI.cache +1 -0
  503. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/t2/t2gbQLI0ZERR-wVn2hFSuPRRdgyblFbgLuORFnExnkk.cache +2 -0
  504. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/t5/t5KDIW0mZIuaWDpqS_Idn_XWpiO1KzDCHi3OCfYi-lE.cache +1 -0
  505. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ti/tIeEYJmhh20B3LnQlZqB1jjqcGUpjx4TAHfjjRwnE3g.cache +1 -0
  506. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ti/tibTsbeZf8VxRc9-ddyaDLVp2K5y3ICLWX0tarLRx3c.cache +1 -0
  507. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tu/tUEMBVlhijnAEaL7rZY3KXQ5Mljj03Km9UG-dzi6e5Y.cache +1 -0
  508. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tu/tuxfTt5FL1jj8iNJIVNgWgNpzdoq89DhPGGoWSNOGPo.cache +0 -0
  509. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uT/uTM6Z_vM4ooPP0LhUO0P52G4G1XA3J81u4_6SzvikKo.cache +1 -0
  510. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uV/uV189QTHW92JA4LHEzN-XQzMCeSyreWaP_p-gRU1X_8.cache +2 -0
  511. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/uY/uY-S1DmdTbexg2uRDmzHWxSNeNF-6cgpsJVs85mH-iI.cache +2 -0
  512. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ux/uxuoBEpkhphCFRt5fBcuKIBTpGUbUm6QPckvK2HIly8.cache +0 -0
  513. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/v6/v6bbSLGLStc9RBGhtWK3e0wrL9RHwVzFqLHM6m95g1g.cache +0 -0
  514. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/v7/v7iwUj2txW5Gn0W2h-sr4zuYpqHNmIb2lo01Yg2rRVY.cache +0 -0
  515. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vM/vM4hw2c6BLqFEoMbbD8Cigjqo-E9xCHju4GR9Oii4uU.cache +1 -0
  516. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vV/vVVcODmSnP0VymIbDYVcVv7NgqfUrCrCAvojwON_b7k.cache +1 -0
  517. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vf/vf5-hjpmqGlBWO3KY0j8Wzta3yMPKzjk0WOjsEMHWKQ.cache +1 -0
  518. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vx/vxLQ1HjqRP2MJFz-Mu5EiUrmg4lqzbMpsvYIoR_6ciQ.cache +0 -0
  519. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vx/vxs3DeCoTL7MKdoRCZBslsudhoPgIXF3w2Uit_NUAJ8.cache +1 -0
  520. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w2/w21TS44QQPe7tWaANBem27jVeZFhd-AQa1NAtHh5mso.cache +0 -0
  521. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wX/wXh0dbYBt6wgoWkzxSI3nLHgZbSm8owhqa_5-E3G36o.cache +0 -0
  522. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wa/wa5nfUoumwKrJ2TSjl3g_ttCELLQfykxRc_llcWMicA.cache +0 -0
  523. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wa/waiW0akeYkbZAgkc0MRstCebPSAxM6ZJ9eoARVMluYA.cache +0 -0
  524. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wi/win_v0ZNu-l7AoRx8w3ls1xcy0mUExLBVMCSr5oaJFc.cache +0 -0
  525. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/x1/x1qt1e10WEGhaxus8NiFRssZ5SJsT2qufRTwxzdHknI.cache +1 -0
  526. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xa/xaANPnUTJGzN64nUv50cH_OFYq8GThgxSUTVDzSfikI.cache +0 -0
  527. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xa/xakzbyHC2avaxZcMDOlZ2fuLoWGzNWnYEmDTiRBx410.cache +0 -0
  528. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/y5/y5dGtOgJbdGYLXmNPsI_Vz9wm-0J2VUjx4zYS56g2sY.cache +0 -0
  529. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yE/yEZ1RLIK1rE8xrMkCBZfRXNmMVPb15bN5nHmQ9qsnB4.cache +1 -0
  530. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yJ/yjz6kNv8A_gC13tLzT5e2Q95DzlKlBcs5Uft42GVNEE.cache +3 -0
  531. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yP/yPjTobuqitwRzmtzCR3fv6-SP8QF0FlsNzoEMQcswiA.cache +1 -0
  532. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yS/YS1dL0joQCAjC1bJN-vuNPsWeuDNtYsQcf0lwZyv_ZE.cache +1 -0
  533. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yS/yS_JjkODUpvC2p-_pGS5zYTcv5E1eF776rlwOrHmFx8.cache +0 -0
  534. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yW/yWGxKaf_MbkFwzn3CfXj47SU0mj4HEXnrmADrEWrX90.cache +1 -0
  535. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yZ/YZNVvARGsWIsT2TVx4Tz-wr8NHwZsk7Nw23B79E8Ey4.cache +0 -0
  536. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yZ/yZfsucHd9nlaA_MBi6IBfos1kNBuyk5yOUUo5bsT4UQ.cache +0 -0
  537. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yo/yo09_yxeLACBEmGIXmJfIQImK1Za47rkfEdpXQ7zWLI.cache +0 -0
  538. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zV/zVZwymLh1DANzpf5NGBQmPwVOtLu271lY91bdneQ5QE.cache +1 -0
  539. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zX/zXU5J32FCAcitYHQZiaaLWc1vvt5wY-0pWMZu4jT2b8.cache +0 -0
  540. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zZ/zZvklW35JU4jF8SKFUvmUrDqPjOOfpBqV_61nFFvjuY.cache +1 -0
  541. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z_/z_NZHJhgyJi-OgWrdM_B8dEeWFfuTmUAPtTL9hF1SWU.cache +0 -0
  542. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zj/zjDreE6jJOr4Q5dQ3B6SQGc2CnGiyZmbn1VUJi3v5YY.cache +0 -0
  543. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zj/zjrEFoJ2rmEOY1HXgbv9S0BJPFSJ8tMOEdI-LrpUS3I.cache +1 -0
  544. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zu/zuJvwD0e8Bjfge_1GU7RJSn6YX068iBQ9QNs0U72xGU.cache +1 -0
  545. data/spec/factories/stenographer/authentication_factory.rb +9 -0
  546. data/spec/factories/stenographer/change_factory.rb +12 -0
  547. data/spec/factories/stenographer/output_factory.rb +8 -0
  548. data/spec/fixtures/github_push_notification.json +222 -0
  549. data/spec/fixtures/slack_channels_list.json +70 -0
  550. data/spec/fixtures/slack_chat_post_message.json +20 -0
  551. data/spec/lib/stenographer/inputs/github_input_spec.rb +73 -0
  552. data/spec/lib/stenographer/outputs/slack_output_spec.rb +54 -0
  553. data/spec/models/stenographer/authentication_spec.rb +56 -0
  554. data/spec/models/stenographer/change_spec.rb +260 -0
  555. data/spec/models/stenographer/output_spec.rb +74 -0
  556. data/spec/spec_helper.rb +39 -0
  557. data/spec/support/factory_bot.rb +5 -0
  558. metadata +1356 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 933b3f63287df841e839e52f4ccd8ed8463d836efdcb3b428b1b876ebc593a0c
4
+ data.tar.gz: 1ab7e76dd5d1a1c7495c4f67bd5b339fc4a6b4cbf68b8823d7ccfe528554a4ef
5
+ SHA512:
6
+ metadata.gz: a2cf90ff792bb8ee209da237ed8e00cf249d782a934cb12f37823e5f489ebbac0d9734550d350e827c0e2701e33e70cf8df7eca5a302f9fead0a084f06c7af1a
7
+ data.tar.gz: 0c3c3964c9f5a46386e182d63036c62061b7d17f96b1a6688ac67833b5c2599899e4ef6fa12454f5384045d261f77fbb6d924b80cb943b3b768a9e05b0d344d6
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2018 Michael Carey
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.md ADDED
@@ -0,0 +1,83 @@
1
+ # Stenographer
2
+ Stenographer is a simplistic way to manage your changes and show them to the users. When using an input like Github that
3
+ has a unique id shared across branches, it will also manage grouping changes by environment.
4
+
5
+ ## Usage
6
+ To create a new item:
7
+ ```ruby
8
+ Stenography::Change.create(message: 'My Change', change_type: 'new/improved/fixed', visible: true, environments: 'production', tracker_ids: '#12345', source: '{}')
9
+ ```
10
+ It's advised to store the source so you can parse it again later if needed.
11
+
12
+ To View:
13
+ ```
14
+ Open a browser to http://host:port/stenographer or whatever you've set your mount point to.
15
+ ```
16
+
17
+ ## Automatic Changelogs
18
+ 1. First, setup your input type in your config/stenographer.rb. As of right now, Stenographer only supports ``Stenographer::Inputs::GithubInput`` which users github webhooks.
19
+ 1. Then, setup your GitHub webhook setup to use "just the push event" to point at `https://#{YOUR_DOMAIN}/#{STENOGRAPHER_MOUNT_POINT}/changes`
20
+ 1. Finally, add `[changelog My change message]` to your commits.
21
+
22
+ ## Installation
23
+ Add this line to your application's Gemfile:
24
+
25
+ ```ruby
26
+ gem 'stenographer-rails'
27
+ ```
28
+
29
+ And then execute:
30
+ ```bash
31
+ $ bundle
32
+ ```
33
+
34
+ Or install it yourself as:
35
+ ```bash
36
+ $ gem install stenographer-rails
37
+ ```
38
+
39
+ Add the configuration and migrations:
40
+ ```bash
41
+ $ rails g stenographer:install
42
+ ```
43
+
44
+ ## Configuration
45
+ All configuration is available in the config/initializers/stenographer.rb
46
+
47
+ ## Developing
48
+ #### Running the App
49
+ Set up the database
50
+
51
+ ```ruby
52
+ $ rake app:db:setup
53
+ ```
54
+
55
+ Start the Rails server
56
+ ```ruby
57
+ $ rails s
58
+ ```
59
+
60
+ View the site
61
+ [http://locahost:3000/stenographer](http://locahost:3000/stenographer)
62
+
63
+ #### Testing
64
+ Set up the database
65
+
66
+ ```ruby
67
+ $ RAILS_ENV=test rake app:db:setup
68
+ ```
69
+
70
+ Run the tests
71
+ ```ruby
72
+ $ rake spec
73
+ ```
74
+
75
+ ## Contributing
76
+ 1. Fork the repo and create your branch.
77
+ 2. If you've added code that should be tested, add tests.
78
+ 4. Ensure the test suite passes using `$ rake spec`.
79
+ 5. Make sure your code lints using `$ rubocop`.
80
+ 6. Issue that pull request!
81
+
82
+ ## License
83
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
8
+
9
+ APP_RAKEFILE = File.expand_path('spec/dummy/Rakefile', __dir__)
10
+
11
+ load 'rails/tasks/engine.rake'
12
+ load 'rails/tasks/statistics.rake'
13
+
14
+ Bundler::GemHelper.install_tasks
15
+
16
+ require 'rspec/core'
17
+ require 'rspec/core/rake_task'
18
+
19
+ desc 'Run all specs in spec directory (excluding plugin specs)'
20
+ RSpec::Core::RakeTask.new(spec: 'app:db:test:prepare')
21
+
22
+ task default: :spec
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/stenographer .js
2
+ //= link_directory ../stylesheets/stenographer .css
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require rails-ujs
14
+ //= require activestorage
15
+ //= require_tree .
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
File without changes
@@ -0,0 +1,18 @@
1
+ $family-primary: 'Work Sans'
2
+
3
+ @import 'bulma'
4
+ @import 'changes'
5
+
6
+ .flash
7
+ padding: 14px
8
+ text-align: center
9
+ position: absolute
10
+ left: 0
11
+ right: 0
12
+ color: #FEFEFE
13
+
14
+ .flash-notice
15
+ background: #0074D9
16
+
17
+ .flash-alert
18
+ background: #FF4136
@@ -0,0 +1,23 @@
1
+ ul.changes {
2
+ list-style: circle;
3
+ padding-left: 30px;
4
+ }
5
+
6
+ li.change {
7
+ margin: 5px 0;
8
+ font-weight: 300;
9
+ }
10
+
11
+ .change p {
12
+ display: inline-block;
13
+ margin: 2px;
14
+ }
15
+
16
+ .changes-pagination {
17
+ margin: 40px 0;
18
+ }
19
+
20
+ .changes-none {
21
+ text-align: center;
22
+ margin-top: 40px;
23
+ }
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency 'stenographer/application_controller'
4
+
5
+ module Stenographer
6
+ class Admin::AuthenticationsController < ApplicationController
7
+ before_action :assign_authentication, only: %i[show destroy]
8
+
9
+ def index
10
+ @slack_authentication = Authentication.find_by(provider: 'slack')
11
+
12
+ page = params[:page] || 1
13
+ @authentications = Authentication.order(id: :desc).paginate(page: page, per_page: Stenographer.per_page)
14
+ end
15
+
16
+ def show; end
17
+
18
+ def destroy
19
+ if @authentication.destroy
20
+ redirect_to admin_authentications_path, notice: 'Authentication Destroyed'
21
+ else
22
+ redirect_to admin_authentication_path(@authentication), alert: @authentication.errors.full_messages.to_sentence
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def assign_authentication
29
+ @authentication = Authentication.find(params[:id])
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency 'stenographer/application_controller'
4
+
5
+ module Stenographer
6
+ class Admin::ChangesController < ApplicationController
7
+ before_action :assign_change, only: %i[show edit update destroy]
8
+
9
+ def new
10
+ @change = Change.new
11
+ end
12
+
13
+ def create
14
+ @change = Change.new(change_params)
15
+ @change.environments = Rails.env.to_s.downcase
16
+
17
+ if @change.save
18
+ redirect_to admin_change_path(@change), notice: 'Change Created'
19
+ else
20
+ flash.now[:alert] = @change.errors.full_messages.to_sentence
21
+ render :new
22
+ end
23
+ end
24
+
25
+ def index
26
+ page = params[:page] || 1
27
+ @changes = Change.order(created_at: :desc).paginate(page: page, per_page: Stenographer.per_page)
28
+ end
29
+
30
+ def show; end
31
+
32
+ def edit; end
33
+
34
+ def update
35
+ message = {}
36
+
37
+ if @change.update(change_params)
38
+ message[:notice] = 'Change Updated'
39
+
40
+ redirect_to admin_change_path(@change), message
41
+ else
42
+ flash.now[:alert] = @change.errors.full_messages.to_sentence
43
+ render :edit
44
+ end
45
+ end
46
+
47
+ def destroy
48
+ if @change.destroy
49
+ redirect_to admin_changes_path, notice: 'Change Destroyed'
50
+ else
51
+ redirect_to admin_change_path(@change), alert: @change.errors.full_messages.to_sentence
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def change_params
58
+ params.require(:change).permit(:created_at, :message, :visible, :change_type, :environments, :tracker_ids)
59
+ end
60
+
61
+ def assign_change
62
+ @change = Change.find(params[:id])
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency 'stenographer/application_controller'
4
+
5
+ module Stenographer
6
+ class Admin::OutputsController < ApplicationController
7
+ include Stenographer::OutputsHelper
8
+
9
+ before_action :assign_output, only: %i[show edit update destroy]
10
+
11
+ def index
12
+ @authentication_count = Authentication.count
13
+ @providers = Authentication.providers
14
+
15
+ page = params[:page] || 1
16
+ @outputs = Output.order(id: :desc).paginate(page: page, per_page: Stenographer.per_page)
17
+ end
18
+
19
+ def show; end
20
+
21
+ def new
22
+ authentication_id = params[:output][:authentication_id]
23
+ @authentication = Authentication.find_by(id: authentication_id)
24
+
25
+ if @authentication.present?
26
+ @output = Output.new(authentication_id: authentication_id)
27
+ else
28
+ redirect_to admin_outputs_path, alert: 'Cannot create an Output without a Provider'
29
+ end
30
+ end
31
+
32
+ def create
33
+ @output = Output.new(output_params)
34
+ @output.configuration = params[:configuration].to_json
35
+ @output.filters = params[:filters].to_json
36
+
37
+ if @output.save
38
+ redirect_to admin_output_path(@output), notice: 'Output Created'
39
+ else
40
+ redirect_to admin_outputs_path, alert: @output.errors.full_messages.to_sentence
41
+ end
42
+ end
43
+
44
+ def edit
45
+ @authentication = @output.authentication
46
+ end
47
+
48
+ def update
49
+ @output.configuration = params[:configuration].to_json
50
+ @output.filters = params[:filters].to_json
51
+
52
+ if @output.save
53
+ redirect_to admin_output_path(@output), notice: 'Output Created'
54
+ else
55
+ redirect_to admin_outputs_path, alert: @output.errors.full_messages.to_sentence
56
+ end
57
+ end
58
+
59
+ def destroy
60
+ if @output.destroy
61
+ redirect_to admin_outputs_path, notice: 'Output Destroyed'
62
+ else
63
+ redirect_to admin_output_path(@output), alert: @output.errors.full_messages.to_sentence
64
+ end
65
+ end
66
+
67
+ private
68
+
69
+ def assign_output
70
+ @output = Output.find(params[:id])
71
+ end
72
+
73
+ def output_params
74
+ params.require(:output).permit(:authentication_id)
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency 'stenographer/application_controller'
4
+
5
+ module Stenographer
6
+ class AdminController < ApplicationController
7
+ def index
8
+ @change_count = Change.count
9
+ @authentication_count = Authentication.count
10
+ @output_count = Output.count
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ class ApplicationController < ActionController::Base
5
+ protect_from_forgery with: :exception
6
+ end
7
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency 'stenographer/application_controller'
4
+
5
+ module Stenographer
6
+ class AuthenticationsController < ApplicationController
7
+ skip_before_action :verify_authenticity_token
8
+
9
+ def create
10
+ auth_hash = request.env['omniauth.auth']
11
+ @hash = auth_hash
12
+
13
+ if auth_hash.try(:provider).present?
14
+ Authentication.find_or_create_by(provider: auth_hash.provider) do |authentication|
15
+ authentication.uid = auth_hash.uid
16
+ authentication.credentials = auth_hash.credentials.present? ? auth_hash.credentials.to_json : nil
17
+ authentication.source = auth_hash.to_json
18
+ end
19
+
20
+ flash[:notice] = 'Successfully created the Authentication'
21
+ redirect_to admin_authentications_path
22
+ else
23
+ flash[:alert] = 'Did not receive oAuth provider info'
24
+ redirect_back(fallback_location: root_path)
25
+ end
26
+ end
27
+
28
+ def failure; end
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_dependency 'stenographer/application_controller'
4
+
5
+ module Stenographer
6
+ class ChangesController < ApplicationController
7
+ skip_before_action :verify_authenticity_token, only: %i[create]
8
+
9
+ def create
10
+ parser = Stenographer.parser.constantize.new
11
+
12
+ parms = params.permit!
13
+ changes = parser.parse(parms)
14
+ changes.each do |change|
15
+ Change.create_or_update_by_source_id(change)
16
+ end
17
+
18
+ head :ok
19
+ end
20
+
21
+ def index
22
+ page = params[:page] || 1
23
+
24
+ @change_count = Change.where(visible: true).count
25
+ @changes = Change.where(visible: true)
26
+ .order(created_at: :desc)
27
+ .paginate(page: page, per_page: Stenographer.per_page)
28
+ end
29
+
30
+ def show
31
+ @change = Change.find(params[:id])
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ module AdminsHelper
5
+ end
6
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ module ApplicationHelper
5
+ def app_name
6
+ Stenographer.app_name
7
+ end
8
+
9
+ def app_icon?
10
+ Stenographer.app_icon.present?
11
+ end
12
+
13
+ def app_icon
14
+ Stenographer.app_icon
15
+ end
16
+
17
+ def manager?
18
+ Stenographer.manager.respond_to?(:call) ? Stenographer.manager.call(session) : Stenographer.manager
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ module ChangesHelper
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ module OutputsHelper
5
+ def slack_channels(output)
6
+ slack_output = Stenographer::Outputs::SlackOutput.new(output: output)
7
+ slack_output.channels
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ class ApplicationJob < ActiveJob::Base
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ class ApplicationMailer < ActionMailer::Base
5
+ default from: 'from@example.com'
6
+ layout 'mailer'
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ class ApplicationRecord < ActiveRecord::Base
5
+ self.abstract_class = true
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ class Authentication < ApplicationRecord
5
+ validates :provider, presence: true
6
+ validates :uid, presence: true
7
+
8
+ has_many :outputs, class_name: 'Stenographer::Output', dependent: :destroy
9
+
10
+ def self.providers
11
+ distinct(:provider).pluck(:provider)
12
+ end
13
+
14
+ def credentials_hash
15
+ credentials.present? ? JSON.parse(credentials, symbolize_names: true) : {}
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stenographer
4
+ class Change < ApplicationRecord
5
+ VALID_CHANGE_TYPES = Stenographer.change_types
6
+
7
+ before_save :sanitize_environment
8
+ after_commit :send_to_outputs, on: [:create]
9
+ after_update :send_to_outputs, if: proc { |change| change.saved_change_to_environments? }
10
+
11
+ validates :message, presence: true
12
+ validates :change_type, inclusion: { in: VALID_CHANGE_TYPES }, allow_nil: true
13
+
14
+ def sanitize_environment
15
+ if environments.present?
16
+ environments_array = environments.split(',').map do |environment|
17
+ environment.downcase.strip
18
+ end
19
+ environments_array.uniq!
20
+ environments_array.join(', ')
21
+ else
22
+ nil
23
+ end
24
+ end
25
+
26
+ def to_markdown
27
+ Stenographer.markdown_renderer.render(message).html_safe
28
+ end
29
+
30
+ def matches_filters(output = nil)
31
+ return false if output.blank?
32
+
33
+ filters = output.filters_hash
34
+ return true if filters.empty?
35
+
36
+ filters.none? do |key, value|
37
+ if value.present? && key == :environments
38
+ environments_array = environments.split(',').map(&:strip)
39
+ environments_array.last != value.strip
40
+ else
41
+ value.present? && send(key) != value
42
+ end
43
+ end
44
+ end
45
+
46
+ def environments_to_tags
47
+ tags = []
48
+
49
+ environment_array = environments.split(',').map(&:strip)
50
+ environment_array.each do |environment|
51
+ tags << {
52
+ name: environment.capitalize,
53
+ color: environment == 'production' ? 'is-primary' : 'is-light'
54
+ }
55
+ end
56
+
57
+ tags
58
+ end
59
+
60
+ def self.create_or_update_by_source_id(change_params)
61
+ source_id = change_params[:source_id]
62
+
63
+ if source_id.present? && (change = Change.find_by(source_id: source_id)).present?
64
+ change.environments += ", #{change_params[:environments]}"
65
+ change.save
66
+ else
67
+ Change.create(change_params)
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ def send_to_outputs
74
+ unless Rails.env.test?
75
+ Output.all.find_each do |output|
76
+ if matches_filters(output)
77
+ output_class = "Stenographer::Outputs::#{output.authentication.provider.classify}Output".constantize
78
+ sender = output_class.new(output: output, change: self)
79
+ sender.send
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end