search_solr_tools 3.10.0 → 5.0.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 (54) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +45 -1
  3. data/README.md +30 -14
  4. data/bin/search_solr_tools +20 -22
  5. data/lib/search_solr_tools.rb +6 -7
  6. data/lib/search_solr_tools/config/environments.yaml +7 -8
  7. data/lib/search_solr_tools/harvesters/adc.rb +2 -0
  8. data/lib/search_solr_tools/harvesters/ade_auto_suggest.rb +2 -0
  9. data/lib/search_solr_tools/harvesters/auto_suggest.rb +1 -0
  10. data/lib/search_solr_tools/harvesters/base.rb +2 -2
  11. data/lib/search_solr_tools/harvesters/bcodmo.rb +1 -0
  12. data/lib/search_solr_tools/harvesters/data_one.rb +2 -0
  13. data/lib/search_solr_tools/harvesters/echo.rb +2 -0
  14. data/lib/search_solr_tools/harvesters/gtnp.rb +1 -0
  15. data/lib/search_solr_tools/harvesters/ices.rb +1 -0
  16. data/lib/search_solr_tools/harvesters/ncdc_paleo.rb +1 -0
  17. data/lib/search_solr_tools/harvesters/nmi.rb +2 -0
  18. data/lib/search_solr_tools/harvesters/nodc.rb +2 -0
  19. data/lib/search_solr_tools/harvesters/nsidc_auto_suggest.rb +2 -0
  20. data/lib/search_solr_tools/harvesters/nsidc_json.rb +8 -1
  21. data/lib/search_solr_tools/harvesters/oai.rb +2 -0
  22. data/lib/search_solr_tools/harvesters/pdc.rb +2 -0
  23. data/lib/search_solr_tools/harvesters/r2r.rb +2 -2
  24. data/lib/search_solr_tools/harvesters/rda.rb +2 -0
  25. data/lib/search_solr_tools/harvesters/tdar.rb +2 -0
  26. data/lib/search_solr_tools/harvesters/usgs.rb +2 -0
  27. data/lib/search_solr_tools/helpers/data_one_format.rb +3 -3
  28. data/lib/search_solr_tools/helpers/facet_configuration.rb +1 -1
  29. data/lib/search_solr_tools/helpers/iso_to_solr.rb +4 -3
  30. data/lib/search_solr_tools/helpers/iso_to_solr_format.rb +2 -2
  31. data/lib/search_solr_tools/helpers/ncdc_paleo_format.rb +3 -3
  32. data/lib/search_solr_tools/helpers/r2r_format.rb +3 -3
  33. data/lib/search_solr_tools/helpers/selectors.rb +1 -2
  34. data/lib/search_solr_tools/helpers/solr_format.rb +1 -0
  35. data/lib/search_solr_tools/helpers/tdar_format.rb +3 -3
  36. data/lib/search_solr_tools/helpers/translate_spatial_coverage.rb +3 -3
  37. data/lib/search_solr_tools/helpers/translate_temporal_coverage.rb +1 -1
  38. data/lib/search_solr_tools/helpers/usgs_format.rb +2 -2
  39. data/lib/search_solr_tools/selectors/adc.rb +2 -1
  40. data/lib/search_solr_tools/selectors/data_one.rb +2 -1
  41. data/lib/search_solr_tools/selectors/echo_iso.rb +2 -1
  42. data/lib/search_solr_tools/selectors/ices_iso.rb +2 -1
  43. data/lib/search_solr_tools/selectors/ncdc_paleo.rb +2 -1
  44. data/lib/search_solr_tools/selectors/nmi.rb +2 -1
  45. data/lib/search_solr_tools/selectors/nodc_iso.rb +2 -1
  46. data/lib/search_solr_tools/selectors/pdc_iso.rb +2 -1
  47. data/lib/search_solr_tools/selectors/r2r.rb +3 -1
  48. data/lib/search_solr_tools/selectors/rda.rb +2 -1
  49. data/lib/search_solr_tools/selectors/tdar_opensearch.rb +3 -1
  50. data/lib/search_solr_tools/selectors/usgs_iso.rb +3 -1
  51. data/lib/search_solr_tools/translators/eol_to_solr.rb +2 -0
  52. data/lib/search_solr_tools/version.rb +1 -1
  53. data/search_solr_tools.gemspec +21 -22
  54. metadata +44 -55
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 16b47cc43d16191bdd5f9f6390bc8b8fc5d373a8
4
- data.tar.gz: d333dca497d2b19182f12a25c55c11dd99f011c9
2
+ SHA256:
3
+ metadata.gz: c22c657599dd75b0f4e04961da160ed73ac0c6b4e787b3e1545befa5292e801d
4
+ data.tar.gz: fec281b34ff09a897032587eb22dfbf4f70a66f39dc6d27b1d2cb19979cb810e
5
5
  SHA512:
6
- metadata.gz: 8b27814b1d8a92e042c7bd1a41e5670df335da192e61a2b28ba6abf8b104573f89ed1a8e7b3094265f7b3c58aa7eebb68b374629d396e46bf6028933bc52f1b8
7
- data.tar.gz: 0e12bc0d4857609db75239a068ccc902165f7db8b993bb8c979d2ee2c3dd5d5c8f58397dea0d70bef626d22d8418a9e25bfc5e0cfba92c0f57fa38d99e7977d1
6
+ metadata.gz: 7b594152e0c38dde528956ab498010d3920918bf0e9d1566213ab1ab6d6a2733766c62a18f7c69016d35ab939131c561b762a6fb208aa2cb21c294cbced5d7da
7
+ data.tar.gz: 20445ab31dada428637e003b0c6143b7ae39d350222d45f3e5916cafc81f6735341a1b197cd6990b1acf888b5802ce2ca5c5c32e1cb3a98e72d497bda1adb964
@@ -1,9 +1,53 @@
1
- ## v3.9.0 (2017-04-10)
1
+ ## Unreleased
2
+
3
+ - Update Ruby to 2.6.5, update gem dependencies to more recent version.
4
+ - Updates to correspond with an update to Solr 8.5.2
5
+
6
+ ## v4.2.1 (2019-08-13)
7
+
8
+ - Patch release to include updated CHANGELOG.
9
+
10
+ ## v4.2.0 (2019-08-12)
11
+
12
+ - Update dataset-catalog-services URL to only fetch current (*not* retired)
13
+ metadata records.
14
+ - Add a few more gem release notes to README.
15
+
16
+ Note: v4.1.0 was prematurely released and, in theory, yanked. However, on the
17
+ second try at publishing 4.1.0, Rubygems complained about the attempt to
18
+ republish a gem. The version was therefore bumped again to 4.2.0 as the path of
19
+ least resistance to a successful publish. v4.1.0 should not be used.
20
+
21
+ ## v4.0.1 (2019-07-08)
22
+
23
+ - Update CHANGELOG and release instructions.
24
+ - Fix README typo.
25
+
26
+ ## v4.0.0 (2019-07-08)
27
+
28
+ Changes:
29
+
30
+ - Update spatial field formatting to work with Solr 8.1.1.
31
+
32
+ ## v3.11.0 (2019-06-10)
33
+
34
+ Changes:
35
+
36
+ - Update Ruby, Nokogiri, RestClient, Rubocop, and Webmock versions to address
37
+ security warnings.
38
+ - Update syntax as necessary for new versions of Rubocop and RestClient.
39
+
40
+ ## v3.10.0 (2017-04-10)
2
41
 
3
42
  Changes
4
43
 
5
44
  - Constrain ADC and ECHO feeds to only fetch records in the arctic.
6
45
 
46
+ Note
47
+ - v3.9.1 and v3.10.0 were mistakenly released after version 3.9.0 was
48
+ tagged. All three versions are identical, although v3.9.0 was never
49
+ released to rubygems.org.
50
+
7
51
  ## v3.8.4 (2017-03-30)
8
52
 
9
53
  Bugfix
data/README.md CHANGED
@@ -61,7 +61,7 @@ Once you have the gem built in the project directory, install the utility:
61
61
 
62
62
  ### Requirements
63
63
 
64
- * Ruby > 2.0.0
64
+ * Ruby > 2.6.5
65
65
  * [Bundler](http://bundler.io/)
66
66
  * Requirements for nokogiri:
67
67
  * [libxml2/libxml2-dev](http://xmlsoft.org/)
@@ -105,7 +105,7 @@ Please be sure to run them in the `bundle exec` context if you're utilizing bund
105
105
 
106
106
  Requirements:
107
107
 
108
- * Ruby > 2.0.0
108
+ * Ruby > 2.6.5
109
109
  * [Bundler](http://bundler.io/)
110
110
  * [Gem Release](https://github.com/svenfuchs/gem-release)
111
111
  * [Rake](https://github.com/ruby/rake)
@@ -113,6 +113,10 @@ Requirements:
113
113
  [ownership](http://guides.rubygems.org/publishing/) of the gem
114
114
  * RuboCop and the unit tests should all pass (`rake`)
115
115
 
116
+ The [CHANGELOG.md](CHANGELOG.md) is not automatically updated by the
117
+ `rake release:*` tasks. Update it manually to insert the correct version and
118
+ date, and commit the file, before creating the release package.
119
+
116
120
  **gem release** is used by rake tasks in this project to handle version changes,
117
121
  tagging, and publishing to RubyGems.
118
122
 
@@ -130,16 +134,28 @@ tagging, and publishing to RubyGems.
130
134
  * the changes are pushed
131
135
  * the tagged version is built and published to RubyGems
132
136
 
133
- ### SOLR:
137
+ You will need to have a current Rubygems API key for the _NSIDC developer user_ account in
138
+ order to publish a new version of the gem to Rubygems. To get the lastest API key:
139
+
140
+ `curl -u <username> https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials`
141
+
142
+ ## Release steps (summary)
143
+
144
+ - Confirm no errors are returned by `bundle exec rubocop`
145
+ - Confirm all tests pass (`bundle exec rake spec:unit`)
146
+ - Update the version number and date manually in `CHANGELOG.md` and commit the
147
+ changes.
148
+ - Run the appropriate `bundle exec rake release:*` task
149
+
150
+ ### SOLR
134
151
 
135
- To harvest data utilizing the gem, you will need a local configured instance of
136
- Solr 4.3, which can be downloaded from
137
- [Apache's archive](https://archive.apache.org/dist/lucene/solr/4.3.0/).
152
+ To harvest data utilizing the gem, you will need an installed instance of [Solr
153
+ 8.5.3](https://lucene.apache.org/solr/guide/)
138
154
 
139
155
  #### NSIDC
140
156
 
141
157
  At NSIDC the development VM can be provisioned with the
142
- [solr puppet module](https://bitbucket.org/nsidc/puppet-solr/) to install and
158
+ [solr puppet module](https://bitbucket.org/nsidc/puppet-nsidc-solr/) to install and
143
159
  configure Solr.
144
160
 
145
161
  #### Non-NSIDC
@@ -172,17 +188,17 @@ the `--environment` flag when running `search_solr_tools harvest`.
172
188
 
173
189
  ### How to contact NSIDC
174
190
 
175
- User Services and general information:
176
- Support: [http://support.nsidc.org](http://support.nsidc.org)
191
+ User Services and general information:
192
+ Support: [http://support.nsidc.org](http://support.nsidc.org)
177
193
  Email: nsidc@nsidc.org
178
194
 
179
- Phone: +1 303.492.6199
195
+ Phone: +1 303.492.6199
180
196
  Fax: +1 303.492.2468
181
197
 
182
- Mailing address:
183
- National Snow and Ice Data Center
184
- CIRES, 449 UCB
185
- University of Colorado
198
+ Mailing address:
199
+ National Snow and Ice Data Center
200
+ CIRES, 449 UCB
201
+ University of Colorado
186
202
  Boulder, CO 80309-0449 USA
187
203
 
188
204
  ### License
@@ -1,27 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  require 'search_solr_tools'
3
5
  require 'thor'
4
6
 
5
7
  class SolrHarvestCLI < Thor
6
- map %w(--version -v) => :__print_version
8
+ map %w[--version -v] => :__print_version
7
9
 
8
10
  desc '--version, -v', 'print the version'
9
11
  def __print_version
10
12
  puts SearchSolrTools::VERSION
11
13
  end
12
14
 
13
- desc 'harvest', 'Harvest from one of the ADE harvesters'
15
+ desc 'harvest', 'Harvest from the specified data centers'
14
16
  option :data_center, type: :array, required: true
15
17
  option :environment, required: true
16
18
  option :die_on_failure, type: :boolean
17
19
  def harvest(die_on_failure = options[:die_on_failure] || false)
18
20
  options[:data_center].each do |target|
19
- puts target
21
+ puts "Target: #{target}"
20
22
  begin
21
23
  harvest_class = get_harvester_class(target)
22
24
  harvester = harvest_class.new(options[:environment], die_on_failure)
23
25
  harvester.harvest_and_delete
24
- rescue => e
26
+ rescue StandardError => e
25
27
  puts "harvest failed for #{target}: #{e.message}"
26
28
  raise e
27
29
  end
@@ -64,30 +66,26 @@ class SolrHarvestCLI < Thor
64
66
  no_tasks do
65
67
  def harvester_map
66
68
  {
67
- 'bco_dmo' => SearchSolrTools::Harvesters::BcoDmo,
68
- 'adc' => SearchSolrTools::Harvesters::Adc,
69
- 'data_one' => SearchSolrTools::Harvesters::DataOne,
70
- 'echo' => SearchSolrTools::Harvesters::Echo,
71
- 'eol' => SearchSolrTools::Harvesters::Eol,
72
- 'gtnp' => SearchSolrTools::Harvesters::GtnP,
73
- 'ices' => SearchSolrTools::Harvesters::Ices,
74
- 'ncdc_paleo' => SearchSolrTools::Harvesters::NcdcPaleo,
75
- 'nmi' => SearchSolrTools::Harvesters::Nmi,
76
- 'nodc' => SearchSolrTools::Harvesters::Nodc,
77
- 'r2r' => SearchSolrTools::Harvesters::R2R,
78
- 'rda' => SearchSolrTools::Harvesters::Rda,
79
- 'usgs' => SearchSolrTools::Harvesters::Usgs,
80
- 'tdar' => SearchSolrTools::Harvesters::Tdar,
81
- 'pdc' => SearchSolrTools::Harvesters::Pdc,
82
- 'nsidc' => SearchSolrTools::Harvesters::NsidcJson,
69
+ 'bco_dmo' => SearchSolrTools::Harvesters::BcoDmo,
70
+ 'adc' => SearchSolrTools::Harvesters::Adc,
71
+ 'echo' => SearchSolrTools::Harvesters::Echo,
72
+ 'ices' => SearchSolrTools::Harvesters::Ices,
73
+ 'nmi' => SearchSolrTools::Harvesters::Nmi,
74
+ 'nodc' => SearchSolrTools::Harvesters::Nodc,
75
+ 'r2r' => SearchSolrTools::Harvesters::R2R,
76
+ 'rda' => SearchSolrTools::Harvesters::Rda,
77
+ 'usgs' => SearchSolrTools::Harvesters::Usgs,
78
+ 'tdar' => SearchSolrTools::Harvesters::Tdar,
79
+ 'pdc' => SearchSolrTools::Harvesters::Pdc,
80
+ 'nsidc' => SearchSolrTools::Harvesters::NsidcJson,
83
81
  'nsidc_auto_suggest' => SearchSolrTools::Harvesters::NsidcAutoSuggest,
84
- 'ade_auto_suggest' => SearchSolrTools::Harvesters::AdeAutoSuggest
82
+ 'ade_auto_suggest' => SearchSolrTools::Harvesters::AdeAutoSuggest
85
83
  }
86
84
  end
87
85
 
88
86
  def get_harvester_class(data_center_name)
89
87
  name = data_center_name.downcase.to_s
90
- fail("Invalid data center #{name}") unless harvester_map.key?(name)
88
+ raise("Invalid data center #{name}") unless harvester_map.key?(name)
91
89
 
92
90
  harvester_map[name]
93
91
  end
@@ -1,8 +1,7 @@
1
- require 'require_all'
2
- require_relative './search_solr_tools/config/environments'
3
- require_relative './search_solr_tools/version'
1
+ require_relative 'search_solr_tools/config/environments'
2
+ require_relative 'search_solr_tools/version'
4
3
 
5
- require_rel './search_solr_tools/helpers'
6
- require_rel './search_solr_tools/selectors'
7
- require_rel './search_solr_tools/harvesters'
8
- require_rel './search_solr_tools/translators'
4
+ require_relative 'search_solr_tools/helpers/selectors'
5
+ %w( selectors harvesters translators ).each do |subdir|
6
+ Dir[File.join(__dir__, 'search_solr_tools', subdir, '*.rb')].each { |file| require file }
7
+ end
@@ -36,39 +36,38 @@
36
36
  - http://data.eol.ucar.edu/jedi/catalog/ucar.ncar.eol.project.ITEX.thredds.xml
37
37
  :r2r_url: http://get.rvdata.us/services/cruise/
38
38
 
39
+ # Not using DCS API v2 here because not all retired datasets have their "retired"
40
+ # flag checked. For example, GLA01.033 is retired; GLA01.018 is not, but it
41
+ # should be. GLA01.018 will show up if we use DCS API v2.
42
+ :nsidc_oai_identifiers_url: oai?verb=ListIdentifiers&metadata_prefix=iso&retired=false
43
+
39
44
  :local:
40
45
  :host: localhost
41
46
  :nsidc_dataset_metadata_url: http://integration.nsidc.org/api/dataset/metadata/
42
- :nsidc_oai_identifiers_url: http://integration.nsidc.org/api/dataset/metadata/oai?verb=ListIdentifiers&metadata_prefix=iso
43
47
 
44
48
  :dev:
45
49
  ## For the below, you'll need to instantiate your own search-solr instance, and point host to that.
46
50
  :host: dev.search-solr.USERNAME.dev.int.nsidc.org
47
- ## For these, either set up your own instance of dataset serach catalog or change it to point to integration
51
+ ## For the metadata content, either set up your own instance of dataset-catalog-services
52
+ ## or change the URL below to point to integration
48
53
  :nsidc_dataset_metadata_url: http://dev.dcs.USERNAME.dev.int.nsidc.org:1580/api/dataset/metadata/
49
- :nsidc_oai_identifiers_url: http://dev.dcs.USERNAME.dev.int.nsidc.org:1580/api/dataset/metadata/oai?verb=ListIdentifiers&metadata_prefix=iso
50
54
 
51
55
  :integration:
52
56
  :host: integration.search-solr.apps.int.nsidc.org
53
57
  :nsidc_dataset_metadata_url: http://integration.nsidc.org/api/dataset/metadata/
54
- :nsidc_oai_identifiers_url: http://integration.nsidc.org/api/dataset/metadata/oai?verb=ListIdentifiers&metadata_prefix=iso
55
58
 
56
59
  :qa:
57
60
  :host: qa.search-solr.apps.int.nsidc.org
58
61
  :nsidc_dataset_metadata_url: http://qa.nsidc.org/api/dataset/metadata/
59
- :nsidc_oai_identifiers_url: http://qa.nsidc.org/api/dataset/metadata/oai?verb=ListIdentifiers&metadata_prefix=iso
60
62
 
61
63
  :staging:
62
64
  :host: staging.search-solr.apps.int.nsidc.org
63
65
  :nsidc_dataset_metadata_url: http://staging.nsidc.org/api/dataset/metadata/
64
- :nsidc_oai_identifiers_url: http://staging.nsidc.org/api/dataset/metadata/oai?verb=ListIdentifiers&metadata_prefix=iso
65
66
 
66
67
  :blue:
67
68
  :host: blue.search-solr.apps.int.nsidc.org
68
69
  :nsidc_dataset_metadata_url: http://nsidc.org/api/dataset/metadata/
69
- :nsidc_oai_identifiers_url: http://nsidc.org/api/dataset/metadata/oai?verb=ListIdentifiers&metadata_prefix=iso
70
70
 
71
71
  :production:
72
72
  :host: search-solr.apps.int.nsidc.org
73
73
  :nsidc_dataset_metadata_url: http://nsidc.org/api/dataset/metadata/
74
- :nsidc_oai_identifiers_url: http://nsidc.org/api/dataset/metadata/oai?verb=ListIdentifiers&metadata_prefix=iso
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  class Adc < Base
@@ -1,3 +1,5 @@
1
+ require_relative 'auto_suggest'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  class AdeAutoSuggest < AutoSuggest
@@ -1,3 +1,4 @@
1
+ require_relative 'base'
1
2
  require 'json'
2
3
  require 'rest-client'
3
4
 
@@ -43,7 +43,7 @@ module SearchSolrTools
43
43
  constraints = sanitize_data_centers_constraints(constraints)
44
44
  delete_query = "last_update:[* TO #{timestamp}] AND #{constraints}"
45
45
  solr = RSolr.connect url: solr_url + "/#{solr_core}"
46
- unchanged_count = (solr.get 'select', params: { q: delete_query, rows: 0 })['response']['numFound'].to_i
46
+ unchanged_count = (solr.get 'select', params: { wt: :ruby, q: delete_query, rows: 0 })['response']['numFound'].to_i
47
47
  if unchanged_count == 0
48
48
  puts "All documents were updated after #{timestamp}, nothing to delete"
49
49
  else
@@ -61,7 +61,7 @@ module SearchSolrTools
61
61
  end
62
62
 
63
63
  def remove_documents(solr, delete_query, constraints, force, numfound)
64
- all_response_count = (solr.get 'select', params: { q: constraints, rows: 0 })['response']['numFound']
64
+ all_response_count = (solr.get 'select', params: { wt: :ruby, q: constraints, rows: 0 })['response']['numFound']
65
65
  if force || (numfound / all_response_count.to_f < DELETE_DOCUMENTS_RATIO)
66
66
  puts "Deleting #{numfound} documents for #{constraints}"
67
67
  solr.delete_by_query delete_query
@@ -1,3 +1,4 @@
1
+ require_relative 'base'
1
2
  require 'json'
2
3
  require 'rest-client'
3
4
 
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  class DataOne < Base
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  # Harvests data from ECHO and inserts it into Solr after it has been translated
@@ -1,3 +1,4 @@
1
+ require_relative 'base'
1
2
  require 'json'
2
3
  require 'rest-client'
3
4
 
@@ -1,3 +1,4 @@
1
+ require_relative 'base'
1
2
  module SearchSolrTools
2
3
  module Harvesters
3
4
  # Harvests data from ICES and inserts it into Solr after it has been translated
@@ -1,3 +1,4 @@
1
+ require_relative 'base'
1
2
  module SearchSolrTools
2
3
  module Harvesters
3
4
  # Harvests data from NODC PALEO and inserts it into Solr after it has been translated
@@ -1,3 +1,5 @@
1
+ require_relative 'oai'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  class Nmi < Oai
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  # Harvests data from NODC and inserts it into Solr after it has been translated
@@ -1,3 +1,5 @@
1
+ require_relative 'auto_suggest'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  class NsidcAutoSuggest < AutoSuggest
@@ -31,9 +31,14 @@ module SearchSolrTools
31
31
  end
32
32
 
33
33
  def result_ids_from_nsidc
34
- get_results SolrEnvironments[@environment][:nsidc_oai_identifiers_url], '//xmlns:identifier'
34
+ url = SolrEnvironments[@environment][:nsidc_dataset_metadata_url] +
35
+ SolrEnvironments[@environment][:nsidc_oai_identifiers_url]
36
+ get_results url, '//xmlns:identifier'
35
37
  end
36
38
 
39
+ # Fetch a JSON representation of a dataset's metadata
40
+ # @param id [String] NSIDC authoritative ID for the dataset
41
+ # @return [Hash] Parsed version of the JSON response
37
42
  def fetch_json_from_nsidc(id)
38
43
  json_response = RestClient.get(nsidc_json_url + id + '.json')
39
44
  JSON.parse(json_response)
@@ -44,6 +49,8 @@ module SearchSolrTools
44
49
  failure_ids = []
45
50
 
46
51
  result_ids_from_nsidc.each do |r|
52
+ # Each result looks like:
53
+ # oai:nsidc.org/AE_L2A
47
54
  id = r.text.split('/').last
48
55
  begin
49
56
  docs << { 'add' => { 'doc' => @translator.translate(fetch_json_from_nsidc(id)) } }
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  require 'json'
2
4
 
3
5
  module SearchSolrTools
@@ -1,3 +1,5 @@
1
+ require_relative 'oai'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  # Harvests data from Polar data catalogue and inserts it into
@@ -1,8 +1,8 @@
1
+ require_relative 'base'
2
+
1
3
  require 'nokogiri'
2
4
  require 'rest-client'
3
5
 
4
- require_relative 'base'
5
-
6
6
  module SearchSolrTools
7
7
  module Harvesters
8
8
  class R2R < Base
@@ -1,3 +1,5 @@
1
+ require_relative 'oai'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  # Harvests the RDA feed
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  # Harvests data from TDAR and inserts it into Solr after it has been translated
@@ -1,3 +1,5 @@
1
+ require_relative 'base'
2
+
1
3
  module SearchSolrTools
2
4
  module Harvesters
3
5
  # Harvests data from USGS and inserts it into Solr after it has been translated
@@ -1,6 +1,6 @@
1
- require_relative './iso_namespaces'
2
- require_relative './iso_to_solr_format'
3
- require_relative './solr_format'
1
+ require_relative 'iso_namespaces'
2
+ require_relative 'iso_to_solr_format'
3
+ require_relative 'solr_format'
4
4
 
5
5
  module SearchSolrTools
6
6
  module Helpers
@@ -8,7 +8,7 @@ module SearchSolrTools
8
8
  class FacetConfiguration
9
9
  include Singleton
10
10
  def self.import_bin_configuration(env)
11
- @bin_configuration = JSON.parse(RestClient.get(SolrEnvironments[env][:nsidc_dataset_metadata_url] + '/binConfiguration')) if @bin_configuration.nil?
11
+ @bin_configuration = JSON.parse(RestClient.get(SolrEnvironments[env][:nsidc_dataset_metadata_url] + 'binConfiguration')) if @bin_configuration.nil?
12
12
  end
13
13
 
14
14
  def self.get_facet_bin(facet_name)
@@ -1,10 +1,11 @@
1
+ require_relative 'selectors'
1
2
  require 'nokogiri'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Helpers
5
- # Translates ISO nokogiri documents into solr nokogiri documents using a hash driver object
6
- # This class should be constructed passing the selector file hash as a parameter (see selectors.rb)
7
- # after creating an instance we call transtale with a nokogiri iso document as a parameter.
6
+ # Translates ISO nokogiri documents into solr nokogiri documents using a hash driver object.
7
+ # This class should be constructed passing the selector file hash as a parameter (see selectors.rb).
8
+ # After creating an instance we call translate with a nokogiri iso document as a parameter.
8
9
  class IsoToSolr
9
10
  def initialize(selector)
10
11
  @fields = SELECTORS[selector]
@@ -1,7 +1,7 @@
1
1
  require 'date'
2
2
 
3
- require_relative './iso_namespaces'
4
- require_relative './solr_format'
3
+ require_relative 'iso_namespaces'
4
+ require_relative 'solr_format'
5
5
 
6
6
  module SearchSolrTools
7
7
  module Helpers
@@ -1,8 +1,8 @@
1
1
  require 'date'
2
2
 
3
- require_relative './iso_namespaces'
4
- require_relative './solr_format'
5
- require_relative './iso_to_solr_format'
3
+ require_relative 'iso_namespaces'
4
+ require_relative 'solr_format'
5
+ require_relative 'iso_to_solr_format'
6
6
 
7
7
  module SearchSolrTools
8
8
  module Helpers
@@ -1,6 +1,6 @@
1
- require_relative './iso_namespaces'
2
- require_relative './iso_to_solr_format'
3
- require_relative './solr_format'
1
+ require_relative 'iso_namespaces'
2
+ require_relative 'iso_to_solr_format'
3
+ require_relative 'solr_format'
4
4
 
5
5
  module SearchSolrTools
6
6
  module Helpers
@@ -1,5 +1,4 @@
1
- require 'require_all'
2
- require_rel '../selectors'
1
+ Dir[File.join(__dir__, '..', 'selectors', '*.rb')].each { |file| require file }
3
2
 
4
3
  module SearchSolrTools
5
4
  module Helpers
@@ -2,6 +2,7 @@ require 'date'
2
2
  require 'iso8601'
3
3
 
4
4
  require_relative 'bounding_box_util'
5
+ require_relative 'facet_configuration'
5
6
 
6
7
  module SearchSolrTools
7
8
  module Helpers
@@ -1,6 +1,6 @@
1
- require_relative './iso_namespaces'
2
- require_relative './iso_to_solr_format'
3
- require_relative './solr_format'
1
+ require_relative 'iso_namespaces'
2
+ require_relative 'iso_to_solr_format'
3
+ require_relative 'solr_format'
4
4
 
5
5
  module SearchSolrTools
6
6
  module Helpers
@@ -1,7 +1,7 @@
1
1
  require 'rgeo/geo_json'
2
2
 
3
- require 'search_solr_tools/helpers/bounding_box_util'
4
- require 'search_solr_tools/helpers/iso_to_solr_format'
3
+ require_relative 'bounding_box_util'
4
+ require_relative 'iso_to_solr_format'
5
5
 
6
6
  module SearchSolrTools
7
7
  module Helpers
@@ -36,7 +36,7 @@ module SearchSolrTools
36
36
  "#{geo_json.x} #{geo_json.y}"
37
37
  else
38
38
  bbox = RGeo::Cartesian::BoundingBox.create_from_geometry(geo_json)
39
- "#{bbox.min_x} #{bbox.min_y} #{bbox.max_x} #{bbox.max_y}"
39
+ "ENVELOPE(#{bbox.min_x}, #{bbox.max_x}, #{bbox.max_y}, #{bbox.min_y})"
40
40
  end
41
41
  end
42
42
  end
@@ -1,6 +1,6 @@
1
1
  require 'rgeo/geo_json'
2
2
 
3
- require 'search_solr_tools/helpers/solr_format'
3
+ require_relative 'solr_format'
4
4
 
5
5
  module SearchSolrTools
6
6
  module Helpers
@@ -1,5 +1,5 @@
1
- require_relative './iso_namespaces'
2
- require_relative './iso_to_solr_format'
1
+ require_relative 'iso_namespaces'
2
+ require_relative 'iso_to_solr_format'
3
3
 
4
4
  module SearchSolrTools
5
5
  module Helpers
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/data_one_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/data_one_format'
2
+ require_relative '../helpers/solr_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/ncdc_paleo_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,6 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
3
+ require_relative '../helpers/r2r_format'
2
4
 
3
5
  module SearchSolrTools
4
6
  module Selectors
@@ -1,4 +1,5 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
2
3
 
3
4
  module SearchSolrTools
4
5
  module Selectors
@@ -1,4 +1,6 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
3
+ require_relative '../helpers/tdar_format'
2
4
 
3
5
  module SearchSolrTools
4
6
  module Selectors
@@ -1,4 +1,6 @@
1
- require 'search_solr_tools'
1
+ require_relative '../helpers/solr_format'
2
+ require_relative '../helpers/iso_to_solr_format'
3
+ require_relative '../helpers/usgs_format'
2
4
 
3
5
  module SearchSolrTools
4
6
  module Selectors
@@ -1,3 +1,5 @@
1
+ require 'search_solr_tools'
2
+
1
3
  module SearchSolrTools
2
4
  module Translators
3
5
  # Translates an EOL THREDDS dataset link set into a SOLR json ingest record
@@ -1,3 +1,3 @@
1
1
  module SearchSolrTools
2
- VERSION = '3.10.0'
2
+ VERSION = '6.0.0'
3
3
  end
@@ -7,8 +7,8 @@ gem_files = %(CHANGELOG.md COPYING README.md bin/ lib/ search_solr_tools.gemspec
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'search_solr_tools'
9
9
  spec.version = SearchSolrTools::VERSION
10
- spec.authors = ['Chris Chalstrom', 'Michael Brandt', 'Jonathan Kovarik', 'Luis Lopez', 'Stuart Reed']
11
- spec.email = ['cchalstr@nsidc.org', 'mbrandt@colorado.edu', 'kovarik@nsidc.org', 'luis.lopezespinosa@colorado.edu', 'stuart.reed@colorado.edu']
10
+ spec.authors = ['Chris Chalstrom', 'Michael Brandt', 'Jonathan Kovarik', 'Luis Lopez', 'Stuart Reed', 'Julia Collins', 'Scott Lewis']
11
+ spec.email = ['cchalstr@nsidc.org', 'mbrandt@colorado.edu', 'kovarik@nsidc.org', 'luis.lopezespinosa@colorado.edu', 'stuart.reed@colorado.edu', 'jcollins@nsidc.org', 'scott.lewis@nsidc.org']
12
12
  spec.summary = 'Tools to harvest and manage various scientific dataset feeds in a Solr instance.'
13
13
  spec.description = <<-EOF
14
14
  Ruby translators to transform various metadata feeds into solr documents and
@@ -23,25 +23,24 @@ Gem::Specification.new do |spec|
23
23
  spec.test_files = spec.files.grep(/^(test|spec|features)\//)
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.required_ruby_version = '~> 2.0'
26
+ spec.required_ruby_version = '~> 2.6.5'
27
27
 
28
- spec.add_runtime_dependency 'ffi-geos', '~> 1.2.0'
29
- spec.add_runtime_dependency 'iso8601', '~> 0.8'
30
- spec.add_runtime_dependency 'multi_json', '~> 1.11'
31
- spec.add_runtime_dependency 'nokogiri', '~> 1.6'
32
- spec.add_runtime_dependency 'require_all', '~> 1.3'
33
- spec.add_runtime_dependency 'rest-client', '~> 1.6'
34
- spec.add_runtime_dependency 'rgeo', '~> 0.3'
35
- spec.add_runtime_dependency 'rgeo-geojson', '~> 0.3'
36
- spec.add_runtime_dependency 'rsolr', '~> 1.0'
37
- spec.add_runtime_dependency 'thor', '~> 0.18'
38
- spec.add_development_dependency 'gem-release', '~> 0.7'
39
- spec.add_development_dependency 'guard', '~> 2.12'
40
- spec.add_development_dependency 'guard-rspec', '~> 4.6'
41
- spec.add_development_dependency 'guard-rubocop', '~> 1.2'
42
- spec.add_development_dependency 'rake', '~> 10.4'
43
- spec.add_development_dependency 'rspec', '~> 3.2'
44
- spec.add_development_dependency 'rubocop', '~> 0.32.1'
45
- spec.add_development_dependency 'webmock', '~> 1.13'
46
- spec.add_development_dependency 'listen', '3.0.5'
28
+ spec.add_runtime_dependency 'ffi-geos', '~> 2.1.0'
29
+ spec.add_runtime_dependency 'iso8601', '~> 0.12.2'
30
+ spec.add_runtime_dependency 'multi_json', '~> 1.14.1'
31
+ spec.add_runtime_dependency 'nokogiri', '~> 1.10.9'
32
+ spec.add_runtime_dependency 'rest-client', '~> 2.1.0'
33
+ spec.add_runtime_dependency 'rgeo', '~> 2.1.1'
34
+ spec.add_runtime_dependency 'rgeo-geojson', '~> 2.1.1'
35
+ spec.add_runtime_dependency 'rsolr', '~> 2.3.0'
36
+ spec.add_runtime_dependency 'thor', '~> 1.0.1'
37
+ spec.add_development_dependency 'gem-release', '~> 2.1.1'
38
+ spec.add_development_dependency 'guard', '~> 2.16.2'
39
+ spec.add_development_dependency 'guard-rspec', '~> 4.7.3'
40
+ spec.add_development_dependency 'guard-rubocop', '~> 1.3'
41
+ spec.add_development_dependency 'rake', '~> 13.0.1'
42
+ spec.add_development_dependency 'rspec', '~> 3.9.0'
43
+ spec.add_development_dependency 'rubocop', '~> 0.86.0'
44
+ spec.add_development_dependency 'webmock', '~> 3.8.3'
45
+ spec.add_development_dependency 'listen', '3.2.1'
47
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: search_solr_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Chalstrom
@@ -9,10 +9,12 @@ authors:
9
9
  - Jonathan Kovarik
10
10
  - Luis Lopez
11
11
  - Stuart Reed
12
+ - Julia Collins
13
+ - Scott Lewis
12
14
  autorequire:
13
15
  bindir: bin
14
16
  cert_chain: []
15
- date: 2017-04-10 00:00:00.000000000 Z
17
+ date: 2020-07-02 00:00:00.000000000 Z
16
18
  dependencies:
17
19
  - !ruby/object:Gem::Dependency
18
20
  name: ffi-geos
@@ -20,266 +22,252 @@ dependencies:
20
22
  requirements:
21
23
  - - "~>"
22
24
  - !ruby/object:Gem::Version
23
- version: 1.2.0
25
+ version: 2.1.0
24
26
  type: :runtime
25
27
  prerelease: false
26
28
  version_requirements: !ruby/object:Gem::Requirement
27
29
  requirements:
28
30
  - - "~>"
29
31
  - !ruby/object:Gem::Version
30
- version: 1.2.0
32
+ version: 2.1.0
31
33
  - !ruby/object:Gem::Dependency
32
34
  name: iso8601
33
35
  requirement: !ruby/object:Gem::Requirement
34
36
  requirements:
35
37
  - - "~>"
36
38
  - !ruby/object:Gem::Version
37
- version: '0.8'
39
+ version: 0.12.2
38
40
  type: :runtime
39
41
  prerelease: false
40
42
  version_requirements: !ruby/object:Gem::Requirement
41
43
  requirements:
42
44
  - - "~>"
43
45
  - !ruby/object:Gem::Version
44
- version: '0.8'
46
+ version: 0.12.2
45
47
  - !ruby/object:Gem::Dependency
46
48
  name: multi_json
47
49
  requirement: !ruby/object:Gem::Requirement
48
50
  requirements:
49
51
  - - "~>"
50
52
  - !ruby/object:Gem::Version
51
- version: '1.11'
53
+ version: 1.14.1
52
54
  type: :runtime
53
55
  prerelease: false
54
56
  version_requirements: !ruby/object:Gem::Requirement
55
57
  requirements:
56
58
  - - "~>"
57
59
  - !ruby/object:Gem::Version
58
- version: '1.11'
60
+ version: 1.14.1
59
61
  - !ruby/object:Gem::Dependency
60
62
  name: nokogiri
61
63
  requirement: !ruby/object:Gem::Requirement
62
64
  requirements:
63
65
  - - "~>"
64
66
  - !ruby/object:Gem::Version
65
- version: '1.6'
67
+ version: 1.10.9
66
68
  type: :runtime
67
69
  prerelease: false
68
70
  version_requirements: !ruby/object:Gem::Requirement
69
71
  requirements:
70
72
  - - "~>"
71
73
  - !ruby/object:Gem::Version
72
- version: '1.6'
73
- - !ruby/object:Gem::Dependency
74
- name: require_all
75
- requirement: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - "~>"
78
- - !ruby/object:Gem::Version
79
- version: '1.3'
80
- type: :runtime
81
- prerelease: false
82
- version_requirements: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - "~>"
85
- - !ruby/object:Gem::Version
86
- version: '1.3'
74
+ version: 1.10.9
87
75
  - !ruby/object:Gem::Dependency
88
76
  name: rest-client
89
77
  requirement: !ruby/object:Gem::Requirement
90
78
  requirements:
91
79
  - - "~>"
92
80
  - !ruby/object:Gem::Version
93
- version: '1.6'
81
+ version: 2.1.0
94
82
  type: :runtime
95
83
  prerelease: false
96
84
  version_requirements: !ruby/object:Gem::Requirement
97
85
  requirements:
98
86
  - - "~>"
99
87
  - !ruby/object:Gem::Version
100
- version: '1.6'
88
+ version: 2.1.0
101
89
  - !ruby/object:Gem::Dependency
102
90
  name: rgeo
103
91
  requirement: !ruby/object:Gem::Requirement
104
92
  requirements:
105
93
  - - "~>"
106
94
  - !ruby/object:Gem::Version
107
- version: '0.3'
95
+ version: 2.1.1
108
96
  type: :runtime
109
97
  prerelease: false
110
98
  version_requirements: !ruby/object:Gem::Requirement
111
99
  requirements:
112
100
  - - "~>"
113
101
  - !ruby/object:Gem::Version
114
- version: '0.3'
102
+ version: 2.1.1
115
103
  - !ruby/object:Gem::Dependency
116
104
  name: rgeo-geojson
117
105
  requirement: !ruby/object:Gem::Requirement
118
106
  requirements:
119
107
  - - "~>"
120
108
  - !ruby/object:Gem::Version
121
- version: '0.3'
109
+ version: 2.1.1
122
110
  type: :runtime
123
111
  prerelease: false
124
112
  version_requirements: !ruby/object:Gem::Requirement
125
113
  requirements:
126
114
  - - "~>"
127
115
  - !ruby/object:Gem::Version
128
- version: '0.3'
116
+ version: 2.1.1
129
117
  - !ruby/object:Gem::Dependency
130
118
  name: rsolr
131
119
  requirement: !ruby/object:Gem::Requirement
132
120
  requirements:
133
121
  - - "~>"
134
122
  - !ruby/object:Gem::Version
135
- version: '1.0'
123
+ version: 2.3.0
136
124
  type: :runtime
137
125
  prerelease: false
138
126
  version_requirements: !ruby/object:Gem::Requirement
139
127
  requirements:
140
128
  - - "~>"
141
129
  - !ruby/object:Gem::Version
142
- version: '1.0'
130
+ version: 2.3.0
143
131
  - !ruby/object:Gem::Dependency
144
132
  name: thor
145
133
  requirement: !ruby/object:Gem::Requirement
146
134
  requirements:
147
135
  - - "~>"
148
136
  - !ruby/object:Gem::Version
149
- version: '0.18'
137
+ version: 1.0.1
150
138
  type: :runtime
151
139
  prerelease: false
152
140
  version_requirements: !ruby/object:Gem::Requirement
153
141
  requirements:
154
142
  - - "~>"
155
143
  - !ruby/object:Gem::Version
156
- version: '0.18'
144
+ version: 1.0.1
157
145
  - !ruby/object:Gem::Dependency
158
146
  name: gem-release
159
147
  requirement: !ruby/object:Gem::Requirement
160
148
  requirements:
161
149
  - - "~>"
162
150
  - !ruby/object:Gem::Version
163
- version: '0.7'
151
+ version: 2.1.1
164
152
  type: :development
165
153
  prerelease: false
166
154
  version_requirements: !ruby/object:Gem::Requirement
167
155
  requirements:
168
156
  - - "~>"
169
157
  - !ruby/object:Gem::Version
170
- version: '0.7'
158
+ version: 2.1.1
171
159
  - !ruby/object:Gem::Dependency
172
160
  name: guard
173
161
  requirement: !ruby/object:Gem::Requirement
174
162
  requirements:
175
163
  - - "~>"
176
164
  - !ruby/object:Gem::Version
177
- version: '2.12'
165
+ version: 2.16.2
178
166
  type: :development
179
167
  prerelease: false
180
168
  version_requirements: !ruby/object:Gem::Requirement
181
169
  requirements:
182
170
  - - "~>"
183
171
  - !ruby/object:Gem::Version
184
- version: '2.12'
172
+ version: 2.16.2
185
173
  - !ruby/object:Gem::Dependency
186
174
  name: guard-rspec
187
175
  requirement: !ruby/object:Gem::Requirement
188
176
  requirements:
189
177
  - - "~>"
190
178
  - !ruby/object:Gem::Version
191
- version: '4.6'
179
+ version: 4.7.3
192
180
  type: :development
193
181
  prerelease: false
194
182
  version_requirements: !ruby/object:Gem::Requirement
195
183
  requirements:
196
184
  - - "~>"
197
185
  - !ruby/object:Gem::Version
198
- version: '4.6'
186
+ version: 4.7.3
199
187
  - !ruby/object:Gem::Dependency
200
188
  name: guard-rubocop
201
189
  requirement: !ruby/object:Gem::Requirement
202
190
  requirements:
203
191
  - - "~>"
204
192
  - !ruby/object:Gem::Version
205
- version: '1.2'
193
+ version: '1.3'
206
194
  type: :development
207
195
  prerelease: false
208
196
  version_requirements: !ruby/object:Gem::Requirement
209
197
  requirements:
210
198
  - - "~>"
211
199
  - !ruby/object:Gem::Version
212
- version: '1.2'
200
+ version: '1.3'
213
201
  - !ruby/object:Gem::Dependency
214
202
  name: rake
215
203
  requirement: !ruby/object:Gem::Requirement
216
204
  requirements:
217
205
  - - "~>"
218
206
  - !ruby/object:Gem::Version
219
- version: '10.4'
207
+ version: 13.0.1
220
208
  type: :development
221
209
  prerelease: false
222
210
  version_requirements: !ruby/object:Gem::Requirement
223
211
  requirements:
224
212
  - - "~>"
225
213
  - !ruby/object:Gem::Version
226
- version: '10.4'
214
+ version: 13.0.1
227
215
  - !ruby/object:Gem::Dependency
228
216
  name: rspec
229
217
  requirement: !ruby/object:Gem::Requirement
230
218
  requirements:
231
219
  - - "~>"
232
220
  - !ruby/object:Gem::Version
233
- version: '3.2'
221
+ version: 3.9.0
234
222
  type: :development
235
223
  prerelease: false
236
224
  version_requirements: !ruby/object:Gem::Requirement
237
225
  requirements:
238
226
  - - "~>"
239
227
  - !ruby/object:Gem::Version
240
- version: '3.2'
228
+ version: 3.9.0
241
229
  - !ruby/object:Gem::Dependency
242
230
  name: rubocop
243
231
  requirement: !ruby/object:Gem::Requirement
244
232
  requirements:
245
233
  - - "~>"
246
234
  - !ruby/object:Gem::Version
247
- version: 0.32.1
235
+ version: 0.86.0
248
236
  type: :development
249
237
  prerelease: false
250
238
  version_requirements: !ruby/object:Gem::Requirement
251
239
  requirements:
252
240
  - - "~>"
253
241
  - !ruby/object:Gem::Version
254
- version: 0.32.1
242
+ version: 0.86.0
255
243
  - !ruby/object:Gem::Dependency
256
244
  name: webmock
257
245
  requirement: !ruby/object:Gem::Requirement
258
246
  requirements:
259
247
  - - "~>"
260
248
  - !ruby/object:Gem::Version
261
- version: '1.13'
249
+ version: 3.8.3
262
250
  type: :development
263
251
  prerelease: false
264
252
  version_requirements: !ruby/object:Gem::Requirement
265
253
  requirements:
266
254
  - - "~>"
267
255
  - !ruby/object:Gem::Version
268
- version: '1.13'
256
+ version: 3.8.3
269
257
  - !ruby/object:Gem::Dependency
270
258
  name: listen
271
259
  requirement: !ruby/object:Gem::Requirement
272
260
  requirements:
273
261
  - - '='
274
262
  - !ruby/object:Gem::Version
275
- version: 3.0.5
263
+ version: 3.2.1
276
264
  type: :development
277
265
  prerelease: false
278
266
  version_requirements: !ruby/object:Gem::Requirement
279
267
  requirements:
280
268
  - - '='
281
269
  - !ruby/object:Gem::Version
282
- version: 3.0.5
270
+ version: 3.2.1
283
271
  description: |2
284
272
  Ruby translators to transform various metadata feeds into solr documents and
285
273
  a command-line utility to access/utilize the gem's translators to harvest
@@ -290,6 +278,8 @@ email:
290
278
  - kovarik@nsidc.org
291
279
  - luis.lopezespinosa@colorado.edu
292
280
  - stuart.reed@colorado.edu
281
+ - jcollins@nsidc.org
282
+ - scott.lewis@nsidc.org
293
283
  executables:
294
284
  - search_solr_tools
295
285
  extensions: []
@@ -369,15 +359,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
369
359
  requirements:
370
360
  - - "~>"
371
361
  - !ruby/object:Gem::Version
372
- version: '2.0'
362
+ version: 2.6.5
373
363
  required_rubygems_version: !ruby/object:Gem::Requirement
374
364
  requirements:
375
365
  - - ">="
376
366
  - !ruby/object:Gem::Version
377
367
  version: '0'
378
368
  requirements: []
379
- rubyforge_project:
380
- rubygems_version: 2.6.11
369
+ rubygems_version: 3.0.8
381
370
  signing_key:
382
371
  specification_version: 4
383
372
  summary: Tools to harvest and manage various scientific dataset feeds in a Solr instance.