browse-everything 1.0.0.rc2 → 1.1.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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +93 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +43 -35
  5. data/CONTRIBUTING.md +3 -3
  6. data/Gemfile +3 -6
  7. data/LICENSE.txt +205 -22
  8. data/README.md +17 -15
  9. data/app/assets/javascripts/browse_everything/behavior.js +201 -158
  10. data/app/assets/javascripts/treetable.webpack.js +687 -0
  11. data/app/assets/stylesheets/browse_everything.scss +0 -0
  12. data/app/assets/stylesheets/{_browse_everything_bootstrap3.scss → browse_everything/_browse_everything_bootstrap3.scss} +6 -5
  13. data/app/assets/stylesheets/{_browse_everything_bootstrap4.scss → browse_everything/_browse_everything_bootstrap4.scss} +0 -0
  14. data/app/controllers/browse_everything_controller.rb +60 -60
  15. data/app/helpers/browse_everything_helper.rb +4 -0
  16. data/app/views/browse_everything/_files.html.erb +4 -2
  17. data/browse-everything.gemspec +8 -7
  18. data/lib/browse_everything.rb +2 -1
  19. data/lib/browse_everything/auth/google/credentials.rb +5 -5
  20. data/lib/browse_everything/auth/google/request_parameters.rb +38 -38
  21. data/lib/browse_everything/driver/base.rb +14 -14
  22. data/lib/browse_everything/driver/box.rb +62 -55
  23. data/lib/browse_everything/driver/dropbox.rb +37 -21
  24. data/lib/browse_everything/driver/file_system.rb +30 -18
  25. data/lib/browse_everything/driver/google_drive.rb +40 -39
  26. data/lib/browse_everything/driver/s3.rb +61 -45
  27. data/lib/browse_everything/file_entry.rb +1 -1
  28. data/lib/browse_everything/retriever.rb +72 -67
  29. data/lib/browse_everything/version.rb +1 -1
  30. data/lib/generators/browse_everything/templates/browse_everything_providers.yml.example +1 -0
  31. data/spec/features/test_compiling_stylesheets_spec.rb +1 -1
  32. data/spec/lib/browse_everything/browser_spec.rb +5 -3
  33. data/spec/lib/browse_everything/driver/dropbox_spec.rb +20 -1
  34. data/spec/lib/browse_everything/driver_spec.rb +43 -3
  35. data/spec/spec_helper.rb +9 -2
  36. data/spec/support/capybara.rb +0 -5
  37. data/spec/test_app_templates/Gemfile.extra +9 -0
  38. data/spec/test_app_templates/lib/generators/test_app_generator.rb +56 -5
  39. metadata +72 -39
  40. data/.travis.yml +0 -33
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrowseEverything
4
- VERSION = '1.0.0.rc2'
4
+ VERSION = '1.1.1'
5
5
  end
@@ -5,6 +5,7 @@
5
5
  # dropbox:
6
6
  # client_id: YOUR_DROPBOX_APP_KEY
7
7
  # client_secret: YOUR_DROPBOX_APP_SECRET
8
+ # download_directory: tmp/
8
9
  # box:
9
10
  # client_id: YOUR_BOX_CLIENT_ID
10
11
  # client_secret: YOUR_BOX_CLIENT_SECRET
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe 'Compiling the stylesheets', type: :feature do
3
+ describe 'Compiling the stylesheets', type: :feature, js: true do
4
4
  it 'does not raise errors' do
5
5
  visit '/'
6
6
  expect(page).not_to have_content 'Sass::SyntaxError'
@@ -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'"
7
+ "file_system:\n home: '/file/config/home'\ndropbox:\n client_id: 'DropboxId'\n client_secret: 'DropboxClientSecret'\n download_directory: 'tmp/'"
8
8
  end
9
9
 
10
10
  let(:global_config) do
@@ -14,7 +14,8 @@ describe BrowseEverything::Browser do
14
14
  },
15
15
  dropbox: {
16
16
  client_id: 'DropboxId',
17
- client_secret: 'DropboxClientSecret'
17
+ client_secret: 'DropboxClientSecret',
18
+ download_directory: 'tmp/'
18
19
  }
19
20
  }
20
21
  end
@@ -26,7 +27,8 @@ describe BrowseEverything::Browser do
26
27
  },
27
28
  dropbox: {
28
29
  client_id: 'DropboxId',
29
- client_secret: 'DropboxClientSecret'
30
+ client_secret: 'DropboxClientSecret',
31
+ download_directory: 'tmp/'
30
32
  },
31
33
  url_options: url_options
32
34
  }
@@ -8,7 +8,8 @@ describe BrowseEverything::Driver::Dropbox do
8
8
  let(:provider_yml) do
9
9
  {
10
10
  client_id: 'client-id',
11
- client_secret: 'client-secret'
11
+ client_secret: 'client-secret',
12
+ download_directory: 'spec/fixtures/'
12
13
  }
13
14
  end
14
15
  let(:oauth_response_body) do
@@ -63,6 +64,10 @@ describe BrowseEverything::Driver::Dropbox do
63
64
 
64
65
  before { driver.connect({ code: 'code' }, {}, connector_response_url_options) }
65
66
 
67
+ it 'accesses the download directory' do
68
+ expect(driver.config).to include('download_directory' => 'spec/fixtures/')
69
+ end
70
+
66
71
  describe '#auth_link' do
67
72
  subject { driver.auth_link(connector_response_url_options) }
68
73
 
@@ -133,6 +138,20 @@ describe BrowseEverything::Driver::Dropbox do
133
138
  expect(downloaded_file.read).not_to be_empty
134
139
  end
135
140
  end
141
+
142
+ context 'when the configuration does not specify a download directory' do
143
+ let(:provider_yml) do
144
+ {
145
+ client_id: 'client-id',
146
+ client_secret: 'client-secret'
147
+ }
148
+ end
149
+ let(:downloaded_file_path) { link_args.first }
150
+
151
+ it 'uses the "tmp" directory as the default path' do
152
+ expect(downloaded_file_path).to include '/tmp/Getting Started.pdf'
153
+ end
154
+ end
136
155
  end
137
156
  end
138
157
  end
@@ -15,9 +15,49 @@ describe BrowseEverything::Driver do
15
15
  end
16
16
  end
17
17
 
18
- describe '#sorter' do
19
- it 'defaults to nil' do
20
- expect(described_class.sorter).to be nil
18
+ after do
19
+ Object.send(:remove_const, :MyDriver)
20
+ end
21
+
22
+ describe '#default_sorter' do
23
+ let(:file1) do
24
+ instance_double(BrowseEverything::FileEntry)
25
+ end
26
+ let(:file2) do
27
+ instance_double(BrowseEverything::FileEntry)
28
+ end
29
+ let(:file3) do
30
+ instance_double(BrowseEverything::FileEntry)
31
+ end
32
+ let(:files) do
33
+ [
34
+ file1,
35
+ file2,
36
+ file3
37
+ ]
38
+ end
39
+
40
+ before do
41
+ class MyNewDriver < BrowseEverything::Driver::Base; end
42
+
43
+ allow(file1).to receive(:container?).and_return(false)
44
+ allow(file1).to receive(:name).and_return('test file1')
45
+ allow(file2).to receive(:container?).and_return(false)
46
+ allow(file2).to receive(:name).and_return('test file2')
47
+ allow(file3).to receive(:container?).and_return(true)
48
+ allow(file3).to receive(:name).and_return('test container1')
49
+ end
50
+ after do
51
+ Object.send(:remove_const, :MyNewDriver)
52
+ end
53
+
54
+ it 'defaults to proc which sorts by containers' do
55
+ expect(MyNewDriver.default_sorter).to be_a(Proc)
56
+
57
+ results = MyNewDriver.default_sorter.call(files)
58
+ expect(results.first.name).to eq file3.name
59
+ expect(results[1].name).to eq file1.name
60
+ expect(results.last.name).to eq file2.name
21
61
  end
22
62
  end
23
63
 
@@ -4,7 +4,7 @@ ENV['RAILS_ENV'] ||= 'test'
4
4
  require 'bundler/setup'
5
5
 
6
6
  def coverage_needed?
7
- ENV['COVERAGE'] || ENV['TRAVIS']
7
+ ENV['COVERAGE'] || ENV['CI']
8
8
  end
9
9
 
10
10
  if coverage_needed?
@@ -36,6 +36,7 @@ require 'capybara/rspec'
36
36
  require 'rspec'
37
37
  require 'rspec/rails'
38
38
  require 'rspec/its'
39
+ require 'webdrivers'
39
40
 
40
41
  # Requires supporting ruby files with custom matchers and macros, etc,
41
42
  # in spec/support/ and its subdirectories.
@@ -45,6 +46,12 @@ require 'webmock/rspec'
45
46
  WebMock.disable_net_connect!(allow_localhost: true)
46
47
 
47
48
  RSpec.configure do |config|
49
+ config.before(:each, type: :feature) { WebMock.disable! }
50
+ config.after(:each, type: :feature) do
51
+ WebMock.enable!
52
+ WebMock.disable_net_connect!(allow_localhost: true)
53
+ end
54
+
48
55
  config.expect_with :rspec do |c|
49
56
  c.syntax = %i[should expect]
50
57
  end
@@ -80,7 +87,7 @@ module BrowserConfigHelper
80
87
  app_key: 'S3AppKey',
81
88
  app_secret: 'S3AppSecret',
82
89
  bucket: 's3.bucket',
83
- region: 's3.region'
90
+ region: 'us-east-1'
84
91
  })
85
92
  end
86
93
 
@@ -4,11 +4,6 @@ require 'selenium-webdriver'
4
4
 
5
5
  # Temporary pin until chromedriver-helper patched to deal with change in chromedriver versioning
6
6
  # See https://github.com/flavorjones/chromedriver-helper/pull/63
7
- # @note In January 2018, TravisCI disabled Chrome sandboxing in its Linux
8
- # container build environments to mitigate Meltdown/Spectre
9
- # vulnerabilities, at which point Hyrax could no longer use the
10
- # Capybara-provided :selenium_chrome_headless driver (which does not
11
- # include the `--no-sandbox` argument).
12
7
  Capybara.register_driver :selenium_chrome_headless_sandboxless do |app|
13
8
  browser_options = ::Selenium::WebDriver::Chrome::Options.new
14
9
  browser_options.args << '--headless'
@@ -1,6 +1,15 @@
1
1
  gem 'jquery-rails'
2
2
  gem 'puma-rails'
3
3
 
4
+ if ENV['RAILS_VERSION']
5
+ case ENV['RAILS_VERSION']
6
+ when /6\./
7
+ gem 'webpacker', '~> 4.0'
8
+ when /5\./
9
+ gem 'webpacker', '~> 4.0'
10
+ end
11
+ end
12
+
4
13
  if ENV['TEST_BOOTSTRAP'] == "3"
5
14
  gem "bootstrap-sass"
6
15
  else
@@ -19,20 +19,71 @@ class TestAppGenerator < Rails::Generators::Base
19
19
  insert_into_file 'app/assets/stylesheets/application.css.scss', after: '*/' do
20
20
  if ENV['TEST_BOOTSTRAP'] == "3"
21
21
  # bootstrap 3 from bootstrap-sass gem
22
- %(\n\n@import "bootstrap-sprockets";\n@import "bootstrap";\n@import "browse_everything_bootstrap3";)
22
+ %(\n\n@import "bootstrap-sprockets";\n@import "bootstrap";\n@import "browse_everything/browse_everything_bootstrap3";)
23
23
  else
24
24
  # bootstrap4 from bootstrap gem
25
- %(\n\n@import "bootstrap";\n@import "browse_everything_bootstrap4";)
25
+ %(\n\n@import "bootstrap";\n@import "browse_everything/browse_everything_bootstrap4";)
26
26
  end
27
27
  end
28
28
  end
29
29
 
30
30
  def inject_javascript
31
- insert_into_file 'app/assets/javascripts/application.js', after: '//= require_tree .' do
32
- %(
31
+ if /^6\./.match?(Rails.version)
32
+ # Both jQuery and Twitter Bootstrap 3.x need to be added for legacy JavaScript
33
+ system('yarn add jquery@3.3.1')
34
+ system('yarn add bootstrap@3.4.1')
35
+ system('yarn install')
36
+
37
+ # Adding the JavaScript module dependencies
38
+ insert_into_file 'app/javascript/packs/application.js', after: 'require("channels")' do
39
+ %(
40
+ require("jquery")
41
+ require("bootstrap")
42
+ )
43
+ end
44
+
45
+ # Here the JavaScript needs to be injected for Webpacker
46
+ insert_into_file 'config/webpack/environment.js', after: "const { environment } = require('@rails/webpacker')" do
47
+ %(
48
+ const webpack = require('webpack')
49
+
50
+ environment.plugins.prepend('Provide',
51
+ new webpack.ProvidePlugin({
52
+ $: 'jquery/src/jquery',
53
+ jQuery: 'jquery/src/jquery'
54
+ })
55
+ )
56
+ )
57
+ end
58
+
59
+ # Copy the TreeTable JavaScript
60
+ copy_file('../../app/assets/javascripts/treetable.webpack.js', 'app/javascript/packs/treetable.js')
61
+
62
+ # Copy the browse_everything JavaScript
63
+ copy_file('../../app/assets/javascripts/browse_everything/behavior.js', 'app/javascript/packs/browse-everything.js')
64
+
65
+ # Adding the JavaScript module dependencies
66
+ insert_into_file 'app/javascript/packs/browse-everything.js', before: "'use strict';" do
67
+ %(
68
+ require("bootstrap")
69
+ require("./treetable")
70
+ )
71
+ end
72
+
73
+ # Load the new packs into the view
74
+ insert_into_file 'app/views/layouts/application.html.erb', before: '</head>' do
75
+ %(
76
+ <%= javascript_pack_tag 'treetable', 'data-turbolinks-track': 'reload' %>
77
+ <%= javascript_pack_tag 'browse-everything', 'data-turbolinks-track': 'reload' %>
78
+ )
79
+ end
80
+ else
81
+ insert_into_file 'app/assets/javascripts/application.js', after: '//= require_tree .' do
82
+ %(
33
83
  //= require jquery
34
84
  //= require browse_everything
35
- )
85
+ )
86
+ end
36
87
  end
37
88
  end
38
89
 
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.0.0.rc2
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carolyn Cole
@@ -10,10 +10,10 @@ authors:
10
10
  - Thomas Scherz
11
11
  - Xiaoming Wang
12
12
  - Jeremy Friesen
13
- autorequire:
13
+ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2018-11-28 00:00:00.000000000 Z
16
+ date: 2020-11-17 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: addressable
@@ -75,30 +75,42 @@ dependencies:
75
75
  name: google_drive
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - "~>"
78
+ - - ">="
79
79
  - !ruby/object:Gem::Version
80
80
  version: '2.1'
81
+ - - "<"
82
+ - !ruby/object:Gem::Version
83
+ version: '4'
81
84
  type: :runtime
82
85
  prerelease: false
83
86
  version_requirements: !ruby/object:Gem::Requirement
84
87
  requirements:
85
- - - "~>"
88
+ - - ">="
86
89
  - !ruby/object:Gem::Version
87
90
  version: '2.1'
91
+ - - "<"
92
+ - !ruby/object:Gem::Version
93
+ version: '4'
88
94
  - !ruby/object:Gem::Dependency
89
95
  name: googleauth
90
96
  requirement: !ruby/object:Gem::Requirement
91
97
  requirements:
92
- - - '='
98
+ - - ">="
93
99
  - !ruby/object:Gem::Version
94
100
  version: 0.6.6
101
+ - - "<"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
95
104
  type: :runtime
96
105
  prerelease: false
97
106
  version_requirements: !ruby/object:Gem::Requirement
98
107
  requirements:
99
- - - '='
108
+ - - ">="
100
109
  - !ruby/object:Gem::Version
101
110
  version: 0.6.6
111
+ - - "<"
112
+ - !ruby/object:Gem::Version
113
+ version: '1.0'
102
114
  - !ruby/object:Gem::Dependency
103
115
  name: rails
104
116
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +118,9 @@ dependencies:
106
118
  - - ">="
107
119
  - !ruby/object:Gem::Version
108
120
  version: '4.2'
121
+ - - "<"
122
+ - !ruby/object:Gem::Version
123
+ version: '7.0'
109
124
  type: :runtime
110
125
  prerelease: false
111
126
  version_requirements: !ruby/object:Gem::Requirement
@@ -113,6 +128,9 @@ dependencies:
113
128
  - - ">="
114
129
  - !ruby/object:Gem::Version
115
130
  version: '4.2'
131
+ - - "<"
132
+ - !ruby/object:Gem::Version
133
+ version: '7.0'
116
134
  - !ruby/object:Gem::Dependency
117
135
  name: ruby-box
118
136
  requirement: !ruby/object:Gem::Requirement
@@ -142,19 +160,19 @@ dependencies:
142
160
  - !ruby/object:Gem::Version
143
161
  version: '0.8'
144
162
  - !ruby/object:Gem::Dependency
145
- name: thor
163
+ name: sprockets
146
164
  requirement: !ruby/object:Gem::Requirement
147
165
  requirements:
148
166
  - - "~>"
149
167
  - !ruby/object:Gem::Version
150
- version: '0.19'
168
+ version: '3.7'
151
169
  type: :runtime
152
170
  prerelease: false
153
171
  version_requirements: !ruby/object:Gem::Requirement
154
172
  requirements:
155
173
  - - "~>"
156
174
  - !ruby/object:Gem::Version
157
- version: '0.19'
175
+ version: '3.7'
158
176
  - !ruby/object:Gem::Dependency
159
177
  name: typhoeus
160
178
  requirement: !ruby/object:Gem::Requirement
@@ -173,28 +191,28 @@ dependencies:
173
191
  name: bixby
174
192
  requirement: !ruby/object:Gem::Requirement
175
193
  requirements:
176
- - - ">="
194
+ - - "~>"
177
195
  - !ruby/object:Gem::Version
178
- version: '1.0'
196
+ version: '3.0'
179
197
  type: :development
180
198
  prerelease: false
181
199
  version_requirements: !ruby/object:Gem::Requirement
182
200
  requirements:
183
- - - ">="
201
+ - - "~>"
184
202
  - !ruby/object:Gem::Version
185
- version: '1.0'
203
+ version: '3.0'
186
204
  - !ruby/object:Gem::Dependency
187
205
  name: bundler
188
206
  requirement: !ruby/object:Gem::Requirement
189
207
  requirements:
190
- - - "~>"
208
+ - - ">="
191
209
  - !ruby/object:Gem::Version
192
210
  version: '1.3'
193
211
  type: :development
194
212
  prerelease: false
195
213
  version_requirements: !ruby/object:Gem::Requirement
196
214
  requirements:
197
- - - "~>"
215
+ - - ">="
198
216
  - !ruby/object:Gem::Version
199
217
  version: '1.3'
200
218
  - !ruby/object:Gem::Dependency
@@ -211,20 +229,6 @@ dependencies:
211
229
  - - ">="
212
230
  - !ruby/object:Gem::Version
213
231
  version: '0'
214
- - !ruby/object:Gem::Dependency
215
- name: chromedriver-helper
216
- requirement: !ruby/object:Gem::Requirement
217
- requirements:
218
- - - '='
219
- - !ruby/object:Gem::Version
220
- version: 1.2.0
221
- type: :development
222
- prerelease: false
223
- version_requirements: !ruby/object:Gem::Requirement
224
- requirements:
225
- - - '='
226
- - !ruby/object:Gem::Version
227
- version: 1.2.0
228
232
  - !ruby/object:Gem::Dependency
229
233
  name: coveralls
230
234
  requirement: !ruby/object:Gem::Requirement
@@ -365,6 +369,20 @@ dependencies:
365
369
  - - ">="
366
370
  - !ruby/object:Gem::Version
367
371
  version: '0'
372
+ - !ruby/object:Gem::Dependency
373
+ name: rspec_junit_formatter
374
+ requirement: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: '0'
379
+ type: :development
380
+ prerelease: false
381
+ version_requirements: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ version: '0'
368
386
  - !ruby/object:Gem::Dependency
369
387
  name: rubocop-rspec
370
388
  requirement: !ruby/object:Gem::Requirement
@@ -421,6 +439,20 @@ dependencies:
421
439
  - - ">="
422
440
  - !ruby/object:Gem::Version
423
441
  version: '0'
442
+ - !ruby/object:Gem::Dependency
443
+ name: webdrivers
444
+ requirement: !ruby/object:Gem::Requirement
445
+ requirements:
446
+ - - ">="
447
+ - !ruby/object:Gem::Version
448
+ version: '0'
449
+ type: :development
450
+ prerelease: false
451
+ version_requirements: !ruby/object:Gem::Requirement
452
+ requirements:
453
+ - - ">="
454
+ - !ruby/object:Gem::Version
455
+ version: '0'
424
456
  - !ruby/object:Gem::Dependency
425
457
  name: webmock
426
458
  requirement: !ruby/object:Gem::Requirement
@@ -447,12 +479,12 @@ executables: []
447
479
  extensions: []
448
480
  extra_rdoc_files: []
449
481
  files:
482
+ - ".circleci/config.yml"
450
483
  - ".engine_cart.yml"
451
484
  - ".gitignore"
452
485
  - ".rspec"
453
486
  - ".rubocop.yml"
454
487
  - ".rubocop_todo.yml"
455
- - ".travis.yml"
456
488
  - CODE_OF_CONDUCT.md
457
489
  - CONTRIBUTING.md
458
490
  - Gemfile
@@ -463,9 +495,11 @@ files:
463
495
  - SUPPORT.md
464
496
  - app/assets/javascripts/browse_everything.js
465
497
  - app/assets/javascripts/browse_everything/behavior.js
466
- - app/assets/stylesheets/_browse_everything_bootstrap3.scss
467
- - app/assets/stylesheets/_browse_everything_bootstrap4.scss
498
+ - app/assets/javascripts/treetable.webpack.js
499
+ - app/assets/stylesheets/browse_everything.scss
468
500
  - app/assets/stylesheets/browse_everything/_browse_everything.scss
501
+ - app/assets/stylesheets/browse_everything/_browse_everything_bootstrap3.scss
502
+ - app/assets/stylesheets/browse_everything/_browse_everything_bootstrap4.scss
469
503
  - app/assets/stylesheets/jquery.treetable.theme.browse.css
470
504
  - app/controllers/browse_everything_controller.rb
471
505
  - app/helpers/browse_everything_helper.rb
@@ -549,7 +583,7 @@ homepage: https://github.com/projecthydra/browse-everything
549
583
  licenses:
550
584
  - Apache 2
551
585
  metadata: {}
552
- post_install_message:
586
+ post_install_message:
553
587
  rdoc_options: []
554
588
  require_paths:
555
589
  - lib
@@ -560,13 +594,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
560
594
  version: '0'
561
595
  required_rubygems_version: !ruby/object:Gem::Requirement
562
596
  requirements:
563
- - - ">"
597
+ - - ">="
564
598
  - !ruby/object:Gem::Version
565
- version: 1.3.1
599
+ version: '0'
566
600
  requirements: []
567
- rubyforge_project:
568
- rubygems_version: 2.7.3
569
- signing_key:
601
+ rubygems_version: 3.0.3
602
+ signing_key:
570
603
  specification_version: 4
571
604
  summary: AJAX/Rails engine file browser for cloud storage services
572
605
  test_files: