gemstash 1.0.0.pre.1-java → 2.5.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +295 -0
- data/exe/gemstash +3 -0
- data/lib/gemstash/api_key_authorization.rb +32 -0
- data/lib/gemstash/authorization.rb +15 -8
- data/lib/gemstash/cache.rb +42 -2
- data/lib/gemstash/cli/authorize.rb +52 -9
- data/lib/gemstash/cli/base.rb +14 -6
- data/lib/gemstash/cli/setup.rb +67 -39
- data/lib/gemstash/cli/start.rb +6 -2
- data/lib/gemstash/cli/status.rb +3 -1
- data/lib/gemstash/cli/stop.rb +4 -1
- data/lib/gemstash/cli.rb +59 -1
- data/lib/gemstash/config.ru +4 -3
- data/lib/gemstash/configuration.rb +56 -8
- data/lib/gemstash/db/authorization.rb +5 -3
- data/lib/gemstash/db/cached_rubygem.rb +20 -0
- data/lib/gemstash/db/dependency.rb +2 -0
- data/lib/gemstash/db/rubygem.rb +3 -0
- data/lib/gemstash/db/upstream.rb +15 -0
- data/lib/gemstash/db/version.rb +25 -2
- data/lib/gemstash/db.rb +5 -0
- data/lib/gemstash/dependencies.rb +6 -2
- data/lib/gemstash/env.rb +44 -13
- data/lib/gemstash/gem_fetcher.rb +5 -3
- data/lib/gemstash/gem_pusher.rb +25 -18
- data/lib/gemstash/gem_source/dependency_caching.rb +4 -4
- data/lib/gemstash/gem_source/private_source.rb +34 -50
- data/lib/gemstash/gem_source/rack_middleware.rb +3 -0
- data/lib/gemstash/gem_source/upstream_source.rb +71 -27
- data/lib/gemstash/gem_source.rb +4 -2
- data/lib/gemstash/gem_yanker.rb +14 -4
- data/lib/gemstash/health.rb +55 -0
- data/lib/gemstash/http_client.rb +15 -5
- data/lib/gemstash/logging.rb +19 -7
- data/lib/gemstash/man/gemstash-authorize.1 +54 -0
- data/lib/gemstash/man/gemstash-authorize.1.txt +52 -0
- data/lib/gemstash/man/gemstash-configuration.5 +186 -0
- data/lib/gemstash/man/gemstash-configuration.5.txt +208 -0
- data/lib/gemstash/man/gemstash-customize.7 +273 -0
- data/lib/gemstash/man/gemstash-customize.7.txt +184 -0
- data/lib/gemstash/man/gemstash-debugging.7 +30 -0
- data/lib/gemstash/man/gemstash-debugging.7.txt +27 -0
- data/lib/gemstash/man/gemstash-deploy.7 +63 -0
- data/lib/gemstash/man/gemstash-deploy.7.txt +57 -0
- data/lib/gemstash/man/gemstash-mirror.7 +34 -0
- data/lib/gemstash/man/gemstash-mirror.7.txt +31 -0
- data/lib/gemstash/man/gemstash-multiple-sources.7 +131 -0
- data/lib/gemstash/man/gemstash-multiple-sources.7.txt +116 -0
- data/lib/gemstash/man/gemstash-private-gems.7 +191 -0
- data/lib/gemstash/man/gemstash-private-gems.7.txt +154 -0
- data/lib/gemstash/man/gemstash-readme.7 +199 -0
- data/lib/gemstash/man/gemstash-readme.7.txt +177 -0
- data/lib/gemstash/man/gemstash-setup.1 +38 -0
- data/lib/gemstash/man/gemstash-setup.1.txt +38 -0
- data/lib/gemstash/man/gemstash-start.1 +23 -0
- data/lib/gemstash/man/gemstash-start.1.txt +24 -0
- data/lib/gemstash/man/gemstash-status.1 +17 -0
- data/lib/gemstash/man/gemstash-status.1.txt +20 -0
- data/lib/gemstash/man/gemstash-stop.1 +17 -0
- data/lib/gemstash/man/gemstash-stop.1.txt +20 -0
- data/lib/gemstash/man/gemstash-version.1 +17 -0
- data/lib/gemstash/man/gemstash-version.1.txt +19 -0
- data/lib/gemstash/migrations/01_gem_dependencies.rb +11 -9
- data/lib/gemstash/migrations/02_authorizations.rb +4 -2
- data/lib/gemstash/migrations/03_cached_gems.rb +26 -0
- data/lib/gemstash/migrations/04_health_tests.rb +10 -0
- data/lib/gemstash/migrations/05_authorization_names.rb +10 -0
- data/lib/gemstash/puma.rb +5 -3
- data/lib/gemstash/rack_env_rewriter.rb +11 -2
- data/lib/gemstash/specs_builder.rb +25 -15
- data/lib/gemstash/storage.rb +175 -32
- data/lib/gemstash/upstream.rb +43 -8
- data/lib/gemstash/version.rb +4 -2
- data/lib/gemstash/web.rb +13 -8
- data/lib/gemstash.rb +6 -2
- metadata +135 -110
- data/.gitignore +0 -10
- data/.rspec +0 -2
- data/.rubocop-bundler.yml +0 -92
- data/.rubocop-relax.yml +0 -11
- data/.rubocop.yml +0 -8
- data/.travis.yml +0 -20
- data/Gemfile +0 -4
- data/README.md +0 -139
- data/Rakefile +0 -35
- data/bin/console +0 -14
- data/bin/gemstash +0 -3
- data/bin/setup +0 -5
- data/docs/config.md +0 -136
- data/docs/debug.md +0 -24
- data/docs/deploy.md +0 -30
- data/docs/mirror.md +0 -30
- data/docs/multiple_sources.md +0 -68
- data/docs/private_gems.md +0 -140
- data/docs/reference.md +0 -308
- data/gemstash.gemspec +0 -47
- data/gemstash.png +0 -0
- data/lib/gemstash/gem_unyanker.rb +0 -61
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "gemstash"
|
4
|
+
require "date"
|
5
|
+
require "server_health_check_rack"
|
6
|
+
require "sequel"
|
7
|
+
|
8
|
+
module Gemstash
|
9
|
+
# This module contains the logic used to supply a health monitor for
|
10
|
+
# Gemstash. You can access the health monitor at the /health endpoint.
|
11
|
+
module Health
|
12
|
+
# This check can be used if you don't want to read or write content during a
|
13
|
+
# health check.
|
14
|
+
def self.heartbeat
|
15
|
+
true
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.check_storage_read
|
19
|
+
if check_storage_write
|
20
|
+
content = Gemstash::Storage.for("health").resource("test").content(:example)
|
21
|
+
content =~ /\Acontent-\d+\z/
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.check_storage_write
|
26
|
+
resource = Gemstash::Storage.for("health").resource("test")
|
27
|
+
resource.save(example: "content-#{Time.now.to_i}")
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.check_db_read
|
32
|
+
result = Gemstash::Env.current.db[:rubygems].where(name: "testing_db_read").count
|
33
|
+
result.is_a?(Numeric)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.check_db_write
|
37
|
+
Gemstash::Env.current.db.transaction do
|
38
|
+
health_tests = Gemstash::Env.current.db[:health_tests]
|
39
|
+
health_tests.truncate
|
40
|
+
health_tests.insert(string: "test_string")
|
41
|
+
# We don't want to actually write to the database
|
42
|
+
raise Sequel::Rollback
|
43
|
+
end
|
44
|
+
|
45
|
+
true
|
46
|
+
end
|
47
|
+
|
48
|
+
ServerHealthCheckRack::Checks.check("heartbeat") { Gemstash::Health.heartbeat }
|
49
|
+
ServerHealthCheckRack::Checks.check("storage_read") { Gemstash::Health.check_storage_read }
|
50
|
+
ServerHealthCheckRack::Checks.check("storage_write") { Gemstash::Health.check_storage_write }
|
51
|
+
ServerHealthCheckRack::Checks.check("db_read") { Gemstash::Health.check_db_read }
|
52
|
+
ServerHealthCheckRack::Checks.check("db_write") { Gemstash::Health.check_db_write }
|
53
|
+
RackMiddleware = ServerHealthCheckRack::Middleware
|
54
|
+
end
|
55
|
+
end
|
data/lib/gemstash/http_client.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "gemstash"
|
2
4
|
require "faraday"
|
3
5
|
require "faraday_middleware"
|
4
6
|
|
5
7
|
module Gemstash
|
6
|
-
|
8
|
+
# :nodoc:
|
7
9
|
class WebError < StandardError
|
8
10
|
attr_reader :code
|
9
11
|
|
@@ -13,15 +15,16 @@ module Gemstash
|
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
16
|
-
|
18
|
+
# :nodoc:
|
17
19
|
class ConnectionError < WebError
|
18
20
|
def initialize(message)
|
19
21
|
super(message, 502) # Bad Gateway
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
|
-
|
25
|
+
# :nodoc:
|
24
26
|
class HTTPClient
|
27
|
+
extend Gemstash::Env::Helper
|
25
28
|
include Gemstash::Logging
|
26
29
|
|
27
30
|
DEFAULT_USER_AGENT = "Gemstash/#{Gemstash::VERSION}"
|
@@ -30,13 +33,19 @@ module Gemstash
|
|
30
33
|
client = Faraday.new(upstream.to_s) do |config|
|
31
34
|
config.use FaradayMiddleware::FollowRedirects
|
32
35
|
config.adapter :net_http
|
36
|
+
config.options.timeout = gemstash_env.config[:fetch_timeout]
|
33
37
|
end
|
38
|
+
|
39
|
+
client.basic_auth(upstream.user, upstream.password) if upstream.auth?
|
40
|
+
|
34
41
|
user_agent = "#{upstream.user_agent} " unless upstream.user_agent.to_s.empty?
|
35
42
|
user_agent = user_agent.to_s + DEFAULT_USER_AGENT
|
36
43
|
|
37
44
|
new(client, user_agent: user_agent)
|
38
45
|
end
|
39
46
|
|
47
|
+
attr_reader :client
|
48
|
+
|
40
49
|
def initialize(client = nil, user_agent: nil)
|
41
50
|
@client = client
|
42
51
|
@user_agent = user_agent || DEFAULT_USER_AGENT
|
@@ -61,14 +70,15 @@ module Gemstash
|
|
61
70
|
|
62
71
|
private
|
63
72
|
|
64
|
-
def with_retries(times: 3
|
73
|
+
def with_retries(times: 3)
|
65
74
|
loop do
|
66
75
|
times -= 1
|
67
76
|
begin
|
68
|
-
return
|
77
|
+
return yield
|
69
78
|
rescue Faraday::ConnectionFailed => e
|
70
79
|
log_error("Connection failure", e)
|
71
80
|
raise(ConnectionError, e.message) unless times > 0
|
81
|
+
|
72
82
|
log.info "retrying... #{times} more times"
|
73
83
|
end
|
74
84
|
end
|
data/lib/gemstash/logging.rb
CHANGED
@@ -1,8 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "logger"
|
2
|
-
|
4
|
+
|
5
|
+
begin
|
6
|
+
require "puma/detect"
|
7
|
+
require "puma/log_writer" # Puma 6
|
8
|
+
rescue LoadError
|
9
|
+
require "puma/events"
|
10
|
+
end
|
3
11
|
|
4
12
|
module Gemstash
|
5
|
-
|
13
|
+
# :nodoc:
|
6
14
|
module Logging
|
7
15
|
LEVELS = {
|
8
16
|
debug: Logger::DEBUG,
|
@@ -10,7 +18,7 @@ module Gemstash
|
|
10
18
|
warn: Logger::WARN,
|
11
19
|
error: Logger::ERROR,
|
12
20
|
fatal: Logger::FATAL
|
13
|
-
}
|
21
|
+
}.freeze
|
14
22
|
|
15
23
|
def log
|
16
24
|
Gemstash::Logging.logger
|
@@ -60,7 +68,9 @@ module Gemstash
|
|
60
68
|
# Logger that looks like a stream, for Puma and Rack to log to.
|
61
69
|
class StreamLogger
|
62
70
|
def self.puma_events
|
63
|
-
Puma
|
71
|
+
# Puma 6 removed logging from Events and placed it in LogWriter
|
72
|
+
klass = Puma.const_defined?(:LogWriter) ? Puma::LogWriter : Puma::Events
|
73
|
+
klass.new(for_stdout, for_stderr)
|
64
74
|
end
|
65
75
|
|
66
76
|
def self.for_stdout
|
@@ -75,10 +85,12 @@ module Gemstash
|
|
75
85
|
@level = level
|
76
86
|
end
|
77
87
|
|
78
|
-
def flush
|
79
|
-
|
88
|
+
def flush; end
|
89
|
+
|
90
|
+
def sync=(_value); end
|
80
91
|
|
81
|
-
def sync
|
92
|
+
def sync
|
93
|
+
false
|
82
94
|
end
|
83
95
|
|
84
96
|
def write(message)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<!-- Automatically generated by Pandoc -->
|
2
|
+
.\" Automatically generated by Pandoc 3.1.8
|
3
|
+
.\"
|
4
|
+
.TH "gemstash-authorize" "1" "October 9, 2015" "" ""
|
5
|
+
.SH Name
|
6
|
+
gemstash-authorize - Adds or removes authorization to interact with
|
7
|
+
privately stored gems
|
8
|
+
.SH Synopsis
|
9
|
+
\f[CR]gemstash authorize [permissions] [--remove] [--list] [--key SECURE_KEY] [--name NAME] [--config-file FILE]\f[R]
|
10
|
+
.SH Description
|
11
|
+
Adds or removes authorization to interact with privately stored gems.
|
12
|
+
.PP
|
13
|
+
Any arguments will be used as specific permissions.
|
14
|
+
Valid permissions include \f[CR]push\f[R], \f[CR]yank\f[R], and
|
15
|
+
\f[CR]fetch\f[R].
|
16
|
+
If no permissions are provided, then all permissions will be granted
|
17
|
+
(including any that may be added in future versions of Gemstash).
|
18
|
+
.SS Usage
|
19
|
+
.IP
|
20
|
+
.EX
|
21
|
+
gemstash authorize
|
22
|
+
gemstash authorize push yank
|
23
|
+
gemstash authorize push --name my-auth
|
24
|
+
gemstash authorize yank --key <secure-key>
|
25
|
+
gemstash authorize --remove --key <secure-key>
|
26
|
+
gemstash authorize --list
|
27
|
+
.EE
|
28
|
+
.SH Options
|
29
|
+
.IP \[bu] 2
|
30
|
+
\f[CR]--config-file FILE\f[R]: Specify the config file to use.
|
31
|
+
If you aren\[cq]t using the default config file at
|
32
|
+
\f[CR]\[ti]/.gemstash/config.yml\f[R] or
|
33
|
+
\f[CR]\[ti]/.gemstash/config.yml.erb\f[R], then you must specify the
|
34
|
+
config file via this option.
|
35
|
+
.IP \[bu] 2
|
36
|
+
\f[CR]--key SECURE_KEY\f[R]: Specify the API key to affect.
|
37
|
+
This should be the actual key value, not a name.
|
38
|
+
This option is required when using \f[CR]--remove\f[R] but is optional
|
39
|
+
otherwise.
|
40
|
+
If adding an authorization, using this will either create or update the
|
41
|
+
permissions for the specified API key.
|
42
|
+
If missing, a new API key will always be generated.
|
43
|
+
Note that a key can only have a maximum length of 255 chars.
|
44
|
+
.IP \[bu] 2
|
45
|
+
\f[CR]--name\f[R]: Name of the authorization.
|
46
|
+
Purely for ease of identification, not required.
|
47
|
+
.IP \[bu] 2
|
48
|
+
\f[CR]--remove\f[R]: Remove an authorization rather than add or update
|
49
|
+
one.
|
50
|
+
When removing, permission values are not allowed.
|
51
|
+
The \f[CR]--key <secure-key>\f[R] option is required.
|
52
|
+
.IP \[bu] 2
|
53
|
+
\f[CR]--list\f[R]: List current authorizations.
|
54
|
+
Provide \f[CR]--name\f[R] or \f[CR]--key\f[R] to show only one result.
|
@@ -0,0 +1,52 @@
|
|
1
|
+
4mgemstash-authorize24m(1) 4mgemstash-authorize24m(1)
|
2
|
+
|
3
|
+
<!-- Automatically generated by Pandoc -->
|
4
|
+
|
5
|
+
1mName0m
|
6
|
+
gemstash-authorize - Adds or removes authorization to interact with
|
7
|
+
privately stored gems
|
8
|
+
|
9
|
+
1mSynopsis0m
|
10
|
+
gemstash authorize [permissions] [--remove] [--list] [--key SECURE_KEY]
|
11
|
+
[--name NAME] [--config-file FILE]
|
12
|
+
|
13
|
+
1mDescription0m
|
14
|
+
Adds or removes authorization to interact with privately stored gems.
|
15
|
+
|
16
|
+
Any arguments will be used as specific permissions. Valid permissions
|
17
|
+
include push, yank, and fetch. If no permissions are provided, then
|
18
|
+
all permissions will be granted (including any that may be added in fu-
|
19
|
+
ture versions of Gemstash).
|
20
|
+
|
21
|
+
1mUsage0m
|
22
|
+
gemstash authorize
|
23
|
+
gemstash authorize push yank
|
24
|
+
gemstash authorize push --name my-auth
|
25
|
+
gemstash authorize yank --key <secure-key>
|
26
|
+
gemstash authorize --remove --key <secure-key>
|
27
|
+
gemstash authorize --list
|
28
|
+
|
29
|
+
1mOptions0m
|
30
|
+
o --config-file FILE: Specify the config file to use. If you aren't
|
31
|
+
using the default config file at ~/.gemstash/config.yml or ~/.gem-
|
32
|
+
stash/config.yml.erb, then you must specify the config file via this
|
33
|
+
option.
|
34
|
+
|
35
|
+
o --key SECURE_KEY: Specify the API key to affect. This should be the
|
36
|
+
actual key value, not a name. This option is required when using
|
37
|
+
--remove but is optional otherwise. If adding an authorization, us-
|
38
|
+
ing this will either create or update the permissions for the speci-
|
39
|
+
fied API key. If missing, a new API key will always be generated.
|
40
|
+
Note that a key can only have a maximum length of 255 chars.
|
41
|
+
|
42
|
+
o --name: Name of the authorization. Purely for ease of identifica-
|
43
|
+
tion, not required.
|
44
|
+
|
45
|
+
o --remove: Remove an authorization rather than add or update one.
|
46
|
+
When removing, permission values are not allowed. The --key <secure-
|
47
|
+
key> option is required.
|
48
|
+
|
49
|
+
o --list: List current authorizations. Provide --name or --key to show
|
50
|
+
only one result.
|
51
|
+
|
52
|
+
October 9, 2015 4mgemstash-authorize24m(1)
|
@@ -0,0 +1,186 @@
|
|
1
|
+
<!-- Automatically generated by Pandoc -->
|
2
|
+
.\" Automatically generated by Pandoc 3.1.8
|
3
|
+
.\"
|
4
|
+
.TH "gemstash-configuration" "5" "October 13, 2015" "" ""
|
5
|
+
.SH Name
|
6
|
+
gemstash-configuration
|
7
|
+
.SH Synopsis
|
8
|
+
.IP
|
9
|
+
.EX
|
10
|
+
# \[ti]/.gemstash/config.yml
|
11
|
+
---
|
12
|
+
:base_path: \[dq]/var/gemstash\[dq]
|
13
|
+
:cache_type: memcached
|
14
|
+
:memcached_servers: localhost:11211
|
15
|
+
:db_adapter: postgres
|
16
|
+
:db_url: postgres:///gemstash
|
17
|
+
:db_connection_options:
|
18
|
+
:test: true
|
19
|
+
:pool_timeout: 2
|
20
|
+
:rubygems_url: https://my.gem-source.local
|
21
|
+
:ignore_gemfile_source: false
|
22
|
+
:puma_threads: 32
|
23
|
+
:bind: tcp://0.0.0.0:4242
|
24
|
+
:protected_fetch: true
|
25
|
+
:fetch_timeout: 10
|
26
|
+
:log_file: gemstash.log
|
27
|
+
.EE
|
28
|
+
.SH Base Path
|
29
|
+
\f[CR]:base_path\f[R]
|
30
|
+
.PP
|
31
|
+
Specifies where to store local files like the server log, cached gem
|
32
|
+
files, and the database (when using SQLite).
|
33
|
+
If the default is being used, the directory will be created if it does
|
34
|
+
not exist.
|
35
|
+
Any other directory needs to be created ahead of time and be writable to
|
36
|
+
the Gemstash server process.
|
37
|
+
Specifying the \f[CR]:base_path\f[R] via \f[CR]gemstash setup\f[R] will
|
38
|
+
create the directory for you.
|
39
|
+
.SS Default value
|
40
|
+
\f[CR]\[ti]/.gemstash\f[R]
|
41
|
+
.SS Valid values
|
42
|
+
Any valid path
|
43
|
+
.SH Cache Type
|
44
|
+
\f[CR]:cache_type\f[R]
|
45
|
+
.PP
|
46
|
+
Specifies how to cache values other than gem files (such as gem
|
47
|
+
dependencies).
|
48
|
+
\f[CR]memory\f[R] will use an in memory cache while \f[CR]memcached\f[R]
|
49
|
+
will point to 1 or more Memcached servers.
|
50
|
+
Use the \f[CR]:memcached_servers\f[R] configuration key for specifying
|
51
|
+
where the Memcached server(s) are.
|
52
|
+
.SS Default value
|
53
|
+
\f[CR]memory\f[R]
|
54
|
+
.SS Valid values
|
55
|
+
\f[CR]memory\f[R], \f[CR]memcached\f[R]
|
56
|
+
.SH Memcached Servers
|
57
|
+
\f[CR]:memcached_servers\f[R]
|
58
|
+
.PP
|
59
|
+
Specifies the Memcached servers to connect to when using
|
60
|
+
\f[CR]memcached\f[R] for the \f[CR]:cache_type\f[R].
|
61
|
+
Only used when \f[CR]memcached\f[R] is used for \f[CR]:cache_type\f[R].
|
62
|
+
.SS Default value
|
63
|
+
\f[CR]localhost:11211\f[R]
|
64
|
+
.SS Valid values
|
65
|
+
A comma delimited list of Memcached servers
|
66
|
+
.SH DB Adapter
|
67
|
+
\f[CR]:db_adapter\f[R]
|
68
|
+
.PP
|
69
|
+
Specifies what database adapter to use.
|
70
|
+
When \f[CR]sqlite3\f[R] is used, the database will be located at
|
71
|
+
\f[CR]gemstash.db\f[R] within the directory specified by
|
72
|
+
\f[CR]:base_path\f[R].
|
73
|
+
The database will automatically be created when using
|
74
|
+
\f[CR]sqlite3\f[R].
|
75
|
+
When \f[CR]postgres\f[R], \f[CR]mysql\f[R], or \f[CR]mysql2\f[R] is
|
76
|
+
used, the database to connect to must be specified in the
|
77
|
+
\f[CR]:db_url\f[R] configuration key.
|
78
|
+
The database must already be created when using anything other than
|
79
|
+
\f[CR]sqlite3\f[R].
|
80
|
+
.SS Default value
|
81
|
+
\f[CR]sqlite3\f[R]
|
82
|
+
.SS Valid values
|
83
|
+
\f[CR]sqlite3\f[R], \f[CR]postgres\f[R], \f[CR]mysql\f[R],
|
84
|
+
\f[CR]mysql2\f[R]
|
85
|
+
.SH DB URL
|
86
|
+
\f[CR]:db_url\f[R]
|
87
|
+
.PP
|
88
|
+
Specifies the database to connect to when using \f[CR]postgres\f[R],
|
89
|
+
\f[CR]mysql\f[R], or \f[CR]mysql2\f[R] for the \f[CR]:db_adapter\f[R].
|
90
|
+
Only used when the \f[CR]:db_adapter\f[R] is not \f[CR]sqlite3\f[R].
|
91
|
+
.SS Default value
|
92
|
+
None
|
93
|
+
.SS Valid values
|
94
|
+
A valid database URL for the Sequel gem (http://sequel.jeremyevans.net/)
|
95
|
+
.SH DB Connection Options
|
96
|
+
\f[CR]:db_connection_options\f[R]
|
97
|
+
.PP
|
98
|
+
Specifies additional \f[CR]Sequel.connect\f[R] options to use.
|
99
|
+
Note that any options here are merged in with the default options, so
|
100
|
+
you need not specify the \f[CR]max_connections\f[R] if you customize
|
101
|
+
this option.
|
102
|
+
.SS Default value
|
103
|
+
\f[CR]{ max_connections: 1 }\f[R] for \f[CR]sqlite3\f[R] adapter,
|
104
|
+
\f[CR]{ max_connections: config[:puma_threads] + 1 }\f[R] for any other
|
105
|
+
adapter.
|
106
|
+
.SS Valid values
|
107
|
+
A valid connection options Hash for the
|
108
|
+
Sequel.connect (http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-General+connection+options)
|
109
|
+
method.
|
110
|
+
.SH Rubygems URL
|
111
|
+
\f[CR]:rubygems_url\f[R]
|
112
|
+
.PP
|
113
|
+
Specifies the default gem source URL.
|
114
|
+
When any API endpoint is called without a \f[CR]/private\f[R] or
|
115
|
+
\f[CR]/upstream/<url>\f[R] prefix, this URL will be used to fetch the
|
116
|
+
result.
|
117
|
+
This value can be safely changed even if there are already gems stashed
|
118
|
+
for the previous value.
|
119
|
+
.SS Default value
|
120
|
+
\f[CR]https://rubygems.org\f[R]
|
121
|
+
.SS Valid values
|
122
|
+
A valid gem source URL
|
123
|
+
.SH Ignore Gemfile source
|
124
|
+
\f[CR]:ignore_gemfile_source\f[R]
|
125
|
+
.PP
|
126
|
+
Ignore the source specified in Gemfile and always use
|
127
|
+
\f[CR]:rubygems_url\f[R] as gems upstream.
|
128
|
+
.SS Default value
|
129
|
+
\f[CR]false\f[R]
|
130
|
+
.SS Valid values
|
131
|
+
Boolean: \f[CR]true\f[R] or \f[CR]false\f[R]
|
132
|
+
.SH Puma Threads
|
133
|
+
\f[CR]:puma_threads\f[R]
|
134
|
+
.PP
|
135
|
+
Specifies the number of threads used for the Gemstash server.
|
136
|
+
.SS Default value
|
137
|
+
\f[CR]16\f[R]
|
138
|
+
.SS Valid values
|
139
|
+
Integer value with a minimum of \f[CR]1\f[R]
|
140
|
+
.SH Bind Address
|
141
|
+
\f[CR]:bind\f[R]
|
142
|
+
.PP
|
143
|
+
Specifies the binding used to start the Gemstash server.
|
144
|
+
Keep in mind the user starting Gemstash needs to have access to bind in
|
145
|
+
this manner.
|
146
|
+
For example, if you use a port below 1024, you will need to run Gemstash
|
147
|
+
as the root user.
|
148
|
+
.SS Default value
|
149
|
+
\f[CR]tcp://0.0.0.0:9292\f[R]
|
150
|
+
.SS Valid values
|
151
|
+
Any valid binding that is supported by
|
152
|
+
Puma (https://github.com/puma/puma#binding-tcp--sockets)
|
153
|
+
.SH Protected Fetch
|
154
|
+
\f[CR]:protected_fetch\f[R]
|
155
|
+
.PP
|
156
|
+
Tells Gemstash to authenticate via an API key before allowing the
|
157
|
+
fetching of private gems and specs.
|
158
|
+
The default behavior is to allow unauthenticated download of private
|
159
|
+
gems and specs.
|
160
|
+
.SS Default value
|
161
|
+
\f[CR]false\f[R]
|
162
|
+
.SS Valid values
|
163
|
+
Boolean values \f[CR]true\f[R] or \f[CR]false\f[R]
|
164
|
+
.SH Fetch Timeout
|
165
|
+
\f[CR]:fetch_timeout\f[R]
|
166
|
+
.PP
|
167
|
+
The timeout setting for fetching gems.
|
168
|
+
Fetching gems over a slow connection may cause timeout errors.
|
169
|
+
If you experience timeout errors, you may want to increase this value.
|
170
|
+
The default is \f[CR]20\f[R] seconds.
|
171
|
+
.SS Default value
|
172
|
+
\f[CR]20\f[R]
|
173
|
+
.SS Valid values
|
174
|
+
Integer value with a minimum of \f[CR]1\f[R]
|
175
|
+
.SH Log File
|
176
|
+
\f[CR]:log_file\f[R]
|
177
|
+
.PP
|
178
|
+
Indicates the name of the file to use for logging.
|
179
|
+
The file will be placed in the base path.
|
180
|
+
.SS Default value
|
181
|
+
\f[CR]server.log\f[R]
|
182
|
+
.SS Valid values
|
183
|
+
Any valid file name, or \f[CR]:stdout\f[R] to log to \f[CR]$stdout\f[R]
|
184
|
+
.PP
|
185
|
+
\f[I]Note: Using \f[CI]:stdout\f[I] for the \f[CI]:log_file\f[I]
|
186
|
+
requires running with \f[CI]--no-daemonize\f[I].\f[R]
|
@@ -0,0 +1,208 @@
|
|
1
|
+
4mgemstash-configuration24m(5) 4mgemstash-configuration24m(5)
|
2
|
+
|
3
|
+
<!-- Automatically generated by Pandoc -->
|
4
|
+
|
5
|
+
1mName0m
|
6
|
+
gemstash-configuration
|
7
|
+
|
8
|
+
1mSynopsis0m
|
9
|
+
# ~/.gemstash/config.yml
|
10
|
+
---
|
11
|
+
:base_path: "/var/gemstash"
|
12
|
+
:cache_type: memcached
|
13
|
+
:memcached_servers: localhost:11211
|
14
|
+
:db_adapter: postgres
|
15
|
+
:db_url: postgres:///gemstash
|
16
|
+
:db_connection_options:
|
17
|
+
:test: true
|
18
|
+
:pool_timeout: 2
|
19
|
+
:rubygems_url: https://my.gem-source.local
|
20
|
+
:ignore_gemfile_source: false
|
21
|
+
:puma_threads: 32
|
22
|
+
:bind: tcp://0.0.0.0:4242
|
23
|
+
:protected_fetch: true
|
24
|
+
:fetch_timeout: 10
|
25
|
+
:log_file: gemstash.log
|
26
|
+
|
27
|
+
1mBase Path0m
|
28
|
+
:base_path
|
29
|
+
|
30
|
+
Specifies where to store local files like the server log, cached gem
|
31
|
+
files, and the database (when using SQLite). If the default is being
|
32
|
+
used, the directory will be created if it does not exist. Any other
|
33
|
+
directory needs to be created ahead of time and be writable to the Gem-
|
34
|
+
stash server process. Specifying the :base_path via gemstash setup
|
35
|
+
will create the directory for you.
|
36
|
+
|
37
|
+
1mDefault value0m
|
38
|
+
~/.gemstash
|
39
|
+
|
40
|
+
1mValid values0m
|
41
|
+
Any valid path
|
42
|
+
|
43
|
+
1mCache Type0m
|
44
|
+
:cache_type
|
45
|
+
|
46
|
+
Specifies how to cache values other than gem files (such as gem depen-
|
47
|
+
dencies). memory will use an in memory cache while memcached will
|
48
|
+
point to 1 or more Memcached servers. Use the :memcached_servers con-
|
49
|
+
figuration key for specifying where the Memcached server(s) are.
|
50
|
+
|
51
|
+
1mDefault value0m
|
52
|
+
memory
|
53
|
+
|
54
|
+
1mValid values0m
|
55
|
+
memory, memcached
|
56
|
+
|
57
|
+
1mMemcached Servers0m
|
58
|
+
:memcached_servers
|
59
|
+
|
60
|
+
Specifies the Memcached servers to connect to when using memcached for
|
61
|
+
the :cache_type. Only used when memcached is used for :cache_type.
|
62
|
+
|
63
|
+
1mDefault value0m
|
64
|
+
localhost:11211
|
65
|
+
|
66
|
+
1mValid values0m
|
67
|
+
A comma delimited list of Memcached servers
|
68
|
+
|
69
|
+
1mDB Adapter0m
|
70
|
+
:db_adapter
|
71
|
+
|
72
|
+
Specifies what database adapter to use. When sqlite3 is used, the
|
73
|
+
database will be located at gemstash.db within the directory specified
|
74
|
+
by :base_path. The database will automatically be created when using
|
75
|
+
sqlite3. When postgres, mysql, or mysql2 is used, the database to con-
|
76
|
+
nect to must be specified in the :db_url configuration key. The data-
|
77
|
+
base must already be created when using anything other than sqlite3.
|
78
|
+
|
79
|
+
1mDefault value0m
|
80
|
+
sqlite3
|
81
|
+
|
82
|
+
1mValid values0m
|
83
|
+
sqlite3, postgres, mysql, mysql2
|
84
|
+
|
85
|
+
1mDB URL0m
|
86
|
+
:db_url
|
87
|
+
|
88
|
+
Specifies the database to connect to when using postgres, mysql, or
|
89
|
+
mysql2 for the :db_adapter. Only used when the :db_adapter is not
|
90
|
+
sqlite3.
|
91
|
+
|
92
|
+
1mDefault value0m
|
93
|
+
None
|
94
|
+
|
95
|
+
1mValid values0m
|
96
|
+
A valid database URL for the Sequel gem (http://sequel.jeremye-
|
97
|
+
vans.net/)
|
98
|
+
|
99
|
+
1mDB Connection Options0m
|
100
|
+
:db_connection_options
|
101
|
+
|
102
|
+
Specifies additional Sequel.connect options to use. Note that any op-
|
103
|
+
tions here are merged in with the default options, so you need not
|
104
|
+
specify the max_connections if you customize this option.
|
105
|
+
|
106
|
+
1mDefault value0m
|
107
|
+
{ max_connections: 1 } for sqlite3 adapter, { max_connections: con-
|
108
|
+
fig[:puma_threads] + 1 } for any other adapter.
|
109
|
+
|
110
|
+
1mValid values0m
|
111
|
+
A valid connection options Hash for the Sequel.connect (http://se-
|
112
|
+
quel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-
|
113
|
+
General+connection+options) method.
|
114
|
+
|
115
|
+
1mRubygems URL0m
|
116
|
+
:rubygems_url
|
117
|
+
|
118
|
+
Specifies the default gem source URL. When any API endpoint is called
|
119
|
+
without a /private or /upstream/<url> prefix, this URL will be used to
|
120
|
+
fetch the result. This value can be safely changed even if there are
|
121
|
+
already gems stashed for the previous value.
|
122
|
+
|
123
|
+
1mDefault value0m
|
124
|
+
https://rubygems.org
|
125
|
+
|
126
|
+
1mValid values0m
|
127
|
+
A valid gem source URL
|
128
|
+
|
129
|
+
1mIgnore Gemfile source0m
|
130
|
+
:ignore_gemfile_source
|
131
|
+
|
132
|
+
Ignore the source specified in Gemfile and always use :rubygems_url as
|
133
|
+
gems upstream.
|
134
|
+
|
135
|
+
1mDefault value0m
|
136
|
+
false
|
137
|
+
|
138
|
+
1mValid values0m
|
139
|
+
Boolean: true or false
|
140
|
+
|
141
|
+
1mPuma Threads0m
|
142
|
+
:puma_threads
|
143
|
+
|
144
|
+
Specifies the number of threads used for the Gemstash server.
|
145
|
+
|
146
|
+
1mDefault value0m
|
147
|
+
16
|
148
|
+
|
149
|
+
1mValid values0m
|
150
|
+
Integer value with a minimum of 1
|
151
|
+
|
152
|
+
1mBind Address0m
|
153
|
+
:bind
|
154
|
+
|
155
|
+
Specifies the binding used to start the Gemstash server. Keep in mind
|
156
|
+
the user starting Gemstash needs to have access to bind in this manner.
|
157
|
+
For example, if you use a port below 1024, you will need to run Gem-
|
158
|
+
stash as the root user.
|
159
|
+
|
160
|
+
1mDefault value0m
|
161
|
+
tcp://0.0.0.0:9292
|
162
|
+
|
163
|
+
1mValid values0m
|
164
|
+
Any valid binding that is supported by Puma
|
165
|
+
(https://github.com/puma/puma#binding-tcp--sockets)
|
166
|
+
|
167
|
+
1mProtected Fetch0m
|
168
|
+
:protected_fetch
|
169
|
+
|
170
|
+
Tells Gemstash to authenticate via an API key before allowing the
|
171
|
+
fetching of private gems and specs. The default behavior is to allow
|
172
|
+
unauthenticated download of private gems and specs.
|
173
|
+
|
174
|
+
1mDefault value0m
|
175
|
+
false
|
176
|
+
|
177
|
+
1mValid values0m
|
178
|
+
Boolean values true or false
|
179
|
+
|
180
|
+
1mFetch Timeout0m
|
181
|
+
:fetch_timeout
|
182
|
+
|
183
|
+
The timeout setting for fetching gems. Fetching gems over a slow con-
|
184
|
+
nection may cause timeout errors. If you experience timeout errors,
|
185
|
+
you may want to increase this value. The default is 20 seconds.
|
186
|
+
|
187
|
+
1mDefault value0m
|
188
|
+
20
|
189
|
+
|
190
|
+
1mValid values0m
|
191
|
+
Integer value with a minimum of 1
|
192
|
+
|
193
|
+
1mLog File0m
|
194
|
+
:log_file
|
195
|
+
|
196
|
+
Indicates the name of the file to use for logging. The file will be
|
197
|
+
placed in the base path.
|
198
|
+
|
199
|
+
1mDefault value0m
|
200
|
+
server.log
|
201
|
+
|
202
|
+
1mValid values0m
|
203
|
+
Any valid file name, or :stdout to log to $stdout
|
204
|
+
|
205
|
+
4mNote:24m 4mUsing24m 4m:stdout24m 4mfor24m 4mthe24m 4m:log_file24m 4mrequires24m 4mrunning24m 4mwith24m 4m--no-daemo-0m
|
206
|
+
4mnize.0m
|
207
|
+
|
208
|
+
October 13, 2015 4mgemstash-configuration24m(5)
|