daimon-exhibition 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +30 -0
  4. data/Rakefile +30 -0
  5. data/app/assets/config/daimon_exhibition_manifest.js +2 -0
  6. data/app/assets/javascripts/daimon/exhibition/application.js +13 -0
  7. data/app/assets/stylesheets/daimon/exhibition/application.css +15 -0
  8. data/app/controllers/concerns/daimon/exhibition/mylist_support.rb +132 -0
  9. data/app/models/concerns/daimon/exhibition/exhibit.rb +20 -0
  10. data/app/models/concerns/daimon/exhibition/inquiry.rb +24 -0
  11. data/app/models/daimon/exhibition/mapping.rb +56 -0
  12. data/app/models/daimon/exhibition/mylist.rb +80 -0
  13. data/config/routes.rb +2 -0
  14. data/lib/daimon/exhibition.rb +15 -0
  15. data/lib/daimon/exhibition/controller.rb +11 -0
  16. data/lib/daimon/exhibition/engine.rb +32 -0
  17. data/lib/daimon/exhibition/model.rb +12 -0
  18. data/lib/daimon/exhibition/version.rb +5 -0
  19. data/lib/tasks/daimon_exhibition_tasks.rake +6 -0
  20. data/spec/dummy/Rakefile +6 -0
  21. data/spec/dummy/app/assets/config/manifest.js +5 -0
  22. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  23. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  24. data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
  25. data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
  26. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  27. data/spec/dummy/app/controllers/inquiries_controller.rb +27 -0
  28. data/spec/dummy/app/controllers/mylist/products_controller.rb +3 -0
  29. data/spec/dummy/app/controllers/products_controller.rb +9 -0
  30. data/spec/dummy/app/controllers/welcome_controller.rb +4 -0
  31. data/spec/dummy/app/jobs/application_job.rb +2 -0
  32. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  33. data/spec/dummy/app/mailers/inquiry_mailer.rb +7 -0
  34. data/spec/dummy/app/models/application_record.rb +3 -0
  35. data/spec/dummy/app/models/inquiry.rb +6 -0
  36. data/spec/dummy/app/models/inquiry_item.rb +4 -0
  37. data/spec/dummy/app/models/product.rb +5 -0
  38. data/spec/dummy/app/views/inquiries/new.html.erb +24 -0
  39. data/spec/dummy/app/views/inquiry_mailer/thanks_for_your_inquiry.html.erb +11 -0
  40. data/spec/dummy/app/views/layouts/application.html.erb +27 -0
  41. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  42. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  43. data/spec/dummy/app/views/mylist/products/index.html.erb +20 -0
  44. data/spec/dummy/app/views/products/index.html.erb +7 -0
  45. data/spec/dummy/app/views/products/show.html.erb +8 -0
  46. data/spec/dummy/app/views/welcome/index.html.erb +1 -0
  47. data/spec/dummy/bin/bundle +3 -0
  48. data/spec/dummy/bin/rails +4 -0
  49. data/spec/dummy/bin/rake +4 -0
  50. data/spec/dummy/bin/setup +34 -0
  51. data/spec/dummy/bin/update +29 -0
  52. data/spec/dummy/config.ru +5 -0
  53. data/spec/dummy/config/application.rb +20 -0
  54. data/spec/dummy/config/boot.rb +5 -0
  55. data/spec/dummy/config/cable.yml +9 -0
  56. data/spec/dummy/config/database.yml +25 -0
  57. data/spec/dummy/config/environment.rb +5 -0
  58. data/spec/dummy/config/environments/development.rb +54 -0
  59. data/spec/dummy/config/environments/production.rb +86 -0
  60. data/spec/dummy/config/environments/test.rb +42 -0
  61. data/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
  62. data/spec/dummy/config/initializers/assets.rb +11 -0
  63. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  64. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  65. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  66. data/spec/dummy/config/initializers/inflections.rb +16 -0
  67. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  68. data/spec/dummy/config/initializers/new_framework_defaults.rb +24 -0
  69. data/spec/dummy/config/initializers/session_store.rb +3 -0
  70. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  71. data/spec/dummy/config/locales/en.yml +23 -0
  72. data/spec/dummy/config/puma.rb +47 -0
  73. data/spec/dummy/config/routes.rb +10 -0
  74. data/spec/dummy/config/secrets.yml +22 -0
  75. data/spec/dummy/config/spring.rb +6 -0
  76. data/spec/dummy/db/development.sqlite3 +0 -0
  77. data/spec/dummy/db/migrate/20160830075630_create_inquiries.rb +10 -0
  78. data/spec/dummy/db/migrate/20160830075707_create_products.rb +10 -0
  79. data/spec/dummy/db/migrate/20160830081631_create_inquiry_items.rb +10 -0
  80. data/spec/dummy/db/schema.rb +38 -0
  81. data/spec/dummy/db/test.sqlite3 +0 -0
  82. data/spec/dummy/log/development.log +1821 -0
  83. data/spec/dummy/log/test.log +6711 -0
  84. data/spec/dummy/public/404.html +67 -0
  85. data/spec/dummy/public/422.html +67 -0
  86. data/spec/dummy/public/500.html +66 -0
  87. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  88. data/spec/dummy/public/apple-touch-icon.png +0 -0
  89. data/spec/dummy/public/favicon.ico +0 -0
  90. data/spec/dummy/spec/factories/products.rb +10 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-E/-EvCfhQvPIlzjF1ZYOZWTjQw8UEah5xwpEuhiymmatc.cache +0 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-O/-OW8IYI7LQf3PuZXK8j-efAu1S0cFB2iXBDLRieAnYE.cache +1 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/0T/0T5KSc86fUP6KzgPAc2-GgBuBr_iH5f9HS321L-ixsc.cache +0 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1D/1D1db_D2WwA6qXNJMQL45pxAXrasUm-_znhPk-6vB34.cache +1 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1E/1EhinbkN9WP21Ew10wDIxK2IRkZv2nJoi9Xl4DjnR90.cache +0 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1k/1kxtaBNnFxpVf5ERsYFYqxMxnAfIIOtAv_Nc3_G1AeY.cache +0 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/1z/1zdk6qCCKEQS-ILKAZMVyHpmB6Vrv4ZiuFmvOi0iVUc.cache +0 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/26/260q5PyBnPVPSLRKeqt4y2RQix0FTfoMCUOod8MV718.cache +0 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/26/26NHucn7yILcGgIERWkgGQ5byRRYvgYpVzdTAqH0mQw.cache +1 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2Y/2Yooenzz5QkG7hXKF0L76jt0UDNfeZ0-Su_BvK4mW2E.cache +0 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3D/3DwqMVReQPnZyi5rmGB31foF7TTyJ_aLCp1RmJl6jDU.cache +0 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3S/3SHl655ROiVWBzH2zG_7IwI1KK2-u6byOUE-ahVlYbM.cache +0 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3V/3VuVVfDgfhi4RqQkRE1gTRM49W8yB4ZQICzHD2OU0LU.cache +1 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4d/4d1hCMkZ6Yidu50qiIWu58shEz9U055eVpvH4kRgjaI.cache +0 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4h/4hA2p2M2wZfGccKALYjYUGqUSskz2T8HgQfszmARxU4.cache +0 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/53/53ZzGgtxxvNCwaepCe6xsnfv4DoWqMmXotrsrf-tqOs.cache +1 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/56/56fkQTr3LeX361vhJDJuTpQm2Z5WKJj8kVbcN2KRzSM.cache +0 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5i/5i4CnsdBphu5UptdQmslXY4z4ldQSZgMUz3zZuj0aZ8.cache +1 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5o/5oTALQIWPnsycrXE5CeYMjh0XElmu4wYUmROUWBaV2Q.cache +1 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6T/6TOfaA1wC18XTbtydablgkHGshi9oh43hWwmMRm--jk.cache +1 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6g/6gaRI5ylaTbkiKOrURLv78P9zEuo2kOwJHAGbCaBF9o.cache +1 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/77/77Fz1ygpRe5qBn7ASOzrfefz7nFkJYgLUPvc1L9Z6qA.cache +1 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7Q/7Q2VKpAAnV6vKcHfUIRldNY7CWA-T_VIopZgEIDabDw.cache +0 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7i/7i2vIfmlFzNUMT-Onw5yXBkqsuwpoWM1Cw2zLE8d40w.cache +2 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7j/7jQrHOotz-KC1tugL21NnY08URQRk9wQzKiGzcCkgrg.cache +1 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8y/8YTzhZ9z1EBurxXJDmXzJ_3dPUy9MEH7gTA-DYncFwI.cache +0 -0
  117. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8y/8ybYa2asdvazqzK_st4FBkX0kbwV0pr7q7TtrvLRlxs.cache +0 -0
  118. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9B/9BnNj6cTU3qJX_rSjBjsOl4krrxDSTBTDZ_-ldEobgo.cache +1 -0
  119. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9j/9j_vVLfHa30VHo0kIGRyJ0IshvnXfeN_NrpZtrBtPbc.cache +0 -0
  120. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9p/9p9KkomdXBebzeH_36Ky2C_5B3KvmnVUEJGfKn4xnBc.cache +0 -0
  121. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/9q/9qCgh4P746teLfvB01-4ot_DVvhdtUAYiMp1z4CcsnA.cache +1 -0
  122. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/A2/A2xnPnk2cfs4e8Ib4ci5P3aizTTjmEilGcinUu4s6c0.cache +1 -0
  123. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AD/AD4vwQeD0EcHVblGBTT3cWwUCc7jU2f-_e19MelOJGs.cache +1 -0
  124. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/CH/CHrTCn4G5Idf9SLbNg8ZyJqp-3Nx-hYCpDWi9Tv9bwc.cache +2 -0
  125. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Cb/CbRHXiSPJE12ypQIhlFqpcEapKc9OKNoV3GvBVALD9U.cache +1 -0
  126. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/D3/D3pTReRVsrAWgIoKBeRuIxxfKxwuD_KVhiqF8-aqiqw.cache +1 -0
  127. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DE/DEpM3g5IjbzI908W19RMHzrRXkP3oMuWQ2XF3Li_wVc.cache +0 -0
  128. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DQ/DQIXRjidd9Tfd7369J9q2M1g9G38zYJDYjawRNB-ZQo.cache +0 -0
  129. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dd/DdhJPkrxsBz4F1dRuuLamOG5y4eNmK-eLOrtr2mKUWo.cache +1 -0
  130. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Dv/DvsKS7kGvPrvRKtlHlV_8_gaL3uKEnI9Fwvq46BlgIk.cache +1 -0
  131. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ER/ER36wRvT2PFEZWmCPAeKTLVDYXCv_A9FRAxjofJCZz0.cache +2 -0
  132. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Fv/FvJLoQVvB847FVfAcJcwARSVRcwxE7akrMlRZgid6G4.cache +0 -0
  133. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Gq/GqxBdNzK1sxGYa0msR8sDNcCFUK1Kr7Sa-E9qc_udH0.cache +1 -0
  134. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/H7/H78jgdb1PH7nFQn3AZC5nxYuTdlTCUsAdj0PWNUr4-0.cache +1 -0
  135. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HG/HGoqnt3Ur9KL2FZRxNb8PdSypRbVNWrzJa1Jsv74RQk.cache +2 -0
  136. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HS/HSYEO6CpHOIRu6eM2S1n5kL1IMXUIgwLPm4tln8wWTQ.cache +1 -0
  137. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/HX/HX_83K6RrQMxnZiwVlWNcho6z8Z33NujfmWfRIuU08U.cache +1 -0
  138. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hh/HHL-eglyjfpU5k14BbmP7BZsUMfCmGtIxuVhhaYt7mU.cache +1 -0
  139. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hh/HhOQXgV8xYQUdzdnX3wzngX7Cv4Io3I1TPvbq-CvAH0.cache +1 -0
  140. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Hm/HmSO-m2C31KYqsiqHD-ntNF_W8iVUz6si4o1D2lkZ6Q.cache +0 -0
  141. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IA/IA4E3bFdxxc8xIiWq7qWSQBfOee5Y3LBFcqC33CiLpU.cache +0 -0
  142. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/IB/IBh8qcMzh8fXgDKeVyuBroRi62H_kCdBzfG9_y1FHsI.cache +1 -0
  143. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JF/JFnklRKsjecJPVe5LFmEErXpOeB-ItahCCMlBeXWT_A.cache +0 -0
  144. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JU/JUU06QnpIgdWl8Vy24rpCF3Hasad1OGumkLs-A-4R44.cache +1 -0
  145. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KBwT4G_X0Bp6yZ9l86o9KCD4ykdvHTjU-OSKHRBxtRE.cache +0 -0
  146. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KC/KCdWNBJztXuFSrNI_fmdivf2592IQR62XVviHYPK4Q4.cache +1 -0
  147. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KT/KTfxKmlXzgwEqYrwFM8S9vvEht3NBglv15FHS6kq6J4.cache +0 -0
  148. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/L4/L4qZtHjSjTS-7SEX0caQfB6mto0X0exCW10ynD8y2Wc.cache +1 -0
  149. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LS/LSjNZ3LIXfcSx_WQDKzqwVcBlvcDvArJRtLNMuWHXjc.cache +0 -0
  150. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LU/LU1dSf39x_yrP6LfWs2ewYTFviZxOOYgtYfCQ2WovLE.cache +1 -0
  151. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/LU/LUKrdc3r-08dUEfZrBO8-gNiT1NC9-x0ZJM8qlJ4I_0.cache +1 -0
  152. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Lz/Lz-ZRaVEPQZCdEEajd3OX7AQnTJPlweHvHQFXTVBnzU.cache +0 -0
  153. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MD/MD9dm9xcC2SLh0l7jbBvg-I1IEo6iPKdcP5T2gnnGNU.cache +0 -0
  154. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MJ/MJ30xbV1scYIz4x8t5ZD6qGvRl752CKaoKsQInsbtPM.cache +0 -0
  155. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mc/Mcljo-f7-GVJSA2QU4QeQ9Oh1AuRcXlyVGli-k_RD2M.cache +1 -0
  156. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/N9/N9QXcxw0npQTfnlvZ-mXL5AVd7sJgUrXylHHe-geE1c.cache +0 -0
  157. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ni/NiCV5rtKSK7z57UsCcUTC9GzMvjI1ckxp7DFhL0KxXA.cache +1 -0
  158. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OB/OBrvA2nXiDyiPjiKx4s31GdU6gI7oaynYs0UipFEAU8.cache +0 -0
  159. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Oj/OjySHXEgVkykHuOo4MKe6i7PQGbBJTNXuWnJsZqiKoY.cache +1 -0
  160. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ph/Phtnd1t1I7poKie9R7yefwUKfdqfAwdRwB-YbqJzo3U.cache +1 -0
  161. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ph/pHSBAzUVU4lsCfOdaHJt0RZy3M2S68uDI961OydVcKI.cache +1 -0
  162. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Pp/Ppj-31aBpSjIwNsFM8jIpUhYisG2tWaFam7YMmEW1tw.cache +0 -0
  163. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QF/QF44cSKX_Ak79ZzXS9x0j31Q9gzNkICQCCIe2Dwco70.cache +0 -0
  164. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QM/QMvD0qL7Ys4JAFwt_WhpK9lOnGyA4QWGLx2eu7YNgrs.cache +1 -0
  165. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ql/QlRxFfHkCDZzvEJNCQh-mNN-hPusPKSx9L9fpPHVyNU.cache +1 -0
  166. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/R1/R1MjmuTRaIY4G7ICd0XZwGHGnx2T_VQyijMqTbVzV68.cache +2 -0
  167. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RB/RBdHCYxi6OfkhaFCdO73Rl9eiLyAsV9vfmClVnO_QPY.cache +0 -0
  168. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ri/RicfCTaZGQoiKYuwrfnAUC_lWlQ9X3q9PGZxHL3EDr8.cache +1 -0
  169. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Rz/RzZp9TZjf_RVqLy24-rS2iWjlouZB7n3svNIDfrIfuM.cache +1 -0
  170. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/SL/SLyfODWT6a2HOM5Z3mlsAcLWVZyeU7fe8Bq5vEAGIo8.cache +0 -0
  171. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Sg/SgR9GI-SIySjgVt-WuV9BRpiyETElsJFkLlvoSfXL-M.cache +0 -0
  172. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Te/TeW2NyXByFMBQFemv9F_SobNFekPvoBauuVBW3QDFaE.cache +2 -0
  173. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/U0/U0Rm_fCpFgSlhkATnd-Lg9bIJYX7jkJ3elTMFmT8ErE.cache +1 -0
  174. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/V1/V12N8Cyh-FBEQ1RXMGIsFKIhyhMuplHfUWkG1QmbYHA.cache +1 -0
  175. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vg/VgsInVHhFI91tTndwlrMnW8ZImzhiuyVsqHbQ4rmtQY.cache +0 -0
  176. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Vm/VmlrnrlzV8M2ZAl6z-DeKU9qQEn61DtIphXFBHMXo50.cache +1 -0
  177. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WH/WHvig3vAK5smtNspWwubJuSyc0SwV-uvq6DJRnlUWKM.cache +1 -0
  178. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/WI/WIvJ51lxc5fZ9XVPdcF6TMQyrylU6D9qstG6Y45qyVQ.cache +1 -0
  179. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wb/Wb8bOGo6XQGTd-FiGD8tvvA_L3bO9pvS011y_zfGrNs.cache +1 -0
  180. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Wo/Wo9aFH3p0pougiTQC4tsQm21JVg1uFKuDJHhieSJh4o.cache +1 -0
  181. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/X4/X4Fz9bk4o0eYkobEBnAMXujETnMumzi4SZMw9oHXRb0.cache +1 -0
  182. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XT/XTe86S2jT1L9_F73N2FXDH0hFcF9YaNjjB4UNdcWimM.cache +0 -0
  183. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Xi/XiE07fWZn-MRVGEWTyEgMlaK50Znuqkq0V4HCJ8lXkQ.cache +1 -0
  184. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Y6/Y6kKx_kz3oA9u5l_N0JSsKqYpIyqrEdoGjgrgeJXiVo.cache +0 -0
  185. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/YB/YBiCo7kOVgbW0k26OuxQhgbhy9LqEWk28LwPHNiTNsQ.cache +0 -0
  186. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Yr/YrQlUmDI-K8UDP-SI9cFLTHpb9ucPibii1fkaiQJbvk.cache +0 -0
  187. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Z0/Z0ot-KCjTEMvA_9mQJ1f2F_T0CeFL2ODvWUUWTpVdW0.cache +0 -0
  188. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZM/ZMg7g7c0xndFdB8LgrvHlYfAcFhTEq7bFhE1E-bK4-0.cache +1 -0
  189. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_-/_-6WWFOZ2sfJoTvKuEKH-1pTikl17HOWPmJU-HQrNsg.cache +0 -0
  190. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_A/_AmykjFAaYgUZJm_J2SXVPBKqkQLU6d1Pb1wakm-zuU.cache +0 -0
  191. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/_j/_jqXgXdhlJMNvF0fx2nO_brcONB_ZOVrgpUvT8OrWwg.cache +0 -0
  192. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/a9/a9iXTXzzN2EbOWlC-OKMb7WUdfOhG8LWTY9lWEosVB4.cache +0 -0
  193. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/b_/b_Itlk9QZZd7Rvf8kcA4yLP1R5Acu7jB-m1xQiSU0qE.cache +5 -0
  194. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c5/c58zrT_dNy-iKqzrc_-w_scXoQbVVxfqUIYCEwBGqXs.cache +1 -0
  195. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/c8/c8GMeXRZ7EhBqoJmSJN8fSP6OnVW6hMjmM_Q7yXuWYo.cache +1 -0
  196. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cP/cP46e5-mwRDfRYPj13HeXJrlMHZKQsyIJqCYlewZEuU.cache +1 -0
  197. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cZ/cZnZZXe85VAl_oxcNpjAbU1thia0_rnIjlbdOJ7CAAo.cache +1 -0
  198. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfJ-aTuHEHuWdrR0nA8kkxHKgpb3FIcEFPkggC_tE1E.cache +1 -0
  199. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dh/dhTzIPKYBLpUMVzweIa8MQ52OB2SEyarg39BGk-piXo.cache +1 -0
  200. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ej/ejdGIS_LkABw55OoXWh2FgElSskxe2xPkXvm_--7qlg.cache +0 -0
  201. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ey/eypk1C3qwnkbJtwaU1xwEVpXrqzY4htYM9q59AHBQgQ.cache +1 -0
  202. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fQ/fQNf-0SNBI5Cys2E6alMnmYqKVAV2ocX-mmAI88UwYg.cache +0 -0
  203. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fR/fR9ts4BkPECnQhUI5BFvKA5AmT7MndZuQWC7edk995U.cache +1 -0
  204. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/fR/fRB2DJjavNFqXa50Q1LbZrz4mIMh14gdU_RIyRhvRu0.cache +1 -0
  205. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g-/g-r2aJOBEBZqYLMcc0-p8NZ66ToVp-_q3pwl8B14do4.cache +0 -0
  206. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gC/gCl1_YtVzLK83eQp8Z57ieDWYEshykjoVkTSPnAGQmU.cache +0 -0
  207. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/g_/g_6EJj_d0xAXykJmAfSi32RfJhtpQFrTvf2tyNbw7gw.cache +1 -0
  208. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gk/gkJodrGy9_3YDhVNES0Vn-2PWK8_vluPgbY9_79uC3w.cache +1 -0
  209. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/gp/gpLRtGOnQPQ3UgFmq3ZLLifJuqFcgM-z7XhDw_zcdmg.cache +1 -0
  210. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i-/i-n5asbQVw8NH7wx_k3n_iz6xtssPjHYU_T2Gk4TAnY.cache +0 -0
  211. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iC/iCKCbVrJrTP0ICP2PwP0kRrEcO00vAU-5m1kKARYXNI.cache +0 -0
  212. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/iO/iOzWQuvrTN3Qo7-jlGQgyN_jmeP64aarSaftiz7s38I.cache +0 -0
  213. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/j4/j4_qskb81HQF8NW6LITDZReTPP38uUZ--gtBWKM3E1Y.cache +1 -0
  214. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jR/jRAumX4kTNUKCLGEHdbu-qG-kqU2GBj5fvoxOPVtVkQ.cache +0 -0
  215. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kY/kY0cqH3o7EvPYUrPC0lS7PFb_pWx_LpFzawQEYHxyms.cache +1 -0
  216. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kh/khnFKkTIBWVmAsMJZlGvEBKl8VQiRsa9eZlxEsPfN68.cache +0 -0
  217. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/kx/kx2LqQpm8otVXV7THtYpPzetsjLu7SFDjEPndNur4eI.cache +2 -0
  218. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/l8/l8g85yz7V4l3UKHmp2l3RKrPi8xawhw7fuCp_0f7iz8.cache +0 -0
  219. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lD/lDGeFhRLpwYI9YnugxpMbuuzRZvFhlni41nmZZa0amk.cache +1 -0
  220. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lN/lNoEFNOc5GtQdUL4D0x2GmsAxELJjd7eEs__GSEqxuI.cache +1 -0
  221. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/lP/lPxuwzVKSFbMnsEmvnkye-LqmSv-cae42MVaSKcJ4pY.cache +1 -0
  222. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mQ/mQcklNm57IpTS8b2I_k0uwQVkh8AOQ2CMUwPjHVAc9E.cache +1 -0
  223. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/mX/mX1nlsL_SWOB4y22W5FheRX0YEONKyOY7xUeIvRiHco.cache +0 -0
  224. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/n_/n_xYqQYhwEMQknb3jFQnjlxxBE9TzMNHCdJ-bEyZFIw.cache +0 -0
  225. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nx/nxTv3sKVUQZADJyM3dPaVmUA78MIsMLD_K279yN_GsI.cache +0 -0
  226. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oz/oZkXJDO6Ct-3KAr6gXA7qJAYlnxGudmDPZhdmdWFJcw.cache +0 -0
  227. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/oz/ozK4IPJj2CBcsem3fLJx3wqcOl6mI6B91PkN0wVfkyk.cache +2 -0
  228. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pA/pAEusiR6xT9ln0HzlCPEyRzVvvpivbmMQSVataCciNQ.cache +0 -0
  229. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pY/pYaPhUFaapfJ1vuq3EOyteFdElWjc5ZTDLLicARvfkk.cache +0 -0
  230. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/q5/q5clYaCqFCvriry7EhrIdAgk0YXCNHQD4TL36z6dqR4.cache +1 -0
  231. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qP/qPmv5snMrDw830S6hSICDcnIy7kVEWoFKXhGKT38lG4.cache +0 -0
  232. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/qd/qdVJuHbm8b1q8wHO08Xk_asSVSU4O5LCU1Z7rPahVRw.cache +1 -0
  233. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r4/r4bwYaAhp-MObRGt8wZ8u2jmmc9imcut1DBEkhrtR2o.cache +1 -0
  234. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rL/rLvftYunhgOO2kLaeG4RAv5PMXNUBm_kHNOuMYPSjKg.cache +1 -0
  235. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/rm/rmoqy5xTqQuH0zLMVr9XZHq8IpBj11QBGQLytN9O1nw.cache +1 -0
  236. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sN/sN9yh_atgN1AeIWApE95JR6xR-bCOx69sH9nQN_x86I.cache +0 -0
  237. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sW/sW9w526Tbn5OIEcebJDiiaUIeasZkT5Brh6d5xc71cY.cache +0 -0
  238. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/sX/sXxpnsk3SiJFWzdL0gOD_M-4XvjmGPUqV2Lqw2inTc8.cache +1 -0
  239. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/t4/t42bN7FVLjMz5Vyu8veIdjGOW-j8nQfPGcan0p9ut6s.cache +1 -0
  240. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tV/tVfDzO9YZYPGMfTbCk1Cua6gaZF8Z8q7z9MBiCVR1dY.cache +1 -0
  241. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tk/tk_fdyCTFTNLOgjUTcKVgRErYRfYzPteCVTORO0WmIQ.cache +0 -0
  242. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/tr/trTKeNhy9xDLyybolPkKGyuWtlJ2vFtrPSGcCd9jWFQ.cache +1 -0
  243. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/u-/u-wpbCKIu53FxU3Ll82KrHn94Ayk9fjxa82GvY-3xcU.cache +0 -0
  244. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ug/ugZbpW5xg-A7wqJO56ggtnDtxTRvgPaw5EBIqPq6Dnk.cache +0 -0
  245. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ut/utObqPUrGckNjVMAW0J5PdlN5MGqNn7rAbIYA3sgObE.cache +0 -0
  246. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/vD/vDnkA4__IG9Po_cJZFbBhtTuleoCUyQ33t6d-Nqk1wM.cache +1 -0
  247. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w-/w-oxyqOZtRFcpY1fi1h7FlXT0Se8qm0mVV_Jgxj-vBI.cache +2 -0
  248. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w5/w5KMVOxWspT3eOCZsppXbzvnA5828IWgb2NZax0mluk.cache +1 -0
  249. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/w8/w8frPtDjCUwQsOgrtajST1edbId_BcNhwuH-vSuVx7o.cache +2 -0
  250. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wE/wESscq0LRO0ORbGf7lo5P3A_w6EaRLmr4qcXaSy9oPY.cache +0 -0
  251. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wa/wavMyCiiVB25kfQyxBK1GQTe2KsPfPcJdG1PcZ8qrFg.cache +1 -0
  252. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wj/wj8apni03DZMa2txzlvyeg00D5lx3TwhQ6PLiWA3t4A.cache +1 -0
  253. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/x7/x7PYh8DJvPykcEqpVab2vcY9-GFz-3cqtoMlRAu94Uc.cache +0 -0
  254. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xJ/xJEArWKssPlWqx3nUSWyuLUhR7JqR9Q-eVV5VCHaYGM.cache +0 -0
  255. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xo/xoD7EImFG134at3JA5FXUSpgO4PD9YUIFIbm4dCrguw.cache +0 -0
  256. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yG/yG_hQvJHflBkOsFZ1I3NGeHao4l96GJNLIZlpzJFVFM.cache +0 -0
  257. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yN/yN7e20fL_gaXqgeAHi4wvJ35RarwupsQm4QXnmIakR0.cache +1 -0
  258. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yV/yVwALME9GEsS3XGdPydCnuX8YPqK32qq6ahdD9-oLxs.cache +1 -0
  259. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yV/yv89z-0pA2X3e7iWc_GWA7l4GNVJkAM1A9FPUG-COcs.cache +0 -0
  260. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/yc/ycjEqpQZK7t4NcBoqbpQ1PxOceIZF9wEvHZy9dsfUAE.cache +0 -0
  261. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/z_/z_RSaFA8rHBj6RntRPAAEilZ2zShi4fwrtEU_EtHMqQ.cache +1 -0
  262. data/spec/dummy/tmp/capybara/capybara-201608301755243728643297.html +28 -0
  263. data/spec/dummy/tmp/capybara/capybara-201608301756227995929944.html +29 -0
  264. data/spec/dummy/tmp/capybara/capybara-20160830185014673658598.html +25 -0
  265. data/spec/dummy/tmp/capybara/capybara-201608301851324410268516.html +25 -0
  266. data/spec/dummy/tmp/capybara/capybara-201608301853061957941630.html +25 -0
  267. data/spec/dummy/tmp/capybara/capybara-201609061139174079864591.png +0 -0
  268. data/spec/dummy/tmp/capybara/capybara-201609061140575741059100.png +0 -0
  269. data/spec/dummy/tmp/capybara/capybara-201609061141264529058190.png +0 -0
  270. data/spec/dummy/tmp/capybara/capybara-201609061144358193121313.png +0 -0
  271. data/spec/features/inquiry_spec.rb +51 -0
  272. data/spec/features/mylist_spec.rb +48 -0
  273. data/spec/features/mylist_via_ajax_spec.rb +104 -0
  274. data/spec/rails_helper.rb +28 -0
  275. data/spec/spec_helper.rb +3 -0
  276. data/spec/support/matchers.rb +27 -0
  277. data/spec/support/wait_for_ajax.rb +17 -0
  278. metadata +718 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d02e0c85807af9e362c83dd68d613aabc8dae5c5
4
+ data.tar.gz: b0b085d743e45881ca8e05ee8b5f781c264bab98
5
+ SHA512:
6
+ metadata.gz: a94d38b0b738f5ec591f345a8ec7cf0b10537446d854f6de1f66bf8a506de812f932b549b2d1308373171713d64952d4792a45b8b0adeec41cadcf09800e6f43
7
+ data.tar.gz: a16ddae5cc8ea860f55896296877e33c0289ee4c10ff4d0349e50dda49df639a941ad7f00583e62a2f7829bff4fa8758794a326a67c01fe69479217c068d30f1
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2016 Ryunosuke Sato
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,30 @@
1
+ # Daimon::Exhibition
2
+
3
+ A simple mylist that can contain some products.
4
+
5
+ ## Usage
6
+
7
+ TODO: Write later.
8
+
9
+ ## Installation
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem 'daimon-exhibition'
14
+ ```
15
+
16
+ And then execute:
17
+ ```bash
18
+ $ bundle
19
+ ```
20
+
21
+ Or install it yourself as:
22
+ ```bash
23
+ $ gem install daimon-exhibition
24
+ ```
25
+
26
+ ## Contributing
27
+ Contribution directions go here.
28
+
29
+ ## License
30
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,30 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'Daimon::Exhibition'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+ load 'rails/tasks/statistics.rake'
21
+
22
+ require 'bundler/gem_tasks'
23
+
24
+ require 'rspec/core'
25
+ require 'rspec/core/rake_task'
26
+
27
+ desc 'Run all specs in spec directory (excluding plugin specs)'
28
+ RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
29
+
30
+ task default: :spec
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/daimon/exhibition .js
2
+ //= link_directory ../stylesheets/daimon/exhibition .css
@@ -0,0 +1,13 @@
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_tree .
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,132 @@
1
+ module Daimon
2
+ module Exhibition
3
+ module MylistSupport
4
+ def acts_as_mylist(exhibit_type, exhibit_scope)
5
+ include MylistController
6
+
7
+ enable_to_read_mylist
8
+ enable_to_write_mylist
9
+
10
+ define_method :exhibit_type do
11
+ exhibit_type
12
+ end
13
+
14
+ define_method :exhibit_scope, &exhibit_scope
15
+ end
16
+
17
+ def enable_to_read_mylist
18
+ include MylistReadable
19
+
20
+ helper_method :mylist
21
+ end
22
+
23
+ def enable_to_write_mylist
24
+ include MylistWritable
25
+
26
+ after_action :store_mylist, only: %i(create destroy destroy_all)
27
+
28
+ enable_to_read_mylist
29
+ end
30
+
31
+ module MylistReadable
32
+ protected
33
+
34
+ def mylist
35
+ @mylist ||= restore_mylist
36
+ end
37
+
38
+ private
39
+
40
+ def restore_mylist
41
+ ::Daimon::Exhibition::Mylist.load_from_serialized(session[:mylist])
42
+ end
43
+ end
44
+
45
+ module MylistWritable
46
+ include MylistReadable
47
+
48
+ private
49
+
50
+ def store_mylist
51
+ session[:mylist] = mylist.serialize
52
+ end
53
+ end
54
+
55
+ module MylistController
56
+ include MylistReadable
57
+ include MylistWritable
58
+
59
+ def index
60
+ @exhibits = exhibit_scope.merge(mylist.exhibits_of(exhibit_type))
61
+
62
+ assign_exhibits_variable @exhibits
63
+ assign_inquiry_variable @exhibits if has_inquiry?
64
+
65
+ respond_to do |format|
66
+ format.html
67
+ format.json { render_mylist_as_json }
68
+ end
69
+ end
70
+
71
+ def create
72
+ item = exhibit_scope.find(params[:id])
73
+
74
+ mylist.add item
75
+
76
+ respond_to do |format|
77
+ format.html { redirect_back fallback_location: item }
78
+ format.json { render_mylist_as_json status: :created }
79
+ end
80
+ end
81
+
82
+ def destroy
83
+ item = exhibit_scope.find_by(id: params[:id])
84
+
85
+ mylist.delete item if item
86
+
87
+ respond_to do |format|
88
+ format.html { redirect_back fallback_location: item }
89
+ format.json { render_mylist_as_json }
90
+ end
91
+ end
92
+
93
+ def destroy_all
94
+ mylist.clear(exhibit_type)
95
+
96
+ respond_to do |format|
97
+ format.html { redirect_back fallback_location: :root }
98
+ format.json { render_mylist_as_json }
99
+ end
100
+ end
101
+
102
+ private
103
+
104
+ def inquiry_class
105
+ ::Daimon::Exhibition::Mapping.detect_inquiry_by(exhibit_type)
106
+ end
107
+
108
+ def inquiry_type
109
+ ::Daimon::Exhibition::Mapping.detect_inquiry_type_by(exhibit_type)
110
+ end
111
+
112
+ def has_inquiry?
113
+ inquiry_class.present?
114
+ end
115
+
116
+ def assign_exhibits_variable(exhibits)
117
+ instance_variable_set "@#{exhibits.model_name.collection}", exhibits
118
+ end
119
+
120
+ def assign_inquiry_variable(exhibits)
121
+ @inquiry = inquiry_class.new(inquiry_class.exhibit_writer_for(exhibit_type) => exhibits.ids)
122
+
123
+ instance_variable_set "@#{inquiry_type}", @inquiry
124
+ end
125
+
126
+ def render_mylist_as_json(options = {})
127
+ render options.merge(json: mylist.ids_by_type(exhibit_type))
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,20 @@
1
+ module Daimon
2
+ module Exhibition
3
+ module Exhibit
4
+ def acts_as_exhibit(to: :inquiry)
5
+ define_method "#{to}_params" do
6
+ {__send__("#{to}_key") => [__send__(self.class.primary_key)]}
7
+ end
8
+
9
+ define_method "#{to}_key" do
10
+ inquiry_class = ::Daimon::Exhibition::Mapping.detect_inquiry_by(self.class)
11
+ type = ::Daimon::Exhibition::Mapping.class_to_type(self.class)
12
+
13
+ inquiry_class.exhibit_writer_for(type)
14
+ end
15
+
16
+ ::Daimon::Exhibition::Mapping.register(self, to)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ module Daimon
2
+ module Exhibition
3
+ module Inquiry
4
+ def acts_as_inquiry(to: , via: nil)
5
+ extend Writier
6
+
7
+ via ||= "#{to}_ids"
8
+ exhibits_writers[to] = via.to_sym
9
+ end
10
+
11
+ module Writier
12
+ def exhibit_writer_for(type)
13
+ exhibits_writers[type]
14
+ end
15
+
16
+ private
17
+
18
+ def exhibits_writers
19
+ @exhibits_writers ||= {}
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,56 @@
1
+ module Daimon
2
+ module Exhibition
3
+ module Mapping
4
+ class << self
5
+ def register(klass, inquiry_type)
6
+ mapping[klass] = inquiry_type
7
+ end
8
+
9
+ def detect_inquiry_by(type)
10
+ inquiry_type = detect_inquiry_type_by(type)
11
+
12
+ type_to_class(inquiry_type)
13
+ end
14
+
15
+ def detect_inquiry_type_by(type)
16
+ klass =
17
+ case type
18
+ when Symbol
19
+ type_to_class(type)
20
+ when Class
21
+ type
22
+ else
23
+ nil
24
+ end
25
+
26
+ raise "The exhibit class `#{type}` is missing." unless klass
27
+
28
+ inquiry_type = mapping[klass]
29
+ raise "The inquiry class for `#{type.inspect}` is missing. The registered exhibit types are: (#{mapping.keys.join(', ')})" unless inquiry_type
30
+
31
+ inquiry_type
32
+ end
33
+
34
+ def detect_exhibits_by(type)
35
+ raise "Unregistered exhibit type: `#{type.inspect}`. The registered exhibit types are: (#{mapping.keys.join(', ')})" unless mapping.keys.any? {|klass| klass.model_name.param_key == type.to_s }
36
+
37
+ type_to_class(type)
38
+ end
39
+
40
+ def class_to_type(klass)
41
+ klass.model_name.param_key.to_sym
42
+ end
43
+
44
+ def type_to_class(type)
45
+ type.to_s.classify.safe_constantize
46
+ end
47
+
48
+ private
49
+
50
+ def mapping
51
+ @mapping ||= {}
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,80 @@
1
+ module Daimon
2
+ module Exhibition
3
+ # TODO Depends on `primary_key`, not an `id`.
4
+
5
+ class Mylist
6
+ class << self
7
+ def load_from_serialized(serialized)
8
+ new(serialized)
9
+ end
10
+ end
11
+
12
+ def initialize(ids = nil)
13
+ @ids = (ids || {}).with_indifferent_access
14
+ end
15
+
16
+ def serialize
17
+ @ids.dup
18
+ end
19
+
20
+ def ids_by_type(type = nil)
21
+ if type
22
+ # To keep key for type.
23
+ {type => []}.with_indifferent_access.merge(@ids.deep_dup)
24
+ else
25
+ @ids.deep_dup
26
+ end
27
+ end
28
+
29
+ def count_of(type)
30
+ @ids[type].count
31
+ end
32
+
33
+ def count
34
+ @ids.values.flatten.count
35
+ end
36
+
37
+ def has_item?(type = nil)
38
+ (type ? count_of(type) : count) > 0
39
+ end
40
+
41
+ def empty?
42
+ !has_item?
43
+ end
44
+
45
+ def exhibits_of(type)
46
+ Mapping.detect_exhibits_by(type).where(id: @ids[type])
47
+ end
48
+
49
+ def include?(item)
50
+ ids_for(item).include?(item.id)
51
+ end
52
+
53
+ def add(item)
54
+ ids_for(item).push(item.id) unless include?(item)
55
+ end
56
+
57
+ def delete(item)
58
+ ids_for(item).delete(item.id)
59
+ end
60
+
61
+ def clear(type = nil)
62
+ if type
63
+ @ids[type]&.clear
64
+ else
65
+ @ids.clear
66
+ end
67
+ end
68
+
69
+ private
70
+
71
+ def ids_for(item)
72
+ @ids[type_of(item)] ||= []
73
+ end
74
+
75
+ def type_of(item)
76
+ Mapping.class_to_type(item.class)
77
+ end
78
+ end
79
+ end
80
+ end