hyrax 3.0.0.pre.rc2 → 3.0.0.pre.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (514) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +5 -5
  3. data/.dassie/.env +4 -0
  4. data/.dassie/.gitignore +27 -0
  5. data/.dassie/Gemfile +57 -0
  6. data/.dassie/README.md +3 -0
  7. data/.dassie/Rakefile +6 -0
  8. data/.dassie/app/actors/hyrax/actors/generic_work_actor.rb +8 -0
  9. data/.dassie/app/actors/hyrax/actors/namespaced_works/nested_work_actor.rb +8 -0
  10. data/.dassie/app/assets/config/manifest.js +3 -0
  11. data/.dassie/app/assets/images/.keep +0 -0
  12. data/.dassie/app/assets/images/unauthorized.png +0 -0
  13. data/.dassie/app/assets/images/us_404.svg +91 -0
  14. data/.dassie/app/assets/javascripts/application.js +26 -0
  15. data/.dassie/app/assets/javascripts/blacklight_gallery.js +1 -0
  16. data/.dassie/app/assets/javascripts/cable.js +13 -0
  17. data/.dassie/app/assets/javascripts/channels/.keep +0 -0
  18. data/.dassie/app/assets/javascripts/openseadragon.js +2 -0
  19. data/.dassie/app/assets/stylesheets/application.css +16 -0
  20. data/.dassie/app/assets/stylesheets/hyrax.scss +17 -0
  21. data/.dassie/app/assets/stylesheets/openseadragon.css +3 -0
  22. data/.dassie/app/channels/application_cable/channel.rb +4 -0
  23. data/.dassie/app/channels/application_cable/connection.rb +4 -0
  24. data/.dassie/app/controllers/application_controller.rb +14 -0
  25. data/.dassie/app/controllers/catalog_controller.rb +300 -0
  26. data/.dassie/app/controllers/concerns/.keep +0 -0
  27. data/.dassie/app/controllers/hyrax/generic_works_controller.rb +14 -0
  28. data/.dassie/app/controllers/hyrax/monographs_controller.rb +17 -0
  29. data/.dassie/app/controllers/hyrax/namespaced_works/nested_works_controller.rb +14 -0
  30. data/.dassie/app/forms/hyrax/generic_work_form.rb +9 -0
  31. data/.dassie/app/forms/hyrax/namespaced_works/nested_work_form.rb +9 -0
  32. data/.dassie/app/forms/monograph_form.rb +20 -0
  33. data/.dassie/app/helpers/application_helper.rb +2 -0
  34. data/.dassie/app/helpers/hyrax_helper.rb +6 -0
  35. data/.dassie/app/indexers/generic_work_indexer.rb +18 -0
  36. data/.dassie/app/indexers/monograph_indexer.rb +16 -0
  37. data/.dassie/app/indexers/namespaced_works/nested_work_indexer.rb +18 -0
  38. data/.dassie/app/jobs/application_job.rb +2 -0
  39. data/.dassie/app/mailers/application_mailer.rb +4 -0
  40. data/.dassie/app/models/ability.rb +21 -0
  41. data/.dassie/app/models/application_record.rb +3 -0
  42. data/.dassie/app/models/collection.rb +8 -0
  43. data/.dassie/app/models/concerns/.keep +0 -0
  44. data/.dassie/app/models/file_set.rb +5 -0
  45. data/.dassie/app/models/generic_work.rb +14 -0
  46. data/.dassie/app/models/monograph.rb +8 -0
  47. data/.dassie/app/models/namespaced_works/nested_work.rb +16 -0
  48. data/.dassie/app/models/qa.rb +5 -0
  49. data/.dassie/app/models/qa/local_authority.rb +2 -0
  50. data/.dassie/app/models/qa/local_authority_entry.rb +3 -0
  51. data/.dassie/app/models/search_builder.rb +16 -0
  52. data/.dassie/app/models/solr_document.rb +28 -0
  53. data/.dassie/app/models/time_span.rb +22 -0
  54. data/.dassie/app/models/user.rb +26 -0
  55. data/.dassie/app/presenters/hyrax/generic_work_presenter.rb +6 -0
  56. data/.dassie/app/presenters/hyrax/namespaced_works/nested_work_presenter.rb +6 -0
  57. data/.dassie/app/views/hyrax/generic_works/_generic_work.html.erb +2 -0
  58. data/.dassie/app/views/hyrax/monographs/_monograph.html.erb +2 -0
  59. data/.dassie/app/views/hyrax/namespaced_works/nested_works/_nested_work.html.erb +2 -0
  60. data/.dassie/app/views/layouts/application.html.erb +15 -0
  61. data/.dassie/app/views/layouts/mailer.html.erb +13 -0
  62. data/.dassie/app/views/layouts/mailer.text.erb +1 -0
  63. data/.dassie/bin/bundle +3 -0
  64. data/.dassie/bin/rails +9 -0
  65. data/.dassie/bin/rake +9 -0
  66. data/.dassie/bin/setup +36 -0
  67. data/.dassie/bin/spring +17 -0
  68. data/.dassie/bin/update +31 -0
  69. data/.dassie/bin/yarn +11 -0
  70. data/.dassie/config.ru +5 -0
  71. data/.dassie/config/analytics.yml +6 -0
  72. data/.dassie/config/application.rb +22 -0
  73. data/.dassie/config/arkivo.yml +6 -0
  74. data/.dassie/config/authorities/licenses.yml +46 -0
  75. data/.dassie/config/authorities/resource_types.yml +41 -0
  76. data/.dassie/config/authorities/rights_statements.yml +37 -0
  77. data/.dassie/config/blacklight.yml +9 -0
  78. data/.dassie/config/boot.rb +4 -0
  79. data/.dassie/config/browse_everything_providers.yml +2 -0
  80. data/.dassie/config/cable.yml +10 -0
  81. data/.dassie/config/credentials.yml.enc +1 -0
  82. data/.dassie/config/environment.rb +5 -0
  83. data/.dassie/config/environments/development.rb +69 -0
  84. data/.dassie/config/environments/production.rb +94 -0
  85. data/.dassie/config/environments/test.rb +51 -0
  86. data/.dassie/config/fedora.yml +15 -0
  87. data/.dassie/config/initializers/arkivo_constraint.rb +12 -0
  88. data/.dassie/config/initializers/assets.rb +2 -0
  89. data/.dassie/config/initializers/clamav.rb +2 -0
  90. data/.dassie/config/initializers/cookies_serializer.rb +1 -0
  91. data/.dassie/config/initializers/devise.rb +13 -0
  92. data/.dassie/config/initializers/filter_parameter_logging.rb +1 -0
  93. data/.dassie/config/initializers/hydra_config.rb +6 -0
  94. data/.dassie/config/initializers/hyrax.rb +48 -0
  95. data/.dassie/config/initializers/mailboxer.rb +21 -0
  96. data/.dassie/config/initializers/mime_types.rb +4 -0
  97. data/.dassie/config/initializers/mini_magick.rb +6 -0
  98. data/.dassie/config/initializers/redis_config.rb +4 -0
  99. data/.dassie/config/initializers/riiif.rb +27 -0
  100. data/.dassie/config/initializers/simple_form.rb +28 -0
  101. data/.dassie/config/initializers/simple_form_bootstrap.rb +143 -0
  102. data/.dassie/config/initializers/wrap_parameters.rb +3 -0
  103. data/.dassie/config/locales/blacklight.en.yml +3 -0
  104. data/.dassie/config/locales/devise.en.yml +65 -0
  105. data/.dassie/config/locales/generic_work.de.yml +8 -0
  106. data/.dassie/config/locales/generic_work.en.yml +8 -0
  107. data/.dassie/config/locales/generic_work.es.yml +10 -0
  108. data/.dassie/config/locales/generic_work.fr.yml +8 -0
  109. data/.dassie/config/locales/generic_work.it.yml +8 -0
  110. data/.dassie/config/locales/generic_work.pt-BR.yml +8 -0
  111. data/.dassie/config/locales/generic_work.zh.yml +10 -0
  112. data/.dassie/config/locales/hyrax.de.yml +58 -0
  113. data/.dassie/config/locales/hyrax.en.yml +58 -0
  114. data/.dassie/config/locales/hyrax.es.yml +58 -0
  115. data/.dassie/config/locales/hyrax.fr.yml +58 -0
  116. data/.dassie/config/locales/hyrax.it.yml +58 -0
  117. data/.dassie/config/locales/hyrax.pt-BR.yml +58 -0
  118. data/.dassie/config/locales/hyrax.zh.yml +58 -0
  119. data/.dassie/config/locales/namespaced_works/nested_work.de.yml +8 -0
  120. data/.dassie/config/locales/namespaced_works/nested_work.en.yml +8 -0
  121. data/.dassie/config/locales/namespaced_works/nested_work.es.yml +10 -0
  122. data/.dassie/config/locales/namespaced_works/nested_work.fr.yml +8 -0
  123. data/.dassie/config/locales/namespaced_works/nested_work.it.yml +8 -0
  124. data/.dassie/config/locales/namespaced_works/nested_work.pt-BR.yml +8 -0
  125. data/.dassie/config/locales/namespaced_works/nested_work.zh.yml +10 -0
  126. data/.dassie/config/metadata/monograph.yaml +55 -0
  127. data/.dassie/config/metadata/sample_metadata.yaml +3 -0
  128. data/.dassie/config/puma.rb +6 -0
  129. data/.dassie/config/redis.yml +9 -0
  130. data/.dassie/config/role_map.yml +24 -0
  131. data/.dassie/config/routes.rb +35 -0
  132. data/.dassie/config/solr.yml +7 -0
  133. data/.dassie/config/spring.rb +6 -0
  134. data/.dassie/config/storage.yml +7 -0
  135. data/.dassie/config/tinymce.yml +12 -0
  136. data/.dassie/config/uv/uv-config.json +3 -0
  137. data/.dassie/config/uv/uv.html +87 -0
  138. data/.dassie/config/valkyrie_index.yml +12 -0
  139. data/.dassie/config/workflows/default_workflow.json +21 -0
  140. data/.dassie/config/workflows/mediated_deposit_workflow.json +76 -0
  141. data/.dassie/config/zotero.yml +6 -0
  142. data/.dassie/db/migrate/20200821212749_create_searches.blacklight.rb +17 -0
  143. data/.dassie/db/migrate/20200821212750_create_bookmarks.blacklight.rb +19 -0
  144. data/.dassie/db/migrate/20200821212751_add_polymorphic_type_to_bookmarks.blacklight.rb +9 -0
  145. data/.dassie/db/migrate/20200821212803_devise_create_users.rb +44 -0
  146. data/.dassie/db/migrate/20200821212806_add_devise_guests_to_users.rb +15 -0
  147. data/.dassie/db/migrate/20200821212828_create_version_committers.hyrax.rb +15 -0
  148. data/.dassie/db/migrate/20200821212829_create_checksum_audit_logs.hyrax.rb +19 -0
  149. data/.dassie/db/migrate/20200821212830_create_single_use_links.hyrax.rb +12 -0
  150. data/.dassie/db/migrate/20200821212831_add_social_to_users.hyrax.rb +13 -0
  151. data/.dassie/db/migrate/20200821212832_add_ldap_attrs_to_user.hyrax.rb +27 -0
  152. data/.dassie/db/migrate/20200821212833_add_avatars_to_users.hyrax.rb +15 -0
  153. data/.dassie/db/migrate/20200821212834_create_trophies.hyrax.rb +10 -0
  154. data/.dassie/db/migrate/20200821212835_add_linkedin_to_users.hyrax.rb +5 -0
  155. data/.dassie/db/migrate/20200821212836_create_tinymce_assets.hyrax.rb +8 -0
  156. data/.dassie/db/migrate/20200821212837_create_content_blocks.hyrax.rb +10 -0
  157. data/.dassie/db/migrate/20200821212838_create_featured_works.hyrax.rb +12 -0
  158. data/.dassie/db/migrate/20200821212839_add_external_key_to_content_blocks.hyrax.rb +6 -0
  159. data/.dassie/db/migrate/20200821212840_create_proxy_deposit_rights.hyrax.rb +10 -0
  160. data/.dassie/db/migrate/20200821212841_create_proxy_deposit_requests.hyrax.rb +15 -0
  161. data/.dassie/db/migrate/20200821212842_create_file_view_stats.hyrax.rb +12 -0
  162. data/.dassie/db/migrate/20200821212843_create_file_download_stats.hyrax.rb +12 -0
  163. data/.dassie/db/migrate/20200821212844_add_orcid_to_users.hyrax.rb +5 -0
  164. data/.dassie/db/migrate/20200821212845_create_user_stats.hyrax.rb +19 -0
  165. data/.dassie/db/migrate/20200821212846_create_work_view_stats.hyrax.rb +12 -0
  166. data/.dassie/db/migrate/20200821212847_add_works_to_user_stats.hyrax.rb +13 -0
  167. data/.dassie/db/migrate/20200821212848_change_trophy_generic_file_id_to_work_id.hyrax.rb +5 -0
  168. data/.dassie/db/migrate/20200821212849_change_proxy_deposit_generic_file_id_to_work_id.hyrax.rb +5 -0
  169. data/.dassie/db/migrate/20200821212850_change_audit_log_generic_file_id_to_file_set_id.hyrax.rb +5 -0
  170. data/.dassie/db/migrate/20200821212851_change_proxy_deposit_request_generic_file_id_to_work_id.hyrax.rb +5 -0
  171. data/.dassie/db/migrate/20200821212852_create_uploaded_files.hyrax.rb +10 -0
  172. data/.dassie/db/migrate/20200821212853_create_features.hyrax.rb +10 -0
  173. data/.dassie/db/migrate/20200821212854_create_operations.hyrax.rb +23 -0
  174. data/.dassie/db/migrate/20200821212855_change_featured_work_generic_file_id_to_work_id.hyrax.rb +6 -0
  175. data/.dassie/db/migrate/20200821212856_add_arkivo_to_users.hyrax.rb +8 -0
  176. data/.dassie/db/migrate/20200821212857_create_sipity.hyrax.rb +163 -0
  177. data/.dassie/db/migrate/20200821212858_create_sipity_workflow_methods.hyrax.rb +10 -0
  178. data/.dassie/db/migrate/20200821212859_create_permission_template.hyrax.rb +11 -0
  179. data/.dassie/db/migrate/20200821212860_create_permission_template_access.hyrax.rb +11 -0
  180. data/.dassie/db/migrate/20200821212861_add_release_to_permission_templates.hyrax.rb +6 -0
  181. data/.dassie/db/migrate/20200821212862_add_permission_template_to_sipity_workflow.hyrax.rb +26 -0
  182. data/.dassie/db/migrate/20200821212863_tidy_up_because_of_bad_exception.hyrax.rb +13 -0
  183. data/.dassie/db/migrate/20200821212864_add_allows_access_grant_to_workflow.hyrax.rb +5 -0
  184. data/.dassie/db/migrate/20200821212865_change_checksum_audit_log.hyrax.rb +18 -0
  185. data/.dassie/db/migrate/20200821212866_create_job_io_wrappers.hyrax.rb +15 -0
  186. data/.dassie/db/migrate/20200821212867_create_collection_types.hyrax.rb +17 -0
  187. data/.dassie/db/migrate/20200821212868_update_collection_type_column_names.hyrax.rb +9 -0
  188. data/.dassie/db/migrate/20200821212869_update_collection_type_column_options.hyrax.rb +17 -0
  189. data/.dassie/db/migrate/20200821212870_create_collection_branding_infos.hyrax.rb +15 -0
  190. data/.dassie/db/migrate/20200821212871_create_collection_type_participants.hyrax.rb +11 -0
  191. data/.dassie/db/migrate/20200821212872_rename_admin_set_id_to_source_id.hyrax.rb +5 -0
  192. data/.dassie/db/migrate/20200821212873_add_preferred_locale_to_users.hyrax.rb +5 -0
  193. data/.dassie/db/migrate/20200821212874_add_collection_type_sharing_options.hyrax.rb +5 -0
  194. data/.dassie/db/migrate/20200821212875_add_unique_constraint_to_permission_template_accesses.hyrax.rb +8 -0
  195. data/.dassie/db/migrate/20200821212876_add_branding_to_collection_type.hyrax.rb +5 -0
  196. data/.dassie/db/migrate/20200821212877_add_badge_color_to_collection_types.hyrax.rb +5 -0
  197. data/.dassie/db/migrate/20200821212878_update_single_use_links_column_names.hyrax.rb +6 -0
  198. data/.dassie/db/migrate/20200821212879_change_sipity_entity_specific_responsibility.hyrax.rb +9 -0
  199. data/.dassie/db/migrate/20200821212880_create_mailboxer.mailboxer_engine.rb +65 -0
  200. data/.dassie/db/migrate/20200821212881_add_conversation_optout.mailboxer_engine.rb +15 -0
  201. data/.dassie/db/migrate/20200821212882_add_missing_indices.mailboxer_engine.rb +20 -0
  202. data/.dassie/db/migrate/20200821212883_add_delivery_tracking_info_to_mailboxer_receipts.mailboxer_engine.rb +8 -0
  203. data/.dassie/db/migrate/20200821212884_create_qa_local_authorities.rb +10 -0
  204. data/.dassie/db/migrate/20200821212885_create_qa_local_authority_entries.rb +12 -0
  205. data/.dassie/db/migrate/20200821212902_create_minter_states.noid_rails_engine.rb +17 -0
  206. data/.dassie/db/migrate/20200821212903_rename_minter_state_random_to_rand.noid_rails_engine.rb +8 -0
  207. data/.dassie/db/schema.rb +563 -0
  208. data/.dassie/db/seeds.rb +14 -0
  209. data/.dassie/lib/assets/.keep +0 -0
  210. data/.dassie/lib/tasks/.keep +0 -0
  211. data/.dassie/log/.keep +0 -0
  212. data/.dassie/package.json +17 -0
  213. data/.dassie/public/404.html +67 -0
  214. data/.dassie/public/422.html +67 -0
  215. data/.dassie/public/500.html +66 -0
  216. data/.dassie/public/apple-touch-icon-precomposed.png +0 -0
  217. data/.dassie/public/apple-touch-icon.png +0 -0
  218. data/.dassie/public/favicon.ico +0 -0
  219. data/.dassie/public/robots.txt +1 -0
  220. data/.dassie/solr/conf/_rest_managed.json +3 -0
  221. data/.dassie/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  222. data/.dassie/solr/conf/schema.xml +367 -0
  223. data/.dassie/solr/conf/scripts.conf +24 -0
  224. data/.dassie/solr/conf/solrconfig.xml +208 -0
  225. data/.dassie/solr/conf/stopwords.txt +58 -0
  226. data/.dassie/solr/conf/stopwords_en.txt +58 -0
  227. data/.dassie/solr/conf/xslt/example.xsl +132 -0
  228. data/.dassie/solr/conf/xslt/example_atom.xsl +67 -0
  229. data/.dassie/solr/conf/xslt/example_rss.xsl +66 -0
  230. data/.dassie/solr/conf/xslt/luke.xsl +337 -0
  231. data/.dassie/solr/sample_solr_documents.yml +2692 -0
  232. data/.dassie/storage/.keep +0 -0
  233. data/.dassie/values.stage.yaml +7 -0
  234. data/.dassie/values.yaml +15 -0
  235. data/.dassie/vendor/.keep +0 -0
  236. data/.dockerignore +11 -0
  237. data/.env +26 -0
  238. data/.github/CODE_OF_CONDUCT.md +4 -4
  239. data/.github/CONTRIBUTING.md +1 -1
  240. data/.github/SUPPORT.md +13 -1
  241. data/.gitignore +1 -1
  242. data/.regen +1 -1
  243. data/.rubocop.yml +1 -0
  244. data/.rubocop_fixme.yml +4 -0
  245. data/CODE_OF_CONDUCT.md +4 -4
  246. data/CONTAINERS.md +148 -0
  247. data/CONTRIBUTING.md +1 -1
  248. data/Dockerfile +75 -0
  249. data/Gemfile +26 -35
  250. data/README.md +61 -288
  251. data/app/actors/hyrax/actors/attach_members_actor.rb +7 -5
  252. data/app/actors/hyrax/actors/base_actor.rb +0 -1
  253. data/app/actors/hyrax/actors/create_with_files_ordered_members_actor.rb +28 -28
  254. data/app/actors/hyrax/actors/create_with_remote_files_actor.rb +2 -3
  255. data/app/actors/hyrax/actors/create_with_remote_files_ordered_members_actor.rb +23 -28
  256. data/app/actors/hyrax/actors/default_admin_set_actor.rb +20 -21
  257. data/app/actors/hyrax/actors/file_actor.rb +32 -32
  258. data/app/actors/hyrax/actors/file_set_actor.rb +4 -15
  259. data/app/actors/hyrax/actors/initialize_workflow_actor.rb +8 -0
  260. data/app/actors/hyrax/actors/transfer_request_actor.rb +5 -0
  261. data/app/assets/javascripts/hyrax.js +1 -0
  262. data/app/assets/javascripts/hyrax/skip_to_content.js +15 -0
  263. data/app/assets/stylesheets/hyrax/_usage-stats.scss +1 -1
  264. data/app/authorities/qa/authorities/collections.rb +18 -8
  265. data/app/authorities/qa/authorities/find_works.rb +20 -5
  266. data/app/controllers/concerns/hyrax/collections_controller_behavior.rb +15 -6
  267. data/app/controllers/concerns/hyrax/works_controller_behavior.rb +62 -31
  268. data/app/controllers/hyrax/dashboard/collections_controller.rb +22 -12
  269. data/app/controllers/hyrax/dashboard/works_controller.rb +3 -4
  270. data/app/controllers/hyrax/file_sets_controller.rb +19 -10
  271. data/app/controllers/hyrax/homepage_controller.rb +11 -11
  272. data/app/controllers/hyrax/my/collections_controller.rb +5 -6
  273. data/app/controllers/hyrax/my/highlights_controller.rb +2 -3
  274. data/app/controllers/hyrax/my/shares_controller.rb +2 -3
  275. data/app/controllers/hyrax/my/works_controller.rb +1 -6
  276. data/app/controllers/hyrax/my_controller.rb +10 -2
  277. data/app/controllers/hyrax/permissions_controller.rb +1 -0
  278. data/app/controllers/hyrax/single_use_links_viewer_controller.rb +11 -5
  279. data/app/controllers/hyrax/users_controller.rb +5 -10
  280. data/app/forms/hyrax/forms/failed_submission_form_wrapper.rb +136 -0
  281. data/app/forms/hyrax/forms/resource_form.rb +8 -4
  282. data/app/helpers/hyrax/collections_helper.rb +1 -1
  283. data/app/helpers/hyrax/dashboard_helper_behavior.rb +7 -2
  284. data/app/helpers/hyrax/embargo_helper.rb +5 -1
  285. data/app/helpers/hyrax/hyrax_helper_behavior.rb +10 -5
  286. data/app/helpers/hyrax/lease_helper.rb +5 -1
  287. data/app/indexers/hyrax/pcdm_collection_indexer.rb +21 -0
  288. data/app/indexers/hyrax/resource_indexer.rb +3 -1
  289. data/app/indexers/hyrax/valkyrie_collection_indexer.rb +3 -12
  290. data/app/indexers/hyrax/valkyrie_indexer.rb +45 -17
  291. data/app/indexers/hyrax/valkyrie_work_indexer.rb +16 -0
  292. data/app/jobs/attach_files_to_work_job.rb +3 -41
  293. data/app/jobs/embargo_expiry_job.rb +15 -0
  294. data/app/jobs/event_job.rb +14 -7
  295. data/app/jobs/hyrax/application_job.rb +6 -1
  296. data/app/jobs/import_url_job.rb +11 -5
  297. data/app/jobs/inherit_permissions_job.rb +6 -25
  298. data/app/jobs/lease_expiry_job.rb +15 -0
  299. data/app/models/admin_set.rb +1 -1
  300. data/app/models/concerns/hyrax/ability.rb +192 -21
  301. data/app/models/concerns/hyrax/ability/admin_set_ability.rb +0 -5
  302. data/app/models/concerns/hyrax/collection_behavior.rb +7 -13
  303. data/app/models/concerns/hyrax/permissions/writable.rb +2 -2
  304. data/app/models/concerns/hyrax/solr_document/characterization.rb +35 -2
  305. data/app/models/concerns/hyrax/solr_document_behavior.rb +37 -5
  306. data/app/models/hyrax/change_set.rb +5 -1
  307. data/app/models/hyrax/collection_type.rb +59 -22
  308. data/app/models/hyrax/event.rb +5 -7
  309. data/app/models/hyrax/file_metadata.rb +15 -4
  310. data/app/models/hyrax/pcdm_collection.rb +13 -0
  311. data/app/models/hyrax/uploaded_file.rb +9 -2
  312. data/app/models/hyrax/{active_job_proxy.rb → valkyrie_global_id_proxy.rb} +6 -5
  313. data/app/models/hyrax/virus_scanner.rb +2 -1
  314. data/app/models/hyrax/work.rb +1 -1
  315. data/app/models/sipity.rb +6 -0
  316. data/app/models/sipity/entity.rb +1 -1
  317. data/app/models/sipity/workflow.rb +23 -3
  318. data/app/presenters/hyrax/admin/repository_object_presenter.rb +7 -2
  319. data/app/presenters/hyrax/collection_presenter.rb +1 -1
  320. data/app/presenters/hyrax/file_set_presenter.rb +3 -0
  321. data/app/presenters/hyrax/iiif_manifest_presenter.rb +3 -3
  322. data/app/presenters/hyrax/permission_badge.rb +1 -1
  323. data/app/presenters/hyrax/presenter_factory.rb +0 -2
  324. data/app/presenters/hyrax/select_collection_type_presenter.rb +16 -3
  325. data/app/presenters/hyrax/select_type_presenter.rb +3 -2
  326. data/app/presenters/hyrax/stats_usage_presenter.rb +0 -1
  327. data/app/presenters/hyrax/work_show_presenter.rb +1 -1
  328. data/app/renderers/hyrax/renderers/attribute_renderer.rb +16 -6
  329. data/app/search_builders/hyrax/README.md +3 -3
  330. data/app/search_builders/hyrax/admin_admin_set_member_search_builder.rb +8 -2
  331. data/app/search_builders/hyrax/collection_member_search_builder.rb +21 -7
  332. data/app/search_builders/hyrax/dashboard/managed_search_filters.rb +1 -1
  333. data/app/search_builders/hyrax/dashboard/nested_collections_search_builder.rb +1 -1
  334. data/app/search_builders/hyrax/embargo_search_builder.rb +0 -1
  335. data/app/search_builders/hyrax/filter_by_type.rb +3 -1
  336. data/app/search_builders/hyrax/lease_search_builder.rb +0 -1
  337. data/app/search_builders/hyrax/nested_collections_parent_search_builder.rb +12 -2
  338. data/app/search_builders/hyrax/search_builder.rb +1 -4
  339. data/app/search_builders/hyrax/search_filters.rb +0 -2
  340. data/app/services/hyrax/access_control_list.rb +33 -2
  341. data/app/services/hyrax/adapters/nesting_index_adapter.rb +26 -7
  342. data/app/services/hyrax/admin_set_member_service.rb +18 -4
  343. data/{lib/hyrax/callbacks/registry.rb → app/services/hyrax/callbacks.rb} +23 -0
  344. data/app/services/hyrax/change_content_depositor_service.rb +4 -1
  345. data/app/services/hyrax/collection_member_service.rb +5 -1
  346. data/app/services/hyrax/collection_types/permissions_service.rb +0 -2
  347. data/app/services/hyrax/collections/collection_member_service.rb +44 -64
  348. data/app/services/hyrax/collections/managed_collections_service.rb +15 -2
  349. data/app/services/hyrax/collections/migration_service.rb +9 -3
  350. data/app/services/hyrax/collections/nested_collection_persistence_service.rb +1 -1
  351. data/app/services/hyrax/collections/nested_collection_query_service.rb +39 -19
  352. data/app/services/hyrax/collections/permissions_service.rb +0 -1
  353. data/app/services/hyrax/collections_service.rb +12 -12
  354. data/app/services/hyrax/custom_queries/find_collections_by_type.rb +1 -1
  355. data/app/services/hyrax/custom_queries/navigators/child_collections_navigator.rb +14 -3
  356. data/app/services/hyrax/custom_queries/navigators/child_filesets_navigator.rb +14 -3
  357. data/app/services/hyrax/custom_queries/navigators/child_works_navigator.rb +10 -3
  358. data/app/services/hyrax/custom_queries/navigators/collection_members.rb +1 -0
  359. data/app/services/hyrax/custom_queries/navigators/find_files.rb +3 -0
  360. data/app/services/hyrax/database_migrator.rb +13 -10
  361. data/app/services/hyrax/default_middleware_stack.rb +0 -6
  362. data/app/services/hyrax/ensure_well_formed_admin_set_service.rb +27 -0
  363. data/app/services/hyrax/file_set_fixity_check_service.rb +16 -17
  364. data/app/services/hyrax/file_set_type_service.rb +55 -0
  365. data/app/services/hyrax/graph_exporter.rb +64 -8
  366. data/app/services/hyrax/list_source_exporter.rb +16 -34
  367. data/app/services/hyrax/listeners.rb +22 -0
  368. data/app/services/hyrax/listeners/proxy_deposit_listener.rb +20 -0
  369. data/app/services/hyrax/listeners/workflow_listener.rb +36 -0
  370. data/app/services/hyrax/multiple_membership_checker.rb +2 -1
  371. data/app/services/hyrax/quick_classification_query.rb +2 -3
  372. data/app/services/hyrax/resource_visibility_propagator.rb +1 -1
  373. data/app/services/hyrax/search_service.rb +108 -0
  374. data/app/services/hyrax/simple_schema_loader.rb +3 -1
  375. data/app/services/hyrax/statistics/depositors/summary.rb +0 -1
  376. data/app/services/hyrax/statistics/system_stats.rb +0 -1
  377. data/app/services/hyrax/thumbnail_path_service.rb +6 -1
  378. data/app/services/hyrax/time_service.rb +10 -0
  379. data/app/services/hyrax/versioning_service.rb +4 -28
  380. data/app/services/hyrax/work_uploads_handler.rb +166 -0
  381. data/app/services/hyrax/workflow/action_taken_service.rb +14 -1
  382. data/app/services/hyrax/workflow/grant_edit_to_depositor.rb +3 -1
  383. data/app/services/hyrax/workflow/permission_generator.rb +14 -9
  384. data/app/services/hyrax/workflow/workflow_action_service.rb +1 -1
  385. data/app/services/hyrax/workflow/workflow_factory.rb +12 -10
  386. data/app/services/hyrax/working_directory.rb +0 -1
  387. data/app/services/hyrax/works/managed_works_service.rb +14 -2
  388. data/app/views/_controls.html.erb +1 -1
  389. data/app/views/hyrax/admin/collection_types/index.html.erb +1 -1
  390. data/app/views/hyrax/base/_member.html.erb +1 -1
  391. data/app/views/hyrax/base/_representative_media.html.erb +1 -1
  392. data/app/views/hyrax/base/iiif_viewers/_universal_viewer.html.erb +1 -1
  393. data/app/views/hyrax/base/show.html.erb +2 -2
  394. data/app/views/hyrax/batch_select/_add_button.html.erb +1 -1
  395. data/app/views/hyrax/collections/_default_group.html.erb +2 -0
  396. data/app/views/hyrax/collections/show.html.erb +1 -1
  397. data/app/views/hyrax/dashboard/works/_default_group.html.erb +2 -0
  398. data/app/views/hyrax/embargoes/_list_expired_active_embargoes.html.erb +1 -1
  399. data/app/views/hyrax/leases/_list_expired_active_leases.html.erb +2 -1
  400. data/app/views/hyrax/my/works/_default_group.html.erb +2 -0
  401. data/app/views/layouts/hyrax.html.erb +0 -15
  402. data/bin/db-migrate-seed.sh +9 -0
  403. data/bin/db-wait.sh +14 -0
  404. data/bin/hyrax-entrypoint.sh +15 -0
  405. data/chart/fcrepo/.gitignore +2 -0
  406. data/chart/fcrepo/.helmignore +23 -0
  407. data/chart/fcrepo/Chart.yaml +11 -0
  408. data/chart/fcrepo/README.md +50 -0
  409. data/chart/fcrepo/templates/NOTES.txt +21 -0
  410. data/chart/fcrepo/templates/_helpers.tpl +68 -0
  411. data/chart/fcrepo/templates/configmap-env.yaml +19 -0
  412. data/chart/fcrepo/templates/deployment.yaml +109 -0
  413. data/chart/fcrepo/templates/ingress.yaml +41 -0
  414. data/chart/fcrepo/templates/pvc.yaml +20 -0
  415. data/chart/fcrepo/templates/secret.yaml +12 -0
  416. data/chart/fcrepo/templates/service.yaml +15 -0
  417. data/chart/fcrepo/templates/serviceaccount.yaml +12 -0
  418. data/chart/fcrepo/templates/tests/test-connection.yaml +15 -0
  419. data/chart/fcrepo/values.yaml +79 -0
  420. data/chart/hyrax/.gitignore +2 -0
  421. data/chart/hyrax/.helmignore +23 -0
  422. data/chart/hyrax/Chart.yaml +27 -0
  423. data/chart/hyrax/README.md +69 -0
  424. data/chart/hyrax/templates/NOTES.txt +21 -0
  425. data/chart/hyrax/templates/_helpers.tpl +92 -0
  426. data/chart/hyrax/templates/configmap-env.yaml +32 -0
  427. data/chart/hyrax/templates/deployment.yaml +79 -0
  428. data/chart/hyrax/templates/fcrepo-secret.yaml +13 -0
  429. data/chart/hyrax/templates/hpa.yaml +28 -0
  430. data/chart/hyrax/templates/ingress.yaml +41 -0
  431. data/chart/hyrax/templates/secrets.yaml +12 -0
  432. data/chart/hyrax/templates/service.yaml +15 -0
  433. data/chart/hyrax/templates/serviceaccount.yaml +12 -0
  434. data/chart/hyrax/templates/tests/test-connection.yaml +15 -0
  435. data/chart/hyrax/values.yaml +97 -0
  436. data/config/initializers/indexing_adapter_initializer.rb +7 -12
  437. data/config/initializers/listeners.rb +2 -0
  438. data/config/locales/hyrax.en.yml +1 -1
  439. data/config/metadata/basic_metadata.yaml +13 -0
  440. data/db/seeds.rb +20 -0
  441. data/docker-compose.yml +132 -0
  442. data/documentation/developing-your-hyrax-based-app.md +271 -0
  443. data/documentation/legacyREADME.md +336 -0
  444. data/documentation/note-about-versions.md +15 -0
  445. data/hyrax.gemspec +7 -8
  446. data/lib/generators/hyrax/templates/config/initializers/hyrax.rb +4 -6
  447. data/lib/generators/hyrax/templates/config/locales/hyrax.es.yml +1 -1
  448. data/lib/generators/hyrax/templates/db/seeds.rb +16 -14
  449. data/lib/generators/hyrax/templates/uv.html +1 -1
  450. data/lib/generators/hyrax/work_resource/templates/controller.rb.erb +0 -5
  451. data/lib/generators/hyrax/work_resource/templates/form.rb.erb +1 -1
  452. data/lib/generators/hyrax/work_resource/templates/work.html.erb_spec.rb.erb +3 -2
  453. data/lib/hyrax.rb +17 -0
  454. data/lib/hyrax/configuration.rb +340 -200
  455. data/lib/hyrax/event_store.rb +5 -0
  456. data/lib/hyrax/form_fields.rb +1 -1
  457. data/lib/hyrax/indexer.rb +19 -3
  458. data/lib/hyrax/publisher.rb +71 -2
  459. data/lib/hyrax/resource_sync/change_list_writer.rb +1 -1
  460. data/lib/hyrax/resource_sync/resource_list_writer.rb +1 -1
  461. data/lib/hyrax/schema.rb +2 -2
  462. data/lib/hyrax/specs/capybara.rb +98 -0
  463. data/lib/hyrax/specs/clamav.rb +15 -0
  464. data/lib/hyrax/specs/disable_animations_in_test_environment.rb +53 -0
  465. data/lib/hyrax/specs/engine_routes.rb +11 -0
  466. data/lib/hyrax/specs/shared_specs/change_set.rb +11 -0
  467. data/lib/hyrax/specs/shared_specs/factories/strategies/json_strategy.rb +13 -0
  468. data/lib/hyrax/specs/shared_specs/factories/strategies/valkyrie_resource.rb +0 -11
  469. data/lib/hyrax/specs/shared_specs/hydra_works.rb +6 -0
  470. data/lib/hyrax/specs/shared_specs/indexers.rb +22 -5
  471. data/lib/hyrax/specs/shared_specs/metadata.rb +64 -0
  472. data/lib/hyrax/specs/spy_listener.rb +52 -26
  473. data/lib/hyrax/transactions/container.rb +13 -1
  474. data/lib/hyrax/transactions/steps/add_file_sets.rb +35 -0
  475. data/lib/hyrax/transactions/steps/save.rb +10 -4
  476. data/lib/hyrax/transactions/steps/save_access_control.rb +29 -0
  477. data/lib/hyrax/transactions/steps/set_default_admin_set.rb +1 -1
  478. data/lib/hyrax/transactions/update_work.rb +3 -1
  479. data/lib/hyrax/transactions/work_create.rb +3 -1
  480. data/lib/hyrax/version.rb +1 -1
  481. data/lib/tasks/collection_type_global_id.rake +22 -0
  482. data/lib/tasks/default_admin_set.rake +5 -0
  483. data/lib/wings.rb +1 -1
  484. data/lib/wings/active_fedora_converter.rb +71 -123
  485. data/lib/wings/active_fedora_converter/default_work.rb +129 -0
  486. data/lib/wings/active_fedora_converter/nested_resource.rb +25 -0
  487. data/lib/wings/attribute_transformer.rb +28 -1
  488. data/lib/wings/converter_value_mapper.rb +70 -3
  489. data/lib/wings/model_registry.rb +4 -3
  490. data/lib/wings/model_transformer.rb +25 -7
  491. data/lib/wings/orm_converter.rb +19 -23
  492. data/lib/wings/services/custom_queries/find_collections_by_type.rb +1 -1
  493. data/lib/wings/services/custom_queries/find_file_metadata.rb +65 -38
  494. data/lib/wings/services/file_converter_service.rb +6 -55
  495. data/lib/wings/services/file_metadata_builder.rb +12 -8
  496. data/lib/wings/setup.rb +56 -9
  497. data/lib/wings/transformer_value_mapper.rb +1 -0
  498. data/lib/wings/valkyrie/metadata_adapter.rb +2 -2
  499. data/lib/wings/valkyrie/persister.rb +13 -14
  500. data/lib/wings/valkyrie/storage.rb +94 -0
  501. data/tasks/benchmark.rake +56 -0
  502. data/template.rb +1 -3
  503. metadata +346 -54
  504. data/lib/hyrax/callbacks.rb +0 -27
  505. data/lib/wings/hydra/pcdm/models/concerns/collection_valkyrie_behavior.rb +0 -28
  506. data/lib/wings/hydra/pcdm/models/concerns/object_valkyrie_behavior.rb +0 -28
  507. data/lib/wings/hydra/pcdm/models/concerns/pcdm_valkyrie_behavior.rb +0 -171
  508. data/lib/wings/hydra/works/models/concerns/collection_valkyrie_behavior.rb +0 -31
  509. data/lib/wings/hydra/works/models/concerns/file_set_valkyrie_behavior.rb +0 -31
  510. data/lib/wings/hydra/works/models/concerns/work_valkyrie_behavior.rb +0 -60
  511. data/lib/wings/models/concerns/collection_behavior.rb +0 -39
  512. data/lib/wings/models/multi_checksum.rb +0 -18
  513. data/lib/wings/services/id_converter_service.rb +0 -15
  514. data/lib/wings/valkyrie/storage/active_fedora.rb +0 -27
File without changes
@@ -0,0 +1,7 @@
1
+ ingress:
2
+ enabled: true
3
+ annotations: {}
4
+ hosts:
5
+ - host: "staging.dassie.dld.library.ucsb.edu"
6
+ paths: ["/"]
7
+ tls: []
@@ -0,0 +1,15 @@
1
+ image:
2
+ repository: samveralabs/dassie
3
+ pullPolicy: IfNotPresent
4
+ tag: "stable"
5
+
6
+ ingress:
7
+ enabled: true
8
+ annotations: {}
9
+ hosts:
10
+ - host: "dassie.dld.library.ucsb.edu"
11
+ paths: ["/"]
12
+ tls: []
13
+
14
+ memcached:
15
+ enabled: true
File without changes
@@ -0,0 +1,11 @@
1
+ Dockerfile
2
+
3
+ .git
4
+ ./tmp
5
+ ./log
6
+ .internal_test_app/*
7
+
8
+ *.rdb
9
+
10
+ artifacts/*
11
+ coverage/*
data/.env ADDED
@@ -0,0 +1,26 @@
1
+ CAPYBARA_SERVER=http://app:3010
2
+ CHROME_HEADLESS_MODE=false
3
+ DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
4
+ DATABASE_TEST_URL=postgresql://hyrax_user:hyrax_password@postgres/hyrax_test?pool=5
5
+ DATABASE_URL=postgresql://hyrax_user:hyrax_password@postgres/hyrax?pool=5
6
+ DB_PORT=5432
7
+ DB_HOST=postgres
8
+ FCREPO_PORT=8080
9
+ FCREPO_HOST=fcrepo
10
+ FCREPO_REST_PATH=fcrepo/rest
11
+ FCREPO_TEST_BASE_PATH=/test
12
+ HUB_URL=http://chrome:4444/wd/hub
13
+ HYRAX_DERIVATIVES_PATH=/app/samvera/hyrax-webapp/derivatives/
14
+ HYRAX_ENGINE_PATH=/app/samvera/hyrax-engine
15
+ HYRAX_UPLOAD_PATH=/app/samvera/hyrax-webapp/uploads/
16
+ IN_DOCKER=true
17
+ RACK_ENV=development
18
+ RAILS_ENV=development
19
+ RAILS_ROOT=.dassie
20
+ REDIS_HOST=redis
21
+ SOLR_PORT=8983
22
+ SOLR_HOST=solr
23
+ SOLR_TEST_URL=http://solr:8983/solr/hyrax_test
24
+ SOLR_URL=http://solr:8983/solr/hyrax
25
+ VALKYRIE_SOLR_PORT=8983
26
+ VALKYRIE_SOLR_HOST=solr
@@ -22,15 +22,15 @@ mutual respect and reasoned argument.
22
22
  Community members work together to promote a respectful and safe
23
23
  community. In the event that someone’s conduct is causing offence or
24
24
  distress, Samvera has a detailed
25
- [Anti-Harassment Policy and Protocol](https://wiki.duraspace.org/display/samvera/Anti-Harassment+Policy)
25
+ [Anti-Harassment Policy and Protocol](https://wiki.lyrasis.org/display/samvera/Anti-Harassment+Policy)
26
26
  which can be applied to address the problem. The first step in dealing
27
27
  with any serious misconduct is to contact a local meeting organizer,
28
28
  the
29
- [Samvera community helpers](https://wiki.duraspace.org/display/samvera/Samvera+Community+Helpers)
29
+ [Samvera community helpers](https://wiki.lyrasis.org/display/samvera/Samvera+Community+Helpers)
30
30
  ([email](mailto:helpers@samvera.org)), a community member you
31
31
  trust, or the
32
- [Samvera Steering Group](https://wiki.duraspace.org/display/samvera/Samvera+Steering+Group+membership)
32
+ [Samvera Steering Group](https://wiki.lyrasis.org/display/samvera/Samvera+Steering+Group+membership)
33
33
  immediately; at Samvera events, these people can be identified by
34
34
  distinctive name badges. The
35
- [Policy and Protocol](https://wiki.duraspace.org/display/samvera/Anti-Harassment+Policy)
35
+ [Policy and Protocol](https://wiki.lyrasis.org/display/samvera/Anti-Harassment+Policy)
36
36
  should be consulted for fuller details.
@@ -18,7 +18,7 @@ All code contributors must have an Individual Contributor License Agreement
18
18
  an institution, the institution must have a Corporate Contributor License
19
19
  Agreement (cCLA) on file.
20
20
 
21
- https://wiki.duraspace.org/display/samvera/Samvera+Community+Intellectual+Property+Licensing+and+Ownership
21
+ https://wiki.lyrasis.org/display/samvera/Samvera+Community+Intellectual+Property+Licensing+and+Ownership
22
22
 
23
23
  You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
24
24
 
@@ -1,3 +1,15 @@
1
+ # Getting Help
2
+
3
+ If you have questions or need help, please email [the Samvera community tech list](mailto:samvera-tech@googlegroups.com) or stop by the #dev channel in [the Samvera community Slack team](https://wiki.lyrasis.org/pages/viewpage.action?pageId=87460391#Getintouch!-Slack).
4
+
5
+ The [Hyrax wiki](https://github.com/samvera/hyrax/wiki) gathers documentation as the community tries things and learns what works. There is useful knowledge and history there but please keep in mind that this information can age quickly. Refer to the [README.md](./README.md) for the best updated guidance we have to offer.
6
+
7
+ You can also look in the [Samvera Community Knowledge Base](https://samvera.github.io) for help with Hyrax or other Samvera Community questions.
8
+
9
+ ## Reporting Issues
10
+
1
11
  If you would like to report an issue with Hyrax, first do search [the list of issues](https://github.com/samvera/hyrax/issues/) to see if someone else has already reported it, and then feel free to [create a new issue](https://github.com/samvera/hyrax/issues/new).
2
12
 
3
- If you have questions or need help, please email [the Samvera community tech list](mailto:samvera-tech@googlegroups.com) or stop by the #dev channel in [the Samvera community Slack team](https://wiki.duraspace.org/pages/viewpage.action?pageId=87460391#Getintouch!-Slack).
13
+ ## Reporting Security Issues
14
+
15
+ To report a security vulnerability, email [samvera-steering@googlegroups.com](mailto:samvera-steering@googlegroups.com) and the Steering Group will coordinate the community response. In your message, please document to the best of your ability cases (relevant software versions, conditions, etc.) where the vulnerability is applicable, the potential negative effects, and any known workarounds or fixes to mitigate the risk. Steering will communicate this to the Partners and the rest of the community in a timely fashion.
data/.gitignore CHANGED
@@ -69,7 +69,7 @@ db/schema.rb
69
69
 
70
70
  ## PROJECT::SPECIFIC
71
71
 
72
- .internal_test_app
72
+ .*_app
73
73
  .byebug_history
74
74
 
75
75
  ## Carried over from hyrax-models (RIP)
data/.regen CHANGED
@@ -1 +1 @@
1
- 28e
1
+ 35idx
@@ -36,6 +36,7 @@ Metrics/BlockLength:
36
36
  - 'lib/hyrax/rails/routes.rb'
37
37
  - 'lib/tasks/*.rake'
38
38
  - 'spec/**/*.rb'
39
+ - 'tasks/benchmark.rake'
39
40
 
40
41
  Style/AsciiComments:
41
42
  Enabled: false
@@ -127,6 +127,10 @@ RSpec/AnyInstance:
127
127
  - 'spec/services/hyrax/workflow/sipity_actions_generator_spec.rb'
128
128
  - 'spec/services/hyrax/workflow/state_machine_generator_spec.rb'
129
129
  - 'spec/services/hyrax/workflow/workflow_permissions_generator_spec.rb'
130
+ - 'spec/controllers/hyrax/homepage_controller_spec.rb'
131
+ - 'spec/controllers/hyrax/my/collections_controller_spec.rb'
132
+ - 'spec/controllers/hyrax/my/works_controller_spec.rb'
133
+ - 'spec/presenters/hyrax/admin/repository_object_presenter_spec.rb'
130
134
 
131
135
  # Offense count: 51
132
136
  RSpec/ExpectInHook:
@@ -22,15 +22,15 @@ mutual respect and reasoned argument.
22
22
  Community members work together to promote a respectful and safe
23
23
  community. In the event that someone’s conduct is causing offence or
24
24
  distress, Samvera has a detailed
25
- [Anti-Harassment Policy and Protocol](https://wiki.duraspace.org/display/samvera/Anti-Harassment+Policy)
25
+ [Anti-Harassment Policy and Protocol](https://wiki.lyrasis.org/display/samvera/Anti-Harassment+Policy)
26
26
  which can be applied to address the problem. The first step in dealing
27
27
  with any serious misconduct is to contact a local meeting organizer,
28
28
  the
29
- [Samvera community helpers](https://wiki.duraspace.org/display/samvera/Samvera+Community+Helpers)
29
+ [Samvera community helpers](https://wiki.lyrasis.org/display/samvera/Samvera+Community+Helpers)
30
30
  ([email](mailto:helpers@samvera.org)), a community member you
31
31
  trust, or the
32
- [Samvera Steering Group](https://wiki.duraspace.org/display/samvera/Samvera+Steering+Group+membership)
32
+ [Samvera Steering Group](https://wiki.lyrasis.org/display/samvera/Samvera+Steering+Group+membership)
33
33
  immediately; at Samvera events, these people can be identified by
34
34
  distinctive name badges. The
35
- [Policy and Protocol](https://wiki.duraspace.org/display/samvera/Anti-Harassment+Policy)
35
+ [Policy and Protocol](https://wiki.lyrasis.org/display/samvera/Anti-Harassment+Policy)
36
36
  should be consulted for fuller details.
@@ -0,0 +1,148 @@
1
+ Hyrax-in-a-Container
2
+ ====================
3
+
4
+ Our goal is to provide a practical, reusable "reference environment for applications. The first step is providing
5
+ on on-ramp for Hyrax engine development. Then providing help with Hyrax-based application development. Finally,
6
+ providing better guidance around deployment.
7
+
8
+ Where are we at? It's complicated. What we have below is experimental support, but one that we want to push
9
+ towards. We need your help to keep pushing in this direction. So dig in and prepare to get your hands dirty.
10
+
11
+ The [Hyrax Engine Development](#hyrax-engine-development) is further along than the [Docker Image for Hyrax-based Applications](docker-image-for-hyrax-based-applications) which is further along than [Deploying to Production](#deploying-to-production).
12
+
13
+ <!-- NOTE: This title is referenced in the top-level README.md. Keep that in mind if you change it. -->
14
+ ## Hyrax Engine Development
15
+
16
+ We support a `docker-compose`-based development environment for folks working on
17
+ the Hyrax engine. This environment is substantially more like a Hyrax production
18
+ setup than the older `fedora_wrapper`/`solr_wrapper` approach.
19
+
20
+ First, make sure you have installed [Docker](https://www.docker.com/). Then clone [the Hyrax repository](https://github.com/samvera/hyrax).
21
+
22
+ Within your cloned repository, tell Docker to get started installing your development environment:
23
+
24
+ ```sh
25
+ docker-compose build
26
+ docker-compose up
27
+ ```
28
+
29
+ This starts containers for:
30
+
31
+ - a `hyrax` test application (`.dassie`);
32
+ - Fedora
33
+ - Solr
34
+ - Postgresql
35
+ - Redis
36
+ - Memcached
37
+ - SideKiq (for background jobs)
38
+
39
+ It also runs database migrations. This will also bring up a development application on `http://localhost:3000`.
40
+
41
+ To stop the containers for the Hyrax-based application, type <kbd>Ctrl</kbd>+<kbd>c</kbd>. To restart the containers you need only run `docker-compose up`.
42
+
43
+ _**Note:** Starting and stopping Docker in this way will preserve your data between restarts._
44
+
45
+ ### Code Changes and Testing
46
+
47
+ With `docker-compose up` running, any changes you make to your cloned Hyrax code-base should show up in `http://localhost:3000`; There may be cases where you need to restart your test application (e.g. stop the containers and start them up again).
48
+
49
+ Any changes you make to Hyrax should be tested. You can run the full test suite using the following command:
50
+
51
+ ```sh
52
+ docker-compose exec -w /app/samvera/hyrax-engine app sh -c "bundle exec rspec"
53
+ ```
54
+
55
+ Let's break down the above command:
56
+
57
+ <dl>
58
+ <dt><code>docker-compose exec</code></dt>
59
+ <dd>Tell docker to run the following:</dd>
60
+ <dt><code>-w /app/samvera/hyrax-engine</code></dt>
61
+ <dd>In the working directory "/app/samvera/hyrax-engine" (e.g. your cloned Hyrax repository)</dd>
62
+ <dt><code>app</code></dt>
63
+ <dd>of the container named "app"</dd>
64
+ <dt><code>sh -c</code>
65
+ <dd>run the following shell script</dd>
66
+ <dt><code>"bundle exec rspec"</code></dt>
67
+ <dd>run the rspec test suite</dd>
68
+ </dl>
69
+
70
+ _**Note:**_ The `bundle exec rspec` portion of the command runs the whole test suite. See the [rspec command documentation](https://github.com/rspec/rspec-core#the-rspec-command) for how to refine your test runs.
71
+
72
+ _**Note**: The `/app/samvera/hyrax-webapp` is analogous to the `.internal_test_app` that we generate as part of the Hyrax engine Continuous Integration._
73
+
74
+ ### The Docker Container Named "app"
75
+
76
+ As a developer, you may need to run commands against the Hyrax-based application and/or the Hyrax engine. Examples
77
+ of those commands are `rails db:migrate` and `rspec`. You would run `rails db:migrate` on the Hyrax-based
78
+ application, and `rspec` on the Hyrax engine.
79
+
80
+ In the engine development `app` container, the `.dassie` test Hyrax-based application is setup as a docker
81
+ bind mount to `/app/samvera/hyrax-webapp`, and your local development copy of Hyrax (eg. the clone [samvera/hyrax](https://github.com/samvera/hyrax)) is bound to
82
+ `/app/samvera/hyrax-engine`. Those directories are defined as part of the [Dockerfile](Dockerfile) configuration.
83
+ .
84
+ What does this structure mean? Let's look at an example. The following command will list the rake tasks for the Hyrax-based application running in Docker:
85
+
86
+ ```sh
87
+ docker-compose exec -w /app/samvera/hyrax-webapp app sh -c "bundle exec rake -T"
88
+ ```
89
+
90
+ And this command lists the rake tasks for the Hyrax engine that is in Docker:
91
+
92
+ ```sh
93
+ docker-compose exec -w /app/samvera/hyrax-engine app sh -c "bundle exec rake -T"
94
+ ```
95
+
96
+ In the two examples, note the difference in the `-w` switch. In the first case, it's referencing the Hyrax-based application. In the latter case, it's referencing the Hyrax engine.
97
+
98
+ <!-- NOTE: This title is referenced in the top-level documentation/developing-your-hyrax-based-app.md. Keep that in mind if you change it. -->
99
+ ## Docker Image for Hyrax-based Applications
100
+
101
+ We also provide a base image which can be reused for your Hyrax applications: `hyrax`.
102
+
103
+ ```sh
104
+ echo "FROM samveralabs/hyrax" > Dockerfile
105
+ ```
106
+
107
+ _This is for applications that mount Hyrax and is separate from the docker containers for Hyrax engine development._
108
+
109
+ ### Maintaining
110
+
111
+ We publish several Hyrax images to hub.docker.com under the
112
+ [`samveralabs` group][dockerhub-samveralabs]. To build them, do:
113
+
114
+ ```sh
115
+ # build an image for an app using Postgresql (`gem 'pg'`)
116
+ docker build --target hyrax --tag samveralabs/hyrax:(git rev-parse HEAD) .
117
+ docker push samveralabs/hyrax:(git rev-parse HEAD)
118
+
119
+ # or; build a development image with sqlite
120
+ docker build --target hyrax --tag samveralabs/hyrax:(git rev-parse HEAD)-sqlite --build-arg DATABASE_APK_PACKAGE="sqlite" .
121
+ docker push samveralabs/hyrax:(git rev-parse HEAD)-sqlite
122
+ ```
123
+
124
+ We also publish an image for the stable test application `dassie`:
125
+
126
+ ```sh
127
+ docker build --target hyrax-engine-dev --tag samveralabs/dassie:(git rev-parse HEAD) .
128
+
129
+ docker tag samveralabs/dassie:(git rev-parse HEAD) samveralabs/dassie:$HYRAX_VERSION
130
+
131
+ docker push samveralabs/dassie:(git rev-parse HEAD)
132
+ docker push samveralabs/dassie:$HYRAX_VERSION
133
+ ```
134
+
135
+ ## Deploying to Production
136
+
137
+ Also under development is a Helm chart, which we are developing into a robust,
138
+ configurable production environment for Hyrax applications.
139
+
140
+ If you have a Kubernetes cluster configured (`kubectl cluster-info`), you can
141
+ deploy the `dassie` test applications with:
142
+
143
+ ```sh
144
+ helm dependency update chart/hyrax
145
+ helm install -n hyrax --set image.tag=(git rev-parse HEAD) dassie chart/hyrax
146
+ ```
147
+
148
+ [dockerhub-samveralabs]: https://hub.docker.com/r/samveralabs
@@ -18,7 +18,7 @@ All code contributors must have an Individual Contributor License Agreement
18
18
  an institution, the institution must have a Corporate Contributor License
19
19
  Agreement (cCLA) on file.
20
20
 
21
- https://wiki.duraspace.org/display/samvera/Samvera+Community+Intellectual+Property+Licensing+and+Ownership
21
+ https://wiki.lyrasis.org/display/samvera/Samvera+Community+Intellectual+Property+Licensing+and+Ownership
22
22
 
23
23
  You should also add yourself to the `CONTRIBUTORS.md` file in the root of the project.
24
24
 
@@ -0,0 +1,75 @@
1
+ ARG RUBY_VERSION=2.7.2
2
+ FROM ruby:$RUBY_VERSION-alpine as hyrax-base
3
+
4
+ ARG DATABASE_APK_PACKAGE="postgresql-dev"
5
+ ARG EXTRA_APK_PACKAGES="git"
6
+
7
+ RUN apk --no-cache upgrade && \
8
+ apk --no-cache add build-base \
9
+ imagemagick \
10
+ tzdata \
11
+ nodejs \
12
+ yarn \
13
+ $DATABASE_APK_PACKAGE \
14
+ $EXTRA_APK_PACKAGES
15
+
16
+ RUN addgroup -S --gid 101 app && \
17
+ adduser -S -G app -u 1001 -s /bin/sh -h /app app
18
+ USER app
19
+
20
+ RUN gem update bundler
21
+
22
+ RUN mkdir -p /app/samvera/hyrax-webapp
23
+ WORKDIR /app/samvera/hyrax-webapp
24
+
25
+ COPY --chown=1001:101 ./bin /app/samvera
26
+ ENV PATH="/app/samvera:$PATH"
27
+ ENV RAILS_ROOT="/app/samvera/hyrax-webapp"
28
+ ENV RAILS_SERVE_STATIC_FILES="1"
29
+
30
+ ENTRYPOINT ["hyrax-entrypoint.sh"]
31
+ CMD ["bundle", "exec", "puma", "-v", "-b", "tcp://0.0.0.0:3000"]
32
+
33
+
34
+ FROM hyrax-base as hyrax
35
+
36
+ ARG APP_PATH=.
37
+ ARG BUNDLE_WITHOUT="development test"
38
+
39
+ ONBUILD COPY --chown=1001:101 $APP_PATH /app/samvera/hyrax-webapp
40
+ ONBUILD RUN bundle install --jobs "$(nproc)"
41
+ ONBUILD RUN DB_ADAPTER=nulldb DATABASE_URL='postgresql://fake' bundle exec rake assets:precompile
42
+
43
+ FROM hyrax-base as hyrax-engine-dev
44
+
45
+ ARG APP_PATH=.dassie
46
+ ARG BUNDLE_WITHOUT=
47
+
48
+ ENV HYRAX_ENGINE_PATH /app/samvera/hyrax-engine
49
+
50
+ COPY --chown=1001:101 $APP_PATH /app/samvera/hyrax-webapp
51
+ COPY --chown=1001:101 . /app/samvera/hyrax-engine
52
+
53
+ RUN cd /app/samvera/hyrax-engine; bundle install --jobs "$(nproc)"
54
+ RUN DB_ADAPTER=nulldb DATABASE_URL='postgresql://fake' bundle exec rake assets:precompile
55
+
56
+
57
+ FROM hyrax-engine-dev as hyrax-engine-dev-worker
58
+
59
+ ENV MALLOC_ARENA_MAX=2
60
+
61
+ USER root
62
+ RUN apk --no-cache add bash \
63
+ openjdk11-jre \
64
+ perl \
65
+ mediainfo
66
+ USER app
67
+
68
+ RUN wget http://projects.iq.harvard.edu/files/fits/files/fits-1.0.5.zip -O fits.zip \
69
+ && unzip fits.zip -d /app \
70
+ && rm fits.zip \
71
+ && mv /app/fits-1.0.5 /app/fits \
72
+ && chmod a+x /app/fits/fits.sh
73
+ ENV PATH="${PATH}:/app/fits"
74
+
75
+ CMD bundle exec sidekiq
data/Gemfile CHANGED
@@ -1,53 +1,44 @@
1
1
  # frozen_string_literal: true
2
- source 'https://rubygems.org'
2
+ source 'https://rubygems.org' do
3
+ # Please see hyrax.gemspec for dependency information.
4
+ gemspec
3
5
 
4
- # Please see hyrax.gemspec for dependency information.
5
- gemspec
6
-
7
- group :development, :test do
8
- gem 'easy_translate'
9
- gem 'i18n-tasks'
10
- gem 'okcomputer'
11
- gem 'pry' unless ENV['CI']
12
- gem 'pry-byebug' unless ENV['CI']
13
- gem "simplecov", require: false
6
+ group :development, :test do
7
+ gem 'benchmark-ips'
8
+ gem 'easy_translate'
9
+ gem 'i18n-tasks'
10
+ gem 'okcomputer'
11
+ gem 'pry' unless ENV['CI']
12
+ gem 'pry-byebug' unless ENV['CI']
13
+ gem 'ruby-prof', require: false
14
+ gem "simplecov", require: false
15
+ end
14
16
  end
15
17
 
16
- # rubocop:disable Bundler/DuplicatedGem
17
- # BEGIN ENGINE_CART BLOCK
18
- # engine_cart: 1.1.0
19
- # engine_cart stanza: 0.10.0
20
- # the below comes from engine_cart, a gem used to test this Rails engine gem in the context of a Rails app.
21
- file = File.expand_path('Gemfile', ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path('.internal_test_app', File.dirname(__FILE__)))
22
- if File.exist?(file)
18
+ test_app_path = ENV['RAILS_ROOT'] ||
19
+ ENV.fetch('ENGINE_CART_DESTINATION', File.expand_path('.internal_test_app', File.dirname(__FILE__)))
20
+ test_app_gemfile = File.expand_path('Gemfile', test_app_path)
21
+
22
+ if File.exist?(test_app_gemfile)
23
23
  begin
24
- eval_gemfile file
24
+ eval_gemfile test_app_gemfile
25
25
  rescue Bundler::GemfileError => e
26
- Bundler.ui.warn '[EngineCart] Skipping Rails application dependencies:'
26
+ Bundler.ui.warn '[Hyrax] Skipping Rails application dependencies:'
27
27
  Bundler.ui.warn e.message
28
28
  end
29
29
  else
30
- Bundler.ui.warn "[EngineCart] Unable to find test application dependencies in #{file}, using placeholder dependencies"
30
+ Bundler.ui.warn "[Hyrax] Unable to find test application dependencies in #{test_app_gemfile}, using placeholder dependencies"
31
31
 
32
+ # rubocop:disable Bundler/DuplicatedGem
32
33
  if ENV['RAILS_VERSION']
33
34
  if ENV['RAILS_VERSION'] == 'edge'
34
- gem 'rails', github: 'rails/rails'
35
+ gem 'rails', github: 'rails/rails', source: 'https://rubygems.org'
35
36
  ENV['ENGINE_CART_RAILS_OPTIONS'] = '--edge --skip-turbolinks'
36
37
  else
37
- gem 'rails', ENV['RAILS_VERSION']
38
+ gem 'rails', ENV['RAILS_VERSION'], source: 'https://rubygems.org'
38
39
  end
39
40
  end
41
+ # rubocop:enable Bundler/DuplicatedGem
40
42
 
41
- case ENV['RAILS_VERSION']
42
- when /^4.2/
43
- gem 'coffee-rails', '~> 4.1.0'
44
- gem 'responders', '~> 2.0'
45
- gem 'sass-rails', '>= 5.0'
46
- when /^4.[01]/
47
- gem 'sass-rails', '< 5.0'
48
- end
43
+ eval_gemfile File.expand_path('spec/test_app_templates/Gemfile.extra', File.dirname(__FILE__))
49
44
  end
50
- # END ENGINE_CART BLOCK
51
- # rubocop:enable Bundler/DuplicatedGem
52
-
53
- eval_gemfile File.expand_path('spec/test_app_templates/Gemfile.extra', File.dirname(__FILE__)) unless File.exist?(file)