browse-everything 1.5.0 → 2.0.0.alpha.1

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: 75a514ad33ec151f78c54fd74220a6d385bde4107894e2b6beb69e30eab6c27e
4
- data.tar.gz: e688ee1ba6a0a9b8f519ca33077acda6bbc062033fc122c33876da850ff36146
3
+ metadata.gz: 64351da415814ba91aa2beebfc70fa27cbcc7c09ba0175f07425870b5ff4c364
4
+ data.tar.gz: 4908e6bd8ec3c2e6801fe112f3fc9458dd3ccb20b3c5e5a538a813659ddf9ea3
5
5
  SHA512:
6
- metadata.gz: 8b3b2068517c326ca832b8adf020dff2e297576bb19189f0707e5f812cc01b09ceef932cc8903fd1f60d6d0031d02d66685d5ba72829c89c22ee84474c2527d4
7
- data.tar.gz: cf3298fd572ca0666e9a808ffb1d359cc48050ad6a512d8777d2c9fb0635b8546c0fa7c9312198ea2113440cfc24d4a6ef28302c98d343c2dde7b5edefcae260
6
+ metadata.gz: 1d14bf7d52f5d04fcffda8ced44b90c78aab2f9288b059a930b0c7a3c183a1b0a3c3be13ad2dc4e1e8bb780fc9744078a08ecea3988d92d3e1d6931956618fcd
7
+ data.tar.gz: 24ee1844450045c9985514d9f06e3db47f5275fe8ce9d2e0104e86af39a0adb931628e25e68b1dfb25fc7d9d4dc523ba73264aff12baae10df69c3573950fb4a
data/Gemfile CHANGED
@@ -9,6 +9,10 @@ group :development, :test do
9
9
  gem 'pry-byebug' unless ENV['CI']
10
10
  end
11
11
 
12
+ # "soft"/"optional" dependency, but needed for our tests of dropbox driver to pass
13
+ gem 'dropbox_api', '>= 0.1.20'
14
+ gem 'ruby-box'
15
+
12
16
  # == Extra dependencies for dummy test app ==
13
17
  #
14
18
  # Extra dependencies for dummy test app are in .gemspec as a development dependency
@@ -45,6 +49,10 @@ if ENV['RAILS_VERSION']
45
49
 
46
50
  # sprockets is optional for rails 7, but we currently require it, and test with it.
47
51
  gem "sprockets-rails"
52
+
53
+ # workaround bug in old rails
54
+ # https://github.com/rails/rails/pull/54264
55
+ gem "concurrent-ruby", "< 1.3.5"
48
56
  when /^6\.1\./
49
57
  # rails previous to 7.1 can't use sqlite 2
50
58
  gem "sqlite3", "~> 1.4"
@@ -53,17 +61,18 @@ if ENV['RAILS_VERSION']
53
61
  # Once mail 2.8.0 final is released this will not be required.
54
62
  # https://github.com/mikel/mail/pull/1472
55
63
  gem "mail", ">= 2.8.0.rc1"
64
+
65
+ # workaround bug in old rails
66
+ # https://github.com/rails/rails/pull/54264
67
+ gem "concurrent-ruby", "< 1.3.5"
56
68
  when /^6\.0\./
57
69
  # rails previous to 7.1 can't use sqlite 2
58
70
  gem "sqlite3", "~> 1.4"
59
71
 
60
72
  gem 'sass-rails', '>= 6'
61
- when /^5\.[12]\./
62
- # rails previous to 7.1 can't use sqlite 2
63
- gem "sqlite3", "~> 1.4"
64
73
 
65
- gem 'sass-rails', '~> 5.0'
66
- gem 'sprockets', '~> 3.7'
67
- gem 'thor', '~> 0.20'
74
+ # workaround bug in old rails
75
+ # https://github.com/rails/rails/pull/54264
76
+ gem "concurrent-ruby", "< 1.3.5"
68
77
  end
69
78
  end
data/README.md CHANGED
@@ -24,6 +24,31 @@ download the files.
24
24
 
25
25
  **This gem does not depend on hydra-head**
26
26
 
27
+ ## Certain drivers needing maintenance require extra setup
28
+
29
+ Certain drivers need additional development work if they are to be fully
30
+ supported again, and for now require extra opt-in setup.
31
+
32
+ ### Dropbox
33
+
34
+ The driver has a dependency on unmaintained dropbox_api gem with it's [own
35
+ dependency on old unmaintained `oauth2` 1.x](https://github.com/Jesus/dropbox_api/issues/96), so requires some opt-in setup and configuration. https://github.com/samvera/browse-everything/pull/448
36
+
37
+ * Add `dropbox_api, '>= 0.1.20'` to your Gemfile.
38
+ * Add `require 'browse_everything/driver/dropbox'` to a startup file, eg
39
+ `config/application.rb`.
40
+
41
+ ### Box.com
42
+
43
+ The driver uses unmaintained [ruby-box](https://github.com/attachmentsme/ruby-box)
44
+ gem, which should probably be replaced with [boxr](https://github.com/cburnette/boxr).
45
+ See unfinished work at https://github.com/samvera/browse-everything/pull/185
46
+
47
+ * Add `ruby-box` to your Gemfile.
48
+ * Add `require 'browse_everything/driver/box'` to a startup file, eg
49
+ `config/application.rb`.
50
+
51
+
27
52
  ## Technical Debt/Legacy warning
28
53
 
29
54
  This project has been receiving very limited maintenance for at least 2-4 years
@@ -20,13 +20,10 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'addressable', '~> 2.5'
22
22
  spec.add_dependency 'aws-sdk-s3'
23
- spec.add_dependency 'dropbox_api', '>= 0.1.20'
24
23
  spec.add_dependency 'google-apis-drive_v3'
25
24
  spec.add_dependency 'googleauth', '>= 0.6.6', '< 2.0'
26
25
  spec.add_dependency 'rails', '>= 4.2', '< 8.1'
27
- spec.add_dependency 'ruby-box'
28
- spec.add_dependency 'signet', '~> 0.8'
29
- spec.add_dependency 'typhoeus'
26
+ spec.add_dependency 'faraday', "~> 2.0"
30
27
 
31
28
  # Development dependencies include dependencies necessary for running
32
29
  # the dummy test app at ./spec/dummy_test_app
@@ -1,8 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ruby-box'
4
3
  require_relative 'authentication_factory'
5
4
 
5
+ begin
6
+ gem 'ruby-box'
7
+ rescue Gem::LoadError => e
8
+ new_raise = Gem::LoadError.new("Loading BrowseEverything::Driver:Box requires the availability of gem ruby-box #{e.requirement}, please add it to your Gemfile")
9
+ new_raise.requirement = e.requirement
10
+ raise new_raise, cause: nil # cause is confusing and unneeded here.
11
+ end
12
+
6
13
  module BrowseEverything
7
14
  module Driver
8
15
  # Driver for accessing the Box API (https://www.box.com/home)
@@ -1,9 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'tmpdir'
4
- require 'dropbox_api'
5
4
  require_relative 'authentication_factory'
6
5
 
6
+ # We have an unspecified "optional" dependency, not great but it's what we got
7
+ begin
8
+ gem 'dropbox_api', '>= 0.1.20'
9
+ rescue Gem::LoadError => e
10
+ new_raise = Gem::LoadError.new("Loading BrowseEverything::Driver:Dropbox requires the availability of gem dropbox_api '#{e.requirement}', please add it to your Gemfile")
11
+ new_raise.requirement = e.requirement
12
+ raise new_raise, cause: nil # cause is confusing and unneeded here.
13
+ end
14
+
7
15
  module BrowseEverything
8
16
  module Driver
9
17
  class Dropbox < Base
@@ -70,7 +70,7 @@ module BrowseEverything
70
70
  # @param path [String] the path (default to the root)
71
71
  # @return [Array<BrowseEverything::FileEntry>] file entries for the path
72
72
  def list_files(drive, request_params, path: '')
73
- drive.list_files(request_params.to_h) do |file_list, error|
73
+ drive.list_files(**request_params.to_h) do |file_list, error|
74
74
  # Raise an exception if there was an error Google API's
75
75
  if error.present?
76
76
  # In order to properly trigger reauthentication, the token must be cleared
@@ -2,25 +2,25 @@
2
2
 
3
3
  require 'addressable'
4
4
  require 'tempfile'
5
- require 'typhoeus'
5
+ require 'faraday'
6
6
 
7
7
  module BrowseEverything
8
8
  # Class for raising errors when a download is invalid
9
9
  class DownloadError < StandardError
10
- attr_reader :response
10
+ attr_accessor :response_body
11
11
 
12
12
  # Constructor
13
13
  # @param msg [String]
14
- # @param response [Typhoeus::Response] response from the server
15
- def initialize(msg, response)
16
- @response = response
14
+ # @param response [String] response from the server
15
+ def initialize(msg, response_body)
16
+ @response_body = response_body
17
17
  super(msg)
18
18
  end
19
19
 
20
20
  # Generate the message for the exception
21
21
  # @return [String]
22
22
  def message
23
- "#{super}: #{response.body}"
23
+ "#{super}: #{response_body}"
24
24
  end
25
25
  end
26
26
 
@@ -36,7 +36,7 @@ module BrowseEverything
36
36
  # @param headers [Hash] any custom headers required to transit the request
37
37
  def can_retrieve?(uri, headers = {})
38
38
  request_headers = headers.merge(Range: 'bytes=0-0')
39
- response = Typhoeus.get(uri, headers: request_headers)
39
+ response = Faraday.get(uri, headers: request_headers)
40
40
  response.success?
41
41
  end
42
42
  end
@@ -133,17 +133,23 @@ module BrowseEverything
133
133
  file_size = options.fetch(:file_size)
134
134
  headers = options.fetch(:headers)
135
135
  url = options.fetch(:url)
136
- retrieved = 0
137
-
138
- request = Typhoeus::Request.new(url.to_s, method: :get, headers: headers)
139
- request.on_headers do |response|
140
- raise DownloadError.new("#{self.class}: Failed to download #{url}: Status Code: #{response.code}", response) unless response.code == 200
136
+ error_response = +""
137
+
138
+ conn = Faraday.new(url.to_s, headers: headers)
139
+ response = conn.get do |req|
140
+ req.options.on_data = proc do |chunk, overall_received_bytes, env|
141
+ if env.status == 200
142
+ # will yield to block passed in to outer retrieve_http, amazing.
143
+ yield(chunk, overall_received_bytes, file_size)
144
+ else
145
+ error_response << chunk
146
+ end
147
+ end
141
148
  end
142
- request.on_body do |chunk|
143
- retrieved += chunk.bytesize
144
- yield(chunk, retrieved, file_size)
149
+
150
+ unless response.status == 200
151
+ raise DownloadError.new("#{self.class}: Failed to download #{url}: Status Code: #{response.status}", error_response)
145
152
  end
146
- request.run
147
153
  end
148
154
 
149
155
  # Retrieve the file size
@@ -158,7 +164,7 @@ module BrowseEverything
158
164
  when 'file'
159
165
  File.size(url.path)
160
166
  when /https?/
161
- response = Typhoeus.head(url.to_s, headers: headers)
167
+ response = Faraday.head(url.to_s, headers: headers)
162
168
  length_value = response.headers['Content-Length'] || file_size
163
169
  length_value.to_i
164
170
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrowseEverything
4
- VERSION = '1.5.0'
4
+ VERSION = '2.0.0.alpha.1'
5
5
  end
@@ -12,11 +12,13 @@ module BrowseEverything
12
12
  module Driver
13
13
  autoload :Base, 'browse_everything/driver/base'
14
14
  autoload :FileSystem, 'browse_everything/driver/file_system'
15
- autoload :Dropbox, 'browse_everything/driver/dropbox'
16
- autoload :Box, 'browse_everything/driver/box'
17
15
  autoload :GoogleDrive, 'browse_everything/driver/google_drive'
18
16
  autoload :S3, 'browse_everything/driver/s3'
19
17
 
18
+ # Intentionally require explicit require, as it has a non-declared dependency
19
+ # autoload :Dropbox, 'browse_everything/driver/dropbox'
20
+ # autoload :Box, 'browse_everything/driver/box'
21
+
20
22
  # Access the sorter set for the base driver class
21
23
  # @return [Proc]
22
24
  def sorter
@@ -2,16 +2,10 @@
2
2
  # To make browse-everything aware of a provider, uncomment the info for that provider and add your API key information.
3
3
  # The file_system provider can be a path to any directory on the server where your application is running.
4
4
  #
5
- # dropbox:
6
- # client_id: YOUR_DROPBOX_APP_KEY
7
- # client_secret: YOUR_DROPBOX_APP_SECRET
8
- # download_directory: tmp/
9
- # box:
10
- # client_id: YOUR_BOX_CLIENT_ID
11
- # client_secret: YOUR_BOX_CLIENT_SECRET
12
5
  # google_drive:
13
6
  # client_id: YOUR_GOOGLE_API_CLIENT_ID
14
7
  # client_secret: YOUR_GOOGLE_API_CLIENT_SECRET
8
+ #
15
9
  # s3:
16
10
  # bucket: YOUR_AWS_S3_BUCKET
17
11
  # response_type: signed_url # set to :public_url for public urls or :s3_uri for an s3://BUCKET/KEY uri
@@ -20,3 +14,22 @@
20
14
  # app_secret: YOUR_AWS_S3_SECRET # explicitly here, or left out to use system-configured
21
15
  # region: YOUR_AWS_S3_REGION # defaults.
22
16
  # See https://aws.amazon.com/blogs/security/a-new-and-standardized-way-to-manage-credentials-in-the-aws-sdks/
17
+ #
18
+ # file_system:
19
+ # allow_relative_home: true
20
+ # home: ./browseable_files
21
+ #
22
+ # # Note: dropbox requires manual addition of `dropbox_api` gem to Gemfile, and
23
+ # # `require 'browse_everything/driver/dropbox'` in a startup file.
24
+ #
25
+ # dropbox:
26
+ # client_id: YOUR_DROPBOX_APP_KEY
27
+ # client_secret: YOUR_DROPBOX_APP_SECRET
28
+ # download_directory: tmp/
29
+ #
30
+ # # Note: box requires addition of `ruby-box` to Gemfile, and
31
+ # # `require 'browse_everything/driver/box'` in a startup file.
32
+ #
33
+ # box:
34
+ # client_id: YOUR_BOX_CLIENT_ID
35
+ # client_secret: YOUR_BOX_CLIENT_SECRET
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ #
3
+ require 'browse_everything/driver/dropbox'
2
4
 
3
5
  require File.expand_path('../spec_helper', __dir__)
4
6
 
@@ -4,7 +4,7 @@ include BrowserConfigHelper
4
4
 
5
5
  describe BrowseEverything::Browser do
6
6
  let(:file_config) do
7
- "file_system:\n home: '/file/config/home'\ndropbox:\n client_id: 'DropboxId'\n client_secret: 'DropboxClientSecret'\n download_directory: 'tmp/'"
7
+ "file_system:\n home: '/file/config/home'\ngoogle_drive:\n client_id: 'GoogleDriveId'\n client_secret: 'GoogleDriveClientSecret'\n download_directory: 'tmp/'"
8
8
  end
9
9
 
10
10
  let(:global_config) do
@@ -12,7 +12,7 @@ describe BrowseEverything::Browser do
12
12
  file_system: {
13
13
  home: '/global/config/home'
14
14
  },
15
- dropbox: {
15
+ google_drive: {
16
16
  client_id: 'DropboxId',
17
17
  client_secret: 'DropboxClientSecret',
18
18
  download_directory: 'tmp/'
@@ -25,9 +25,9 @@ describe BrowseEverything::Browser do
25
25
  file_system: {
26
26
  home: '/local/config/home'
27
27
  },
28
- dropbox: {
29
- client_id: 'DropboxId',
30
- client_secret: 'DropboxClientSecret',
28
+ google_drive: {
29
+ client_id: 'GoogleDriveId',
30
+ client_secret: 'GoogleDriveClientSecret',
31
31
  download_directory: 'tmp/'
32
32
  },
33
33
  url_options: url_options
@@ -43,9 +43,9 @@ describe BrowseEverything::Browser do
43
43
  end
44
44
 
45
45
  it 'has 2 providers' do
46
- expect(browser.providers.keys).to eq(%w[file_system dropbox])
46
+ expect(browser.providers.keys).to eq(%w[file_system google_drive])
47
47
  expect(browser.providers[:file_system]).to be_a BrowseEverything::Driver::FileSystem
48
- expect(browser.providers[:dropbox]).to be_a BrowseEverything::Driver::Dropbox
48
+ expect(browser.providers[:google_drive]).to be_a BrowseEverything::Driver::GoogleDrive
49
49
  end
50
50
 
51
51
  it 'uses the file configuration' do
@@ -60,9 +60,9 @@ describe BrowseEverything::Browser do
60
60
  before { BrowseEverything.configure(global_config) }
61
61
 
62
62
  it 'has 2 providers' do
63
- expect(browser.providers.keys).to eq(%w[file_system dropbox])
63
+ expect(browser.providers.keys).to eq(%w[file_system google_drive])
64
64
  expect(browser.providers[:file_system]).to be_a BrowseEverything::Driver::FileSystem
65
- expect(browser.providers[:dropbox]).to be_a BrowseEverything::Driver::Dropbox
65
+ expect(browser.providers[:google_drive]).to be_a BrowseEverything::Driver::GoogleDrive
66
66
  end
67
67
 
68
68
  it 'uses the global configuration' do
@@ -75,9 +75,9 @@ describe BrowseEverything::Browser do
75
75
  let(:browser) { described_class.new(local_config) }
76
76
 
77
77
  it 'has 2 providers' do
78
- expect(browser.providers.keys).to eq(%w[file_system dropbox])
78
+ expect(browser.providers.keys).to eq(%w[file_system google_drive])
79
79
  expect(browser.providers[:file_system]).to be_a BrowseEverything::Driver::FileSystem
80
- expect(browser.providers[:dropbox]).to be_a BrowseEverything::Driver::Dropbox
80
+ expect(browser.providers[:google_drive]).to be_a BrowseEverything::Driver::GoogleDrive
81
81
  end
82
82
 
83
83
  it 'uses the local configuration' do
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'browse_everything/driver/box'
4
+
3
5
  include BrowserConfigHelper
4
6
 
5
7
  describe BrowseEverything::Driver::Box do
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'browse_everything/driver/dropbox'
4
+
3
5
  include BrowserConfigHelper
4
6
 
5
7
  describe BrowseEverything::Driver::Dropbox do
@@ -160,12 +160,13 @@ describe BrowseEverything::Retriever do
160
160
  stub_request(
161
161
  :get, "https://retrieve.cloud.example.com/some/dir/file_error.pdf"
162
162
  ).and_return(
163
- status: 403
163
+ status: 403,
164
+ body: "Did not like this"
164
165
  )
165
166
  end
166
167
 
167
168
  it 'raises an exception' do
168
- expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download/)
169
+ expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download.* Status Code: 403.*Did not like this/)
169
170
  end
170
171
  end
171
172
  end
@@ -234,7 +235,7 @@ describe BrowseEverything::Retriever do
234
235
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf' }
235
236
  before do
236
237
  stub_request(
237
- :get, "https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf"
238
+ :get, %r{^https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf\?}
238
239
  ).to_return(
239
240
  status: 206,
240
241
  body: '%'
@@ -250,7 +251,7 @@ describe BrowseEverything::Retriever do
250
251
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf' }
251
252
  before do
252
253
  stub_request(
253
- :get, "https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf"
254
+ :get, %r{^https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf\?}
254
255
  ).to_return(
255
256
  status: 403
256
257
  )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browse-everything
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 2.0.0.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carolyn Cole
@@ -10,10 +10,9 @@ authors:
10
10
  - Thomas Scherz
11
11
  - Xiaoming Wang
12
12
  - Jeremy Friesen
13
- autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
- date: 2024-12-12 00:00:00.000000000 Z
15
+ date: 1980-01-02 00:00:00.000000000 Z
17
16
  dependencies:
18
17
  - !ruby/object:Gem::Dependency
19
18
  name: addressable
@@ -43,20 +42,6 @@ dependencies:
43
42
  - - ">="
44
43
  - !ruby/object:Gem::Version
45
44
  version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: dropbox_api
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 0.1.20
53
- type: :runtime
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- version: 0.1.20
60
45
  - !ruby/object:Gem::Dependency
61
46
  name: google-apis-drive_v3
62
47
  requirement: !ruby/object:Gem::Requirement
@@ -112,47 +97,19 @@ dependencies:
112
97
  - !ruby/object:Gem::Version
113
98
  version: '8.1'
114
99
  - !ruby/object:Gem::Dependency
115
- name: ruby-box
116
- requirement: !ruby/object:Gem::Requirement
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- version: '0'
121
- type: :runtime
122
- prerelease: false
123
- version_requirements: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- version: '0'
128
- - !ruby/object:Gem::Dependency
129
- name: signet
100
+ name: faraday
130
101
  requirement: !ruby/object:Gem::Requirement
131
102
  requirements:
132
103
  - - "~>"
133
104
  - !ruby/object:Gem::Version
134
- version: '0.8'
105
+ version: '2.0'
135
106
  type: :runtime
136
107
  prerelease: false
137
108
  version_requirements: !ruby/object:Gem::Requirement
138
109
  requirements:
139
110
  - - "~>"
140
111
  - !ruby/object:Gem::Version
141
- version: '0.8'
142
- - !ruby/object:Gem::Dependency
143
- name: typhoeus
144
- requirement: !ruby/object:Gem::Requirement
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- version: '0'
149
- type: :runtime
150
- prerelease: false
151
- version_requirements: !ruby/object:Gem::Requirement
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- version: '0'
112
+ version: '2.0'
156
113
  - !ruby/object:Gem::Dependency
157
114
  name: bixby
158
115
  requirement: !ruby/object:Gem::Requirement
@@ -616,7 +573,6 @@ homepage: https://github.com/projecthydra/browse-everything
616
573
  licenses:
617
574
  - Apache 2
618
575
  metadata: {}
619
- post_install_message:
620
576
  rdoc_options: []
621
577
  require_paths:
622
578
  - lib
@@ -631,8 +587,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
631
587
  - !ruby/object:Gem::Version
632
588
  version: '0'
633
589
  requirements: []
634
- rubygems_version: 3.5.9
635
- signing_key:
590
+ rubygems_version: 3.7.1
636
591
  specification_version: 4
637
592
  summary: AJAX/Rails engine file browser for cloud storage services
638
593
  test_files: