bulkrax 3.3.2 → 3.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b136a8742a7f9b953b4c3ef86d700540b931b6fbf22798d719e9aa693ea61fa9
4
- data.tar.gz: e1cc32eda55a606285cf6e080340db608a8867f0bd4de8ab1361ca4a3d21adf9
3
+ metadata.gz: f0ee151bc10b7485eb716463b2c4895165d6df9d73c3dd60813d2eb4de8161d1
4
+ data.tar.gz: f4e5ddfb5ac602eb20a85850f8ec5a9286a9a668f8c83548dd049db4d91a2a0e
5
5
  SHA512:
6
- metadata.gz: 87e35f340faa583a9ae6ac156f95fa4958fcaf9d3ed09a9963a8dda39649a66307a8c494375a989e2103c2d1edef62343f5b69878eae2249d63cc4b8f65240a8
7
- data.tar.gz: 21ddafc671eda822144b6b73abfb89892ffac954f0692952985299f40f7d0e1aba472077aac72a1f681da315ba35de795f43d95df323c2178576716d02eafc75
6
+ metadata.gz: a5b029da7feaee11c8a3eb58e0c7150abcb06b6ca08f9d102134d5e1c9eef3049ae85b0084d74934b7504688da7d4958a0dc425c705b42101c1a3ce62a57d0c7
7
+ data.tar.gz: c807b68265c0d88b9e7faea4f6efdf94b3bcf90e965f5cc97cc259202bc55db976944eea8e4bf99876723f881d29d2fa7004dbd9985f7f8164648df517722133
@@ -6,26 +6,26 @@ module Bulkrax
6
6
 
7
7
  def perform(*args)
8
8
  entry = Entry.find(args[0])
9
+ exporter_run = ExporterRun.find(args[1])
9
10
  begin
10
11
  entry.build
11
12
  entry.save
12
13
  rescue StandardError
13
14
  # rubocop:disable Rails/SkipsModelValidations
14
- ExporterRun.find(args[1]).increment!(:failed_records)
15
- ExporterRun.find(args[1]).decrement!(:enqueued_records)
15
+ exporter_run.increment!(:failed_records)
16
+ exporter_run.decrement!(:enqueued_records) unless exporter_run.enqueued_records <= 0
16
17
  raise
17
18
  else
18
19
  if entry.failed?
19
- ExporterRun.find(args[1]).increment!(:failed_records)
20
- ExporterRun.find(args[1]).decrement!(:enqueued_records)
20
+ exporter_run.increment!(:failed_records)
21
+ exporter_run.decrement!(:enqueued_records) unless exporter_run.enqueued_records <= 0
21
22
  raise entry.reload.current_status.error_class.constantize
22
23
  else
23
- ExporterRun.find(args[1]).increment!(:processed_records)
24
- ExporterRun.find(args[1]).decrement!(:enqueued_records)
24
+ exporter_run.increment!(:processed_records)
25
+ exporter_run.decrement!(:enqueued_records) unless exporter_run.enqueued_records <= 0
25
26
  end
26
27
  # rubocop:enable Rails/SkipsModelValidations
27
28
  end
28
- exporter_run = ExporterRun.find(args[1])
29
29
  return entry if exporter_run.enqueued_records.positive?
30
30
 
31
31
  if exporter_run.failed_records.positive?
@@ -14,13 +14,15 @@ module Bulkrax
14
14
  validates :name, presence: true
15
15
  validates :parser_klass, presence: true
16
16
 
17
- delegate :write, :create_from_collection, :create_from_importer, :create_from_worktype, :create_from_all, to: :parser
17
+ delegate :write, :create_from_collection, :create_from_collections_metadata, :create_from_importer, :create_from_worktype, :create_from_all, to: :parser
18
18
 
19
19
  def export
20
20
  current_run && setup_export_path
21
21
  case self.export_from
22
22
  when 'collection'
23
23
  create_from_collection
24
+ when 'collections metadata'
25
+ create_from_collections_metadata
24
26
  when 'importer'
25
27
  create_from_importer
26
28
  when 'worktype'
@@ -87,6 +89,7 @@ module Bulkrax
87
89
  [
88
90
  [I18n.t('bulkrax.exporter.labels.importer'), 'importer'],
89
91
  [I18n.t('bulkrax.exporter.labels.collection'), 'collection'],
92
+ [I18n.t('bulkrax.exporter.labels.collections_metadata'), 'collections metadata'],
90
93
  [I18n.t('bulkrax.exporter.labels.worktype'), 'worktype'],
91
94
  [I18n.t('bulkrax.exporter.labels.all'), 'all']
92
95
  ]
@@ -51,7 +51,7 @@ module Bulkrax
51
51
  fn = file_set.original_file.file_name.first
52
52
  mime = Mime::Type.lookup(file_set.original_file.mime_type)
53
53
  ext_mime = MIME::Types.of(file_set.original_file.file_name).first
54
- if fn.include?(file_set.id) || importerexporter.metadata_only? || importerexporter.parser_klass.include?('Bagit')
54
+ if fn.include?(file_set.id) || importerexporter.metadata_only?
55
55
  filename = "#{fn}.#{mime.to_sym}"
56
56
  filename = fn if mime.to_s == ext_mime.to_s
57
57
  else
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'zip'
2
3
 
3
4
  module Bulkrax
4
5
  class ApplicationParser # rubocop:disable Metrics/ClassLength
@@ -261,7 +262,6 @@ module Bulkrax
261
262
  end
262
263
 
263
264
  def zip
264
- require 'zip'
265
265
  FileUtils.rm_rf(exporter_export_zip_path)
266
266
  Zip::File.open(exporter_export_zip_path, create: true) do |zip_file|
267
267
  Dir["#{exporter_export_path}/**/**"].each do |file|
@@ -19,8 +19,14 @@ module Bulkrax
19
19
  rdf_format = parser_fields&.[]('metadata_format') == "Bulkrax::RdfEntry"
20
20
  rdf_format ? RdfEntry : CsvEntry
21
21
  end
22
- alias collection_entry_class entry_class
23
- alias file_set_entry_class entry_class
22
+
23
+ def collection_entry_class
24
+ CsvCollectionEntry
25
+ end
26
+
27
+ def file_set_entry_class
28
+ CsvFileSetEntry
29
+ end
24
30
 
25
31
  # Take a random sample of 10 metadata_paths and work out the import fields from that
26
32
  def import_fields
@@ -95,7 +101,15 @@ module Bulkrax
95
101
  end
96
102
 
97
103
  def total
98
- importerexporter.entries.count
104
+ @total = importer.parser_fields['total'] || 0 if importer?
105
+
106
+ @total = if exporter?
107
+ limit.nil? || limit.zero? ? current_record_ids.count : limit
108
+ end
109
+
110
+ return @total || 0
111
+ rescue StandardError
112
+ @total = 0
99
113
  end
100
114
 
101
115
  def extra_filters
@@ -118,7 +132,6 @@ module Bulkrax
118
132
  case importerexporter.export_from
119
133
  when 'all'
120
134
  @work_ids = ActiveFedora::SolrService.query("has_model_ssim:(#{Hyrax.config.curation_concerns.join(' OR ')}) #{extra_filters}", method: :post, rows: 2_147_483_647).map(&:id)
121
- @collection_ids = ActiveFedora::SolrService.query("has_model_ssim:Collection #{extra_filters}", method: :post, rows: 2_147_483_647).map(&:id)
122
135
  @file_set_ids = ActiveFedora::SolrService.query("has_model_ssim:FileSet #{extra_filters}", method: :post, rows: 2_147_483_647).map(&:id)
123
136
  when 'collection'
124
137
  @work_ids = ActiveFedora::SolrService.query("member_of_collection_ids_ssim:#{importerexporter.export_source + extra_filters}", method: :post, rows: 2_000_000_000).map(&:id)
@@ -127,7 +140,6 @@ module Bulkrax
127
140
  when 'importer'
128
141
  set_ids_for_exporting_from_importer
129
142
  end
130
-
131
143
  @work_ids + @collection_ids + @file_set_ids
132
144
  end
133
145
 
@@ -155,6 +167,8 @@ module Bulkrax
155
167
  end
156
168
  end
157
169
 
170
+ # export methods
171
+
158
172
  def create_new_entries
159
173
  current_record_ids.each_with_index do |id, index|
160
174
  break if limit_reached?(limit, index)
@@ -182,34 +196,44 @@ module Bulkrax
182
196
  alias create_from_worktype create_new_entries
183
197
  alias create_from_all create_new_entries
184
198
 
185
- # export methods
186
-
187
- # rubocop:disable Metrics/AbcSize
199
+ # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
188
200
  def write_files
189
201
  require 'open-uri'
190
202
  require 'socket'
191
- importerexporter.entries.where(identifier: current_record_ids)[0..limit || total].each do |e|
192
- bag = BagIt::Bag.new setup_bagit_folder(e.identifier)
193
- w = ActiveFedora::Base.find(e.identifier)
194
- next unless Hyrax.config.curation_concerns.include?(w.class)
203
+ importerexporter.entries.where(identifier: current_record_ids)[0..limit || total].each do |entry|
204
+ work = ActiveFedora::Base.find(entry.identifier)
205
+ next unless Hyrax.config.curation_concerns.include?(work.class)
206
+ bag = BagIt::Bag.new setup_bagit_folder(entry.identifier)
207
+ bag_entries = [entry]
208
+
209
+ work.file_sets.each do |fs|
210
+ if @file_set_ids.present?
211
+ file_set_entry = Bulkrax::CsvFileSetEntry.where("parsed_metadata LIKE '%#{fs.id}%'").first
212
+ bag_entries << file_set_entry unless file_set_entry.nil?
213
+ end
195
214
 
196
- w.file_sets.each do |fs|
197
215
  file_name = filename(fs)
198
216
  next if file_name.blank?
199
217
  io = open(fs.original_file.uri)
200
218
  file = Tempfile.new([file_name, File.extname(file_name)], binmode: true)
201
219
  file.write(io.read)
202
220
  file.close
203
- bag.add_file(file_name, file.path)
221
+ begin
222
+ bag.add_file(file_name, file.path)
223
+ rescue => e
224
+ entry.status_info(e)
225
+ status_info(e)
226
+ end
204
227
  end
205
- CSV.open(setup_csv_metadata_export_file(e.identifier), "w", headers: export_headers, write_headers: true) do |csv|
206
- csv << e.parsed_metadata
228
+
229
+ CSV.open(setup_csv_metadata_export_file(entry.identifier), "w", headers: export_headers, write_headers: true) do |csv|
230
+ bag_entries.each { |csv_entry| csv << csv_entry.parsed_metadata }
207
231
  end
208
- write_triples(e)
232
+ write_triples(entry)
209
233
  bag.manifest!(algo: 'sha256')
210
234
  end
211
235
  end
212
- # rubocop:enable Metrics/AbcSize
236
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
213
237
 
214
238
  def setup_csv_metadata_export_file(id)
215
239
  File.join(importerexporter.exporter_export_path, id, 'metadata.csv')
@@ -195,6 +195,9 @@ module Bulkrax
195
195
  @file_set_ids = ActiveFedora::SolrService.query("has_model_ssim:FileSet #{extra_filters}", method: :post, rows: 2_147_483_647).map(&:id)
196
196
  when 'collection'
197
197
  @work_ids = ActiveFedora::SolrService.query("member_of_collection_ids_ssim:#{importerexporter.export_source + extra_filters}", method: :post, rows: 2_000_000_000).map(&:id)
198
+ @collection_ids = ActiveFedora::SolrService.query("id:#{importerexporter.export_source} #{extra_filters}", method: :post, rows: 2_147_483_647).map(&:id)
199
+ when 'collections metadata'
200
+ @collection_ids = ActiveFedora::SolrService.query("has_model_ssim:Collection #{extra_filters}", method: :post, rows: 2_147_483_647).map(&:id)
198
201
  when 'worktype'
199
202
  @work_ids = ActiveFedora::SolrService.query("has_model_ssim:#{importerexporter.export_source + extra_filters}", method: :post, rows: 2_000_000_000).map(&:id)
200
203
  when 'importer'
@@ -251,6 +254,7 @@ module Bulkrax
251
254
  end
252
255
  end
253
256
  alias create_from_collection create_new_entries
257
+ alias create_from_collections_metadata create_new_entries
254
258
  alias create_from_importer create_new_entries
255
259
  alias create_from_worktype create_new_entries
256
260
  alias create_from_all create_new_entries
@@ -15,15 +15,15 @@
15
15
 
16
16
  <%= form.hidden_field :user_id, value: current_user.id %>
17
17
 
18
- <%= form.input :export_type,
19
- collection: form.object.export_type_list,
20
- label: t('bulkrax.exporter.labels.export_type'),
18
+ <%= form.input :export_type,
19
+ collection: form.object.export_type_list,
20
+ label: t('bulkrax.exporter.labels.export_type'),
21
21
  required: true,
22
22
  prompt: 'Please select an export type' %>
23
23
 
24
- <%= form.input :export_from,
25
- collection: form.object.export_from_list,
26
- label: t('bulkrax.exporter.labels.export_from'),
24
+ <%= form.input :export_from,
25
+ collection: form.object.export_from_list,
26
+ label: t('bulkrax.exporter.labels.export_from'),
27
27
  required: true,
28
28
  prompt: 'Please select an export source' %>
29
29
 
@@ -55,8 +55,8 @@
55
55
  input_html: { class: 'worktype export-source-option hidden' },
56
56
  collection: Hyrax.config.curation_concerns.map {|cc| [cc.to_s, cc.to_s] } %>
57
57
 
58
- <%= form.input :limit,
59
- as: :integer,
58
+ <%= form.input :limit,
59
+ as: :integer,
60
60
  hint: 'leave blank or 0 for all records',
61
61
  label: t('bulkrax.exporter.labels.limit') %>
62
62
 
@@ -90,8 +90,8 @@
90
90
  collection: form.object.workflow_status_list,
91
91
  label: t('bulkrax.exporter.labels.status') %>
92
92
 
93
- <%= form.input :parser_klass,
94
- collection: Bulkrax.parsers.map {|p| [p[:name], p[:class_name], {'data-partial' => p[:partial]}] if p[:class_name].constantize.export_supported? }.compact,
93
+ <%= form.input :parser_klass,
94
+ collection: Bulkrax.parsers.map {|p| [p[:name], p[:class_name], {'data-partial' => p[:partial]}] if p[:class_name].constantize.export_supported? }.compact,
95
95
  label: t('bulkrax.exporter.labels.export_format') %>
96
96
  </div>
97
97
 
@@ -40,6 +40,11 @@
40
40
  <% when 'collection' %>
41
41
  <% collection = Collection.find(@exporter.export_source) %>
42
42
  <%= link_to collection&.title&.first, hyrax.dashboard_collection_path(collection.id) %>
43
+ <% when 'collections metadata' %>
44
+ <% collections = Collection.all %>
45
+ <% collections.each_with_index do |c, i| %>
46
+ <%= link_to c&.title&.first, hyrax.dashboard_collection_path(c.id) %><%= ',' if i != collections.count - 1 %>
47
+ <% end %>
43
48
  <% when 'importer' %>
44
49
  <% importer = Bulkrax::Importer.find(@exporter.export_source) %>
45
50
  <%= link_to importer.name, bulkrax.importer_path(importer.id) %>
@@ -8,6 +8,7 @@ en:
8
8
  labels:
9
9
  all: All
10
10
  collection: Collection
11
+ collections_metadata: All Collections' Metadata (only)
11
12
  export_format: Export Format
12
13
  export_from: Export From
13
14
  export_source: Export Source
@@ -1,7 +1,17 @@
1
1
  class RenameBulkraxImporterRunToImporterRun < ActiveRecord::Migration[5.2]
2
- def change
2
+ def up
3
3
  if column_exists?(:bulkrax_pending_relationships, :bulkrax_importer_run_id)
4
+ remove_foreign_key :bulkrax_pending_relationships, :bulkrax_importer_runs
5
+ remove_index :bulkrax_pending_relationships, column: :bulkrax_importer_run_id
6
+
4
7
  rename_column :bulkrax_pending_relationships, :bulkrax_importer_run_id, :importer_run_id
8
+
9
+ add_foreign_key :bulkrax_pending_relationships, :bulkrax_importer_runs, column: :importer_run_id
10
+ add_index :bulkrax_pending_relationships, :importer_run_id, name: 'index_bulkrax_pending_relationships_on_importer_run_id'
5
11
  end
6
12
  end
13
+
14
+ def down
15
+ rename_column :bulkrax_pending_relationships, :importer_run_id, :bulkrax_importer_run_id
16
+ end
7
17
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bulkrax
4
- VERSION = '3.3.2'
4
+ VERSION = '3.4.0'
5
5
  end
@@ -10,7 +10,7 @@ class Bulkrax::InstallGenerator < Rails::Generators::Base
10
10
  end
11
11
 
12
12
  def add_to_gemfile
13
- gem 'willow_sword', github: 'notch8/willow_sword'
13
+ gem 'bulkrax'
14
14
 
15
15
  Bundler.with_clean_env do
16
16
  run "bundle install"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bulkrax
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.2
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Kaufman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-10 00:00:00.000000000 Z
11
+ date: 2022-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -25,81 +25,81 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.1.6
27
27
  - !ruby/object:Gem::Dependency
28
- name: loofah
28
+ name: bagit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.2.3
33
+ version: '0.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.2.3
40
+ version: '0.4'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rack
42
+ name: coderay
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 2.0.6
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 2.0.6
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: simple_form
56
+ name: iso8601
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.9.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 0.9.0
69
69
  - !ruby/object:Gem::Dependency
70
- name: iso8601
70
+ name: kaminari
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 0.9.0
75
+ version: '0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 0.9.0
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: oai
84
+ name: language_list
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.4'
90
- - - "<"
89
+ version: '1.2'
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: 2.x
92
+ version: 1.2.1
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - ">="
97
+ - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: '0.4'
100
- - - "<"
99
+ version: '1.2'
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: 2.x
102
+ version: 1.2.1
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: libxml-ruby
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -115,61 +115,75 @@ dependencies:
115
115
  - !ruby/object:Gem::Version
116
116
  version: 3.1.0
117
117
  - !ruby/object:Gem::Dependency
118
- name: language_list
118
+ name: loofah
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '1.2'
124
121
  - - ">="
125
122
  - !ruby/object:Gem::Version
126
- version: 1.2.1
123
+ version: 2.2.3
127
124
  type: :runtime
128
125
  prerelease: false
129
126
  version_requirements: !ruby/object:Gem::Requirement
130
127
  requirements:
131
- - - "~>"
132
- - !ruby/object:Gem::Version
133
- version: '1.2'
134
128
  - - ">="
135
129
  - !ruby/object:Gem::Version
136
- version: 1.2.1
130
+ version: 2.2.3
137
131
  - !ruby/object:Gem::Dependency
138
- name: rdf
132
+ name: oai
139
133
  requirement: !ruby/object:Gem::Requirement
140
134
  requirements:
141
135
  - - ">="
142
136
  - !ruby/object:Gem::Version
143
- version: 2.0.2
137
+ version: '0.4'
144
138
  - - "<"
145
139
  - !ruby/object:Gem::Version
146
- version: '4.0'
140
+ version: 2.x
147
141
  type: :runtime
148
142
  prerelease: false
149
143
  version_requirements: !ruby/object:Gem::Requirement
150
144
  requirements:
151
145
  - - ">="
152
146
  - !ruby/object:Gem::Version
153
- version: 2.0.2
147
+ version: '0.4'
154
148
  - - "<"
155
149
  - !ruby/object:Gem::Version
156
- version: '4.0'
150
+ version: 2.x
157
151
  - !ruby/object:Gem::Dependency
158
- name: bagit
152
+ name: rack
159
153
  requirement: !ruby/object:Gem::Requirement
160
154
  requirements:
161
- - - "~>"
155
+ - - ">="
162
156
  - !ruby/object:Gem::Version
163
- version: '0.4'
157
+ version: 2.0.6
164
158
  type: :runtime
165
159
  prerelease: false
166
160
  version_requirements: !ruby/object:Gem::Requirement
167
161
  requirements:
168
- - - "~>"
162
+ - - ">="
169
163
  - !ruby/object:Gem::Version
170
- version: '0.4'
164
+ version: 2.0.6
171
165
  - !ruby/object:Gem::Dependency
172
- name: coderay
166
+ name: rdf
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: 2.0.2
172
+ - - "<"
173
+ - !ruby/object:Gem::Version
174
+ version: '4.0'
175
+ type: :runtime
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: 2.0.2
182
+ - - "<"
183
+ - !ruby/object:Gem::Version
184
+ version: '4.0'
185
+ - !ruby/object:Gem::Dependency
186
+ name: rubyzip
173
187
  requirement: !ruby/object:Gem::Requirement
174
188
  requirements:
175
189
  - - ">="
@@ -183,7 +197,7 @@ dependencies:
183
197
  - !ruby/object:Gem::Version
184
198
  version: '0'
185
199
  - !ruby/object:Gem::Dependency
186
- name: kaminari
200
+ name: simple_form
187
201
  requirement: !ruby/object:Gem::Requirement
188
202
  requirements:
189
203
  - - ">="