geminabox 2.2.0 → 3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 12356dade9bded5c65e544736b210902fc950aecb8760b6d65804d8dac4046f9
4
- data.tar.gz: 2be1eac2ca7122ce5bc5e02ef80024b06e27ed80a5e1f249787bb032f5d37ca3
3
+ metadata.gz: 4286ff9507b08e7212e2fc72813336bf169e4c86e082802bc600648ecc8a0e99
4
+ data.tar.gz: ffdd59e137b59252c6a9f526652ee5e99c092cd55e6e13ef191a9e004bbeb47d
5
5
  SHA512:
6
- metadata.gz: 1d8018a7ba17aa3f5a206775b24810ed20a4b26028e50b6107d4f0601b2ea639d2c34039eb609661f39235727422f33a2a46e83e0ade625d1313b3210bb6d0ce
7
- data.tar.gz: aaf7aec9ca78b79a56742843c63b4e19ba76fec05f2f2863cb2ef445c6837c6e4ac6e43912f74436cc8f40178c03cd4aed1ddcbb7ae80a79f9ea40133b76b351
6
+ metadata.gz: 215aef46c5ecfe77d391368be8a119230f4b2afe11e65a31b468e67a24c3030aa427801fff384080e75bd8942ac2b9006adf917e8dda5c6857bb9888ad6838ba
7
+ data.tar.gz: e29de3a2b4eedc3f603c41af8b449bb90a7f6f6ef2a75184d2febe416a86bc1680d0e2d6525591f585571f5749359b2d7c6c130eed940327f6109d9f397f1493
data/README.md CHANGED
@@ -15,16 +15,8 @@ For basic auth, try [Rack::Auth](http://www.rubydoc.info/github/rack/rack/Rack/A
15
15
 
16
16
  ## System Requirements
17
17
 
18
- - Ruby 2.3 through 3.4 (Ruby 3.2+ is highly recommended)
19
- - RubyGems 2.5 or later (latest version recommended)
20
- - **Ruby 3.3+ users:** You must also install the `rubygems-generate_index` gem.
21
- `Gem::Indexer` was extracted from RubyGems in 3.3 and geminabox requires it
22
- to function. Add it to your Gemfile or install it directly:
23
-
24
- gem install rubygems-generate_index
25
-
26
- **Note:** Ruby 2.x support is deprecated. geminabox 3.0 will require Ruby >= 3.0.
27
- Pin to `gem 'geminabox', '~> 2.2'` if you cannot upgrade yet.
18
+ - Ruby 3.0 or later (Ruby 3.2+ recommended)
19
+ - RubyGems 3.2.3 or later (latest version recommended)
28
20
 
29
21
  ## Server Setup
30
22
 
@@ -188,7 +180,6 @@ Your Gemfile only needs:
188
180
  source 'https://rubygems.org'
189
181
 
190
182
  gem 'geminabox'
191
- gem 'rubygems-generate_index' # Required for Ruby 3.3+
192
183
  ```
193
184
 
194
185
  From there
@@ -46,26 +46,22 @@ module Geminabox
46
46
 
47
47
  def read(key_hash)
48
48
  read_int(key_hash) do |path|
49
- begin
50
- File.read(path)
51
- rescue Errno::ENOENT
52
- # There is a possibility that the file is removed by another process
53
- # after checking File.exist?. Return nil if the file does not exist.
54
- nil
55
- end
49
+ File.read(path)
50
+ rescue Errno::ENOENT
51
+ # There is a possibility that the file is removed by another process
52
+ # after checking File.exist?. Return nil if the file does not exist.
53
+ nil
56
54
  end
57
55
  end
58
56
 
59
57
  def marshal_read(key_hash)
60
58
  read_int(key_hash) do |path|
61
- begin
62
- File.open(path) {|fp| Marshal.load(fp) }
63
- rescue Errno::ENOENT, EOFError
64
- # There is a possibility that the file is removed by another process.
65
- # Marshal.load raises EOFError if the file is removed after File.open(path) succeeds.
66
- # Return nil if the file does not exist.
67
- nil
68
- end
59
+ File.open(path) {|fp| Marshal.load(fp) }
60
+ rescue Errno::ENOENT, EOFError
61
+ # There is a possibility that the file is removed by another process.
62
+ # Marshal.load raises EOFError if the file is removed after File.open(path) succeeds.
63
+ # Return nil if the file does not exist.
64
+ nil
69
65
  end
70
66
  end
71
67
 
@@ -5,6 +5,8 @@ require 'sinatra/base'
5
5
  module Geminabox
6
6
 
7
7
  class Hostess < Sinatra::Base
8
+ set :host_authorization, { permitted_hosts: [] }
9
+
8
10
  def serve
9
11
  headers["Cache-Control"] = 'no-transform'
10
12
  send_file(File.expand_path(File.join(Geminabox.data, *request.path_info)), :type => response['Content-Type'])
@@ -20,23 +22,16 @@ module Geminabox
20
22
  end
21
23
  end
22
24
 
23
- %w[/quick/Marshal.4.8/*.gemspec.rz
24
- /yaml.Z
25
- /Marshal.4.8.Z
26
- ].each do |deflated_index|
27
- get deflated_index do
28
- content_type('application/x-deflate')
29
- serve
30
- end
25
+ get '/quick/Marshal.4.8/*.gemspec.rz' do
26
+ content_type('application/x-deflate')
27
+ serve
31
28
  end
32
29
 
33
- %w[/yaml
34
- /Marshal.4.8
35
- /specs.4.8
30
+ %w[/specs.4.8
36
31
  /latest_specs.4.8
37
32
  /prerelease_specs.4.8
38
- ].each do |old_index|
39
- get old_index do
33
+ ].each do |index|
34
+ get index do
40
35
  serve
41
36
  end
42
37
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'geminabox'
4
+ require 'rubygems/indexer'
4
5
 
5
6
  module Geminabox::Indexer
6
7
  def self.updated_gemspecs(indexer)
@@ -6,6 +6,8 @@ require 'net/http'
6
6
  module Geminabox
7
7
  module Proxy
8
8
  class Hostess < Sinatra::Base
9
+ set :host_authorization, { permitted_hosts: [] }
10
+
9
11
  attr_accessor :file_handler
10
12
  def serve
11
13
  headers["Cache-Control"] = 'no-transform'
@@ -27,25 +29,18 @@ module Geminabox
27
29
  end
28
30
  end
29
31
 
30
- %w[quick/Marshal.4.8/*.gemspec.rz
31
- yaml.Z
32
- Marshal.4.8.Z
33
- ].each do |deflated_index|
34
- get "/#{deflated_index}" do
35
- copy_file request.path_info[1..-1]
36
- content_type('application/x-deflate')
37
- serve
38
- end
32
+ get '/quick/Marshal.4.8/*.gemspec.rz' do
33
+ copy_file request.path_info[1..]
34
+ content_type('application/x-deflate')
35
+ serve
39
36
  end
40
37
 
41
- %w[yaml
42
- Marshal.4.8
43
- specs.4.8
38
+ %w[specs.4.8
44
39
  latest_specs.4.8
45
40
  prerelease_specs.4.8
46
- ].each do |old_index|
47
- get "/#{old_index}" do
48
- splice_file old_index
41
+ ].each do |index|
42
+ get "/#{index}" do
43
+ splice_file index
49
44
  serve
50
45
  end
51
46
  end
@@ -9,6 +9,7 @@ module Geminabox
9
9
  enable :static, :methodoverride
10
10
  set :public_folder, Geminabox.public_folder
11
11
  set :views, Geminabox.views
12
+ set :host_authorization, { permitted_hosts: [] }
12
13
 
13
14
  if Geminabox.rubygems_proxy
14
15
  use Proxy::Hostess
@@ -60,7 +61,7 @@ module Geminabox
60
61
  end
61
62
 
62
63
  def indexer
63
- Gem::Indexer.new(Geminabox.data, :build_legacy => Geminabox.build_legacy)
64
+ Gem::Indexer.new(Geminabox.data)
64
65
  end
65
66
 
66
67
  def dependency_cache
@@ -158,8 +159,8 @@ module Geminabox
158
159
  halt 400 unless request.form_data?
159
160
 
160
161
  serialize_update do
161
- gems = load_gems.select { |gem| request['gem_name'] == gem.name and
162
- request['version'] == gem.number.version }
162
+ gems = load_gems.select { |gem| params['gem_name'] == gem.name and
163
+ params['version'] == gem.number.version }
163
164
  halt 404, 'Gem not found' if gems.size == 0
164
165
  gems.each do |gem|
165
166
  gem_path = File.expand_path(File.join(Geminabox.data, 'gems',
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Geminabox
4
- VERSION = '2.2.0' unless defined? VERSION
4
+ VERSION = '3.0.0' unless defined? VERSION
5
5
  end
data/lib/geminabox.rb CHANGED
@@ -5,19 +5,7 @@ require 'digest/md5'
5
5
  require 'builder'
6
6
  require 'sinatra/base'
7
7
  require 'rubygems/user_interaction'
8
- # Gem::Indexer was extracted from RubyGems in 3.3+.
9
- # On Ruby 3.3+, require the rubygems-generate_index gem instead.
10
- begin
11
- require 'rubygems/indexer'
12
- rescue LoadError
13
- begin
14
- require 'rubygems-generate_index'
15
- rescue LoadError
16
- raise LoadError,
17
- "Ruby 3.3+ requires the 'rubygems-generate_index' gem. " \
18
- "Add it to your Gemfile or run: gem install rubygems-generate_index"
19
- end
20
- end
8
+ require 'rubygems/indexer'
21
9
  require 'rubygems/package'
22
10
  require 'tempfile'
23
11
  require 'json'
@@ -25,11 +13,6 @@ require 'tilt/erb'
25
13
  require 'rack/protection'
26
14
 
27
15
  module Geminabox
28
- if RUBY_VERSION < '3.0'
29
- warn "DEPRECATION: geminabox 3.0 will require Ruby >= 3.0. " \
30
- "You are running Ruby #{RUBY_VERSION}. Please plan your upgrade. " \
31
- "Pin to gem 'geminabox', '~> 2.2' if you cannot upgrade yet."
32
- end
33
16
 
34
17
  class Error < StandardError ; end
35
18
 
@@ -74,14 +57,6 @@ module Geminabox
74
57
  :on_gem_received
75
58
  )
76
59
 
77
- attr_reader :build_legacy
78
-
79
- def build_legacy=(value)
80
- warn "Setting `Geminabox.build_legacy` is deprecated and will be removed in the future. Geminbox will always build modern indices"
81
-
82
- @build_legacy = value
83
- end
84
-
85
60
  def set_defaults(defaults)
86
61
  defaults.each do |method, default|
87
62
  variable = "@#{method}"
@@ -101,7 +76,6 @@ module Geminabox
101
76
  set_defaults(
102
77
  data: File.join(File.dirname(__FILE__), *%w[.. data]),
103
78
  public_folder: File.join(File.dirname(__FILE__), *%w[.. public]),
104
- build_legacy: false,
105
79
  incremental_updates: true,
106
80
  views: File.join(File.dirname(__FILE__), *%w[.. views]),
107
81
  allow_replace: false,
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'uri'
4
- require 'cgi'
4
+ require 'cgi/escape'
5
5
  require 'geminabox'
6
6
 
7
7
  class GeminaboxClient
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geminabox
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Lea
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: '2.0'
22
+ version: '4.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '2.0'
29
+ version: '4.0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: builder
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -103,6 +103,20 @@ dependencies:
103
103
  - - ">="
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
+ - !ruby/object:Gem::Dependency
107
+ name: rubygems-generate_index
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '1.1'
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '1.1'
106
120
  description: A private gem hosting and/or caching app, with client side gem push style
107
121
  functionality. Web UI is provided.
108
122
  email:
@@ -153,7 +167,7 @@ files:
153
167
  - views/upload.erb
154
168
  homepage: https://github.com/geminabox/geminabox
155
169
  licenses:
156
- - MIT-LICENSE
170
+ - MIT
157
171
  metadata:
158
172
  homepage_uri: https://github.com/geminabox/geminabox
159
173
  source_code_uri: https://github.com/geminabox/geminabox
@@ -167,12 +181,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
181
  requirements:
168
182
  - - ">="
169
183
  - !ruby/object:Gem::Version
170
- version: 2.3.0
184
+ version: 3.0.0
171
185
  required_rubygems_version: !ruby/object:Gem::Requirement
172
186
  requirements:
173
187
  - - ">="
174
188
  - !ruby/object:Gem::Version
175
- version: 2.5.0
189
+ version: 3.2.3
176
190
  requirements: []
177
191
  rubygems_version: 4.0.3
178
192
  specification_version: 4