gemstash 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/gemstash +3 -0
- data/lib/gemstash.rb +2 -0
- data/lib/gemstash/api_key_authorization.rb +3 -0
- data/lib/gemstash/authorization.rb +7 -3
- data/lib/gemstash/cache.rb +5 -2
- data/lib/gemstash/cli.rb +2 -0
- data/lib/gemstash/cli/authorize.rb +3 -3
- data/lib/gemstash/cli/base.rb +4 -1
- data/lib/gemstash/cli/setup.rb +8 -1
- data/lib/gemstash/cli/start.rb +4 -1
- data/lib/gemstash/cli/status.rb +2 -0
- data/lib/gemstash/cli/stop.rb +2 -0
- data/lib/gemstash/config.ru +3 -3
- data/lib/gemstash/configuration.rb +7 -1
- data/lib/gemstash/db.rb +3 -0
- data/lib/gemstash/db/authorization.rb +2 -0
- data/lib/gemstash/db/cached_rubygem.rb +3 -0
- data/lib/gemstash/db/dependency.rb +2 -0
- data/lib/gemstash/db/rubygem.rb +3 -0
- data/lib/gemstash/db/upstream.rb +3 -0
- data/lib/gemstash/db/version.rb +3 -0
- data/lib/gemstash/dependencies.rb +4 -0
- data/lib/gemstash/env.rb +22 -4
- data/lib/gemstash/gem_fetcher.rb +2 -0
- data/lib/gemstash/gem_pusher.rb +5 -3
- data/lib/gemstash/gem_source.rb +2 -0
- data/lib/gemstash/gem_source/dependency_caching.rb +4 -4
- data/lib/gemstash/gem_source/private_source.rb +3 -0
- data/lib/gemstash/gem_source/rack_middleware.rb +3 -0
- data/lib/gemstash/gem_source/upstream_source.rb +9 -3
- data/lib/gemstash/gem_yanker.rb +4 -0
- data/lib/gemstash/health.rb +2 -0
- data/lib/gemstash/http_client.rb +4 -1
- data/lib/gemstash/logging.rb +2 -0
- data/lib/gemstash/man/gemstash-authorize.1 +51 -0
- data/lib/gemstash/man/gemstash-authorize.1.txt +33 -53
- data/lib/gemstash/man/gemstash-configuration.5 +229 -0
- data/lib/gemstash/man/gemstash-configuration.5.txt +150 -6
- data/lib/gemstash/man/gemstash-customize.7 +301 -0
- data/lib/gemstash/man/gemstash-customize.7.txt +183 -62
- data/lib/gemstash/man/gemstash-debugging.7 +34 -0
- data/lib/gemstash/man/gemstash-debugging.7.txt +17 -54
- data/lib/gemstash/man/gemstash-deploy.7 +72 -0
- data/lib/gemstash/man/gemstash-deploy.7.txt +44 -51
- data/lib/gemstash/man/gemstash-mirror.7 +40 -0
- data/lib/gemstash/man/gemstash-mirror.7.txt +20 -53
- data/lib/gemstash/man/gemstash-multiple-sources.7 +89 -0
- data/lib/gemstash/man/gemstash-multiple-sources.7.txt +53 -48
- data/lib/gemstash/man/gemstash-private-gems.7 +227 -0
- data/lib/gemstash/man/gemstash-private-gems.7.txt +108 -18
- data/lib/gemstash/man/gemstash-readme.7 +233 -0
- data/lib/gemstash/man/gemstash-readme.7.txt +126 -10
- data/lib/gemstash/man/gemstash-setup.1 +43 -0
- data/lib/gemstash/man/gemstash-setup.1.txt +28 -54
- data/lib/gemstash/man/gemstash-start.1 +26 -0
- data/lib/gemstash/man/gemstash-start.1.txt +16 -56
- data/lib/gemstash/man/gemstash-status.1 +20 -0
- data/lib/gemstash/man/gemstash-status.1.txt +13 -57
- data/lib/gemstash/man/gemstash-stop.1 +20 -0
- data/lib/gemstash/man/gemstash-stop.1.txt +13 -57
- data/lib/gemstash/man/gemstash-version.1 +22 -0
- data/lib/gemstash/man/gemstash-version.1.txt +12 -57
- data/lib/gemstash/migrations/01_gem_dependencies.rb +2 -0
- data/lib/gemstash/migrations/02_authorizations.rb +2 -0
- data/lib/gemstash/migrations/03_cached_gems.rb +2 -0
- data/lib/gemstash/migrations/04_health_tests.rb +2 -0
- data/lib/gemstash/puma.rb +2 -0
- data/lib/gemstash/rack_env_rewriter.rb +11 -2
- data/lib/gemstash/specs_builder.rb +5 -1
- data/lib/gemstash/storage.rb +12 -3
- data/lib/gemstash/upstream.rb +2 -0
- data/lib/gemstash/version.rb +3 -1
- data/lib/gemstash/web.rb +2 -0
- metadata +69 -22
@@ -1,66 +1,210 @@
|
|
1
|
+
gemstash-configuration(5) gemstash-configuration(5)
|
1
2
|
|
2
3
|
|
3
4
|
|
5
|
+
1mNAME0m
|
6
|
+
gemstash-configuration
|
4
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
|
5
26
|
|
27
|
+
1mBASE PATH0m
|
28
|
+
:base_path
|
6
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
|
+
(gemstash help setup.1) will create the directory for you.
|
7
36
|
|
37
|
+
1mDEFAULT VALUE0m
|
38
|
+
~/.gemstash
|
8
39
|
|
40
|
+
1mVALID VALUES0m
|
41
|
+
Any valid path
|
9
42
|
|
43
|
+
1mCACHE TYPE0m
|
44
|
+
:cache_type
|
10
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.
|
11
50
|
|
51
|
+
1mDEFAULT VALUE0m
|
52
|
+
memory
|
12
53
|
|
54
|
+
1mVALID VALUES0m
|
55
|
+
memory, memcached
|
13
56
|
|
57
|
+
1mMEMCACHED SERVERS0m
|
58
|
+
:memcached_servers
|
14
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.
|
15
62
|
|
63
|
+
1mDEFAULT VALUE0m
|
64
|
+
localhost:11211
|
16
65
|
|
66
|
+
1mVALID VALUES0m
|
67
|
+
A comma delimited list of Memcached servers
|
17
68
|
|
69
|
+
1mDB ADAPTER0m
|
70
|
+
:db_adapter
|
18
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.
|
19
78
|
|
79
|
+
1mDEFAULT VALUE0m
|
80
|
+
sqlite3
|
20
81
|
|
82
|
+
1mVALID VALUES0m
|
83
|
+
sqlite3, postgres, mysql, mysql2
|
21
84
|
|
85
|
+
1mDB URL0m
|
86
|
+
:db_url
|
22
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.
|
23
91
|
|
92
|
+
1mDEFAULT VALUE0m
|
93
|
+
None
|
24
94
|
|
95
|
+
1mVALID VALUES0m
|
96
|
+
A valid database URL for the Sequel gem (http://sequel.jeremye-
|
97
|
+
vans.net/)
|
25
98
|
|
99
|
+
1mDB CONNECTION OPTIONS0m
|
100
|
+
:db_connection_options
|
26
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.
|
27
105
|
|
106
|
+
1mDEFAULT VALUE0m
|
107
|
+
{ max_connections: 1 } for sqlite3 adapter, { max_connections: con-
|
108
|
+
fig[:puma_threads] + 1 } for any other adapter.
|
28
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.
|
29
114
|
|
115
|
+
1mRUBYGEMS URL0m
|
116
|
+
:rubygems_url
|
30
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.
|
31
122
|
|
123
|
+
1mDEFAULT VALUE0m
|
124
|
+
https://rubygems.org
|
32
125
|
|
126
|
+
1mVALID VALUES0m
|
127
|
+
A valid gem source URL
|
33
128
|
|
129
|
+
1mIGNORE GEMFILE SOURCE0m
|
130
|
+
:ignore_gemfile_source
|
34
131
|
|
132
|
+
Ignore the source specified in Gemfile and always use :rubygems_url as
|
133
|
+
gems upstream.
|
35
134
|
|
135
|
+
1mDEFAULT VALUE0m
|
136
|
+
false
|
36
137
|
|
138
|
+
1mVALID VALUES0m
|
139
|
+
Boolean: true or false
|
37
140
|
|
141
|
+
1mPUMA THREADS0m
|
142
|
+
:puma_threads
|
38
143
|
|
144
|
+
Specifies the number of threads used for the Gemstash server.
|
39
145
|
|
146
|
+
1mDEFAULT VALUE0m
|
147
|
+
16
|
40
148
|
|
149
|
+
1mVALID VALUES0m
|
150
|
+
Integer value with a minimum of 1
|
41
151
|
|
152
|
+
1mBIND ADDRESS0m
|
153
|
+
:bind
|
42
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.
|
43
159
|
|
160
|
+
1mDEFAULT VALUE0m
|
161
|
+
tcp://0.0.0.0:9292
|
44
162
|
|
163
|
+
1mVALID VALUES0m
|
164
|
+
Any valid binding that is supported by Puma
|
165
|
+
(https://github.com/puma/puma#binding-tcp--sockets)
|
45
166
|
|
167
|
+
1mPROTECTED FETCH0m
|
168
|
+
:protected_fetch
|
46
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.
|
47
173
|
|
174
|
+
1mDEFAULT VALUE0m
|
175
|
+
false
|
48
176
|
|
177
|
+
1mVALID VALUES0m
|
178
|
+
Boolean values true or false
|
49
179
|
|
180
|
+
1mFETCH TIMEOUT0m
|
181
|
+
:fetch_timeout
|
50
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.
|
51
186
|
|
187
|
+
1mDEFAULT VALUE0m
|
188
|
+
20
|
52
189
|
|
190
|
+
1mVALID VALUES0m
|
191
|
+
Integer value with a minimum of 1
|
53
192
|
|
193
|
+
1mLOG FILE0m
|
194
|
+
:log_file
|
54
195
|
|
196
|
+
Indicates the name of the file to use for logging. The file will be
|
197
|
+
placed in the base path (gemstash help configuration.5).
|
55
198
|
|
199
|
+
1mDEFAULT VALUE0m
|
200
|
+
server.log
|
56
201
|
|
202
|
+
1mVALID VALUES0m
|
203
|
+
Any valid file name, or :stdout to log to $stdout
|
57
204
|
|
205
|
+
4mNote:24m 4mUsing24m 4m:stdout24m 4mfor24m 4mthe24m 4m:log_file24m 4mrequires24m 4mrunning24m 4mwith24m 4m--no-daemo-0m
|
206
|
+
4mnize24m 4m(gemstash24m 4mhelp24m 4mstart.1).0m
|
58
207
|
|
59
208
|
|
60
209
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
210
|
+
October 13, 2015 gemstash-configuration(5)
|
@@ -0,0 +1,301 @@
|
|
1
|
+
.\" Automatically generated by Pandoc 2.5
|
2
|
+
.\"
|
3
|
+
.TH "gemstash\-customize" "7" "October 28, 2015" "" ""
|
4
|
+
.hy
|
5
|
+
.SH CUSTOMIZING THE SERVER
|
6
|
+
.PP
|
7
|
+
Although Gemstash is designed for as minimal setup as possible, there
|
8
|
+
may be times you will want to change some of the default configuration.
|
9
|
+
By the end of this guide, you will be able to customize some of the
|
10
|
+
Gemstash behavior, including where files are stored, what database
|
11
|
+
Gemstash uses, and how Gemstash caches certain requests.
|
12
|
+
.SS SETUP
|
13
|
+
.PP
|
14
|
+
Several customizable options are available via an interactive Gemstash
|
15
|
+
command.
|
16
|
+
Run \f[C]gemstash setup\f[R] and answer the questions it provides (a
|
17
|
+
blank answer will use the default value):
|
18
|
+
.RS
|
19
|
+
.PP
|
20
|
+
$ gemstash setup
|
21
|
+
.PD 0
|
22
|
+
.P
|
23
|
+
.PD
|
24
|
+
Where should files go?
|
25
|
+
[\[ti]/.gemstash]
|
26
|
+
.PD 0
|
27
|
+
.P
|
28
|
+
.PD
|
29
|
+
Cache with what?
|
30
|
+
[MEMORY, memcached] \f[B]memcached\f[R]
|
31
|
+
.PD 0
|
32
|
+
.P
|
33
|
+
.PD
|
34
|
+
What is the comma separated Memcached servers?
|
35
|
+
[localhost:11211]
|
36
|
+
.PD 0
|
37
|
+
.P
|
38
|
+
.PD
|
39
|
+
What database adapter?
|
40
|
+
[SQLITE3, postgres, mysql, mysql2] \f[B]postgres\f[R]
|
41
|
+
.PD 0
|
42
|
+
.P
|
43
|
+
.PD
|
44
|
+
Where is the database?
|
45
|
+
[postgres:///gemstash]
|
46
|
+
.PD 0
|
47
|
+
.P
|
48
|
+
.PD
|
49
|
+
Checking that the cache is available
|
50
|
+
.PD 0
|
51
|
+
.P
|
52
|
+
.PD
|
53
|
+
Checking that the database is available
|
54
|
+
.PD 0
|
55
|
+
.P
|
56
|
+
.PD
|
57
|
+
The database is not available
|
58
|
+
.PD 0
|
59
|
+
.P
|
60
|
+
.PD
|
61
|
+
.RE
|
62
|
+
.PP
|
63
|
+
Once you\[cq]ve answered the questions, some checks will be made to
|
64
|
+
ensure the configuration will work.
|
65
|
+
For example, the database didn\[cq]t exist in the previous example, so
|
66
|
+
the command failed and the configuration wasn\[cq]t saved.
|
67
|
+
If the command passes, you may provide the \f[C]\-\-redo\f[R] option to
|
68
|
+
force configuration to be redone:
|
69
|
+
.RS
|
70
|
+
.PP
|
71
|
+
\f[C]$ gemstash setup \-\-redo\f[R]
|
72
|
+
.PD 0
|
73
|
+
.P
|
74
|
+
.PD
|
75
|
+
Where should files go?
|
76
|
+
[\[ti]/.gemstash]
|
77
|
+
.PD 0
|
78
|
+
.P
|
79
|
+
.PD
|
80
|
+
Cache with what?
|
81
|
+
[MEMORY, memcached] \f[B]memcached\f[R]
|
82
|
+
.PD 0
|
83
|
+
.P
|
84
|
+
.PD
|
85
|
+
What is the comma separated Memcached servers?
|
86
|
+
[localhost:11211]
|
87
|
+
.PD 0
|
88
|
+
.P
|
89
|
+
.PD
|
90
|
+
What database adapter?
|
91
|
+
[SQLITE3, postgres, mysql, mysql2]
|
92
|
+
.PD 0
|
93
|
+
.P
|
94
|
+
.PD
|
95
|
+
Checking that the cache is available
|
96
|
+
.PD 0
|
97
|
+
.P
|
98
|
+
.PD
|
99
|
+
Checking that the database is available
|
100
|
+
.PD 0
|
101
|
+
.P
|
102
|
+
.PD
|
103
|
+
You are all setup!
|
104
|
+
.PD 0
|
105
|
+
.P
|
106
|
+
.PD
|
107
|
+
.RE
|
108
|
+
.PP
|
109
|
+
Once all checks have passed, Gemstash will store your answers in the
|
110
|
+
configuration file located at \f[C]\[ti]/.gemstash/config.yml\f[R].
|
111
|
+
.SS FILES
|
112
|
+
.PP
|
113
|
+
Storage in Gemstash defaults to \f[C]\[ti]/.gemstash\f[R] unless
|
114
|
+
otherwise specified.
|
115
|
+
You can change this in your config file via the \f[C]:base_path\f[R]
|
116
|
+
key:
|
117
|
+
.IP
|
118
|
+
.nf
|
119
|
+
\f[C]
|
120
|
+
# \[ti]/.gemstash/config.yml
|
121
|
+
\-\-\-
|
122
|
+
:base_path: \[dq]/var/gemstash\[dq]
|
123
|
+
\f[R]
|
124
|
+
.fi
|
125
|
+
.PP
|
126
|
+
When customizing the \f[C]base_path\f[R], the directory must exist,
|
127
|
+
otherwise Gemstash will fail to run.
|
128
|
+
Thus, if you want to use \f[C]/var/gemstash\f[R] like in the previous
|
129
|
+
example, make sure to \f[C]mkdir /var/gemstash\f[R] and grant access to
|
130
|
+
the directory for the user you run Gemstash with.
|
131
|
+
.SS DATABASE
|
132
|
+
.PP
|
133
|
+
The \f[C]:db_adapter\f[R] configuration key specifies what database you
|
134
|
+
will be using.
|
135
|
+
The default \f[C]:db_adapter\f[R] is
|
136
|
+
\f[C]sqlite3\f[R] (https://www.sqlite.org/), which will use a database
|
137
|
+
file located within your \f[C]:base_path\f[R].
|
138
|
+
The database file will always be named \f[C]gemstash.db\f[R].
|
139
|
+
.PP
|
140
|
+
You may also use \f[C]postgres\f[R] (http://www.postgresql.org/),
|
141
|
+
\f[C]mysql\f[R] (http://www.mysql.com/), or
|
142
|
+
\f[C]mysql2\f[R] (http://sequel.jeremyevans.net/rdoc/files/doc/opening_databases_rdoc.html#label-mysql2)
|
143
|
+
for your \f[C]:db_adapter\f[R].
|
144
|
+
When using any of these options, you need to specify the
|
145
|
+
\f[C]:db_url\f[R] to point to an existing database.
|
146
|
+
Here is an example configuration to use the \f[C]postgres\f[R] adapter:
|
147
|
+
.IP
|
148
|
+
.nf
|
149
|
+
\f[C]
|
150
|
+
# \[ti]/.gemstash/config.yml
|
151
|
+
\-\-\-
|
152
|
+
:db_adapter: postgres
|
153
|
+
:db_url: postgres:///gemstash
|
154
|
+
:db_connection_options: # Sequel.connect options
|
155
|
+
:connect_timeout: 10
|
156
|
+
:read_timeout: 5
|
157
|
+
:timeout: 30
|
158
|
+
\f[R]
|
159
|
+
.fi
|
160
|
+
.PP
|
161
|
+
Regardless of the adapter you choose, the database will automatically
|
162
|
+
migrate to your version of Gemstash whenever the database is needed.
|
163
|
+
You only need to ensure the database exists and Gemstash will do the
|
164
|
+
rest, except for \f[C]sqlite3\f[R] (for which Gemstash will also create
|
165
|
+
the database for you).
|
166
|
+
.SS CACHE
|
167
|
+
.PP
|
168
|
+
Certain things (like dependencies) are cached in memory.
|
169
|
+
This avoids web calls to the gem source, and database calls for private
|
170
|
+
gems.
|
171
|
+
.IP
|
172
|
+
.nf
|
173
|
+
\f[C]
|
174
|
+
# \[ti]/.gemstash/config.yml
|
175
|
+
\-\-\-
|
176
|
+
:cache_type: memory
|
177
|
+
:cache_max_size: 2000
|
178
|
+
\f[R]
|
179
|
+
.fi
|
180
|
+
.PP
|
181
|
+
This configuration uses the default \f[C]memory\f[R] cache, and has
|
182
|
+
increased the \f[C]cache_max_size\f[R] setting from its default of 500
|
183
|
+
items.
|
184
|
+
.PP
|
185
|
+
The memory cache can optionally be swapped out with a
|
186
|
+
Memcached (http://memcached.org/) server (or cluster of servers).
|
187
|
+
.PP
|
188
|
+
To use Memcached, use the \f[C]memcached\f[R] \f[C]:cache_type\f[R]
|
189
|
+
configuration.
|
190
|
+
.PP
|
191
|
+
Provide the servers as a comma\-separated list to the
|
192
|
+
\f[C]:memcached_servers\f[R] configuration key:
|
193
|
+
.IP
|
194
|
+
.nf
|
195
|
+
\f[C]
|
196
|
+
# \[ti]/.gemstash/config.yml
|
197
|
+
\-\-\-
|
198
|
+
:cache_type: memcached
|
199
|
+
:memcached_servers: memcached1.local:11211,memcached2.local:11211
|
200
|
+
:cache_expiration: 1800
|
201
|
+
\f[R]
|
202
|
+
.fi
|
203
|
+
.PP
|
204
|
+
All caching expires in \f[C]cache_expiration\f[R] number of seconds.
|
205
|
+
Default is 1800 seconds (30 minutes).
|
206
|
+
This option applies to all caching.
|
207
|
+
.SS SERVER
|
208
|
+
.PP
|
209
|
+
Gemstash uses Puma (http://puma.io/) and Rack (http://rack.github.io/)
|
210
|
+
as the server.
|
211
|
+
Alternate server configurations are not currently supported, but you can
|
212
|
+
take a look at the Puma
|
213
|
+
configuration (https://github.com/rubygems/gemstash/blob/master/lib/gemstash/puma.rb)
|
214
|
+
and the rackup
|
215
|
+
file (https://github.com/rubygems/gemstash/blob/master/lib/gemstash/config.ru)
|
216
|
+
for inspiration.
|
217
|
+
.PP
|
218
|
+
While the server is not customizable, the way Gemstash binds the port
|
219
|
+
can be changed.
|
220
|
+
To change the binding, update the \f[C]:bind\f[R] configuration key:
|
221
|
+
.IP
|
222
|
+
.nf
|
223
|
+
\f[C]
|
224
|
+
# \[ti]/.gemstash/config.yml
|
225
|
+
\-\-\-
|
226
|
+
:bind: tcp://0.0.0.0:4242
|
227
|
+
\f[R]
|
228
|
+
.fi
|
229
|
+
.PP
|
230
|
+
This maps directly to the Puma bind
|
231
|
+
flag (https://github.com/puma/puma#binding-tcp--sockets), and will
|
232
|
+
support anything valid for that flag.
|
233
|
+
.PP
|
234
|
+
The number of threads Puma uses is also customizable via the
|
235
|
+
\f[C]:puma_threads\f[R] configuration key.
|
236
|
+
The default is \f[C]16\f[R].
|
237
|
+
.SS PROTECTED FETCH
|
238
|
+
.PP
|
239
|
+
Gemstash by default allows unauthenticated access for private gems.
|
240
|
+
Authenticated access is available via the \f[C]:protected_fetch\f[R]
|
241
|
+
configuration key.
|
242
|
+
.IP
|
243
|
+
.nf
|
244
|
+
\f[C]
|
245
|
+
# \[ti]/.gemstash/config.yml
|
246
|
+
\-\-\-
|
247
|
+
:protected_fetch: true
|
248
|
+
\f[R]
|
249
|
+
.fi
|
250
|
+
.PP
|
251
|
+
More details on protected_fetch are here (gemstash help private-gems.7).
|
252
|
+
.SS FETCH TIMEOUT
|
253
|
+
.PP
|
254
|
+
The default fetch timeout is 20 seconds.
|
255
|
+
Use the \f[C]:fetch_timeout\f[R] configuration key to change it.
|
256
|
+
.IP
|
257
|
+
.nf
|
258
|
+
\f[C]
|
259
|
+
\-\-\-
|
260
|
+
:fetch_timeout: 20
|
261
|
+
\f[R]
|
262
|
+
.fi
|
263
|
+
.SS CONFIG FILE LOCATION
|
264
|
+
.PP
|
265
|
+
By default, configuration for Gemstash will be at
|
266
|
+
\f[C]\[ti]/.gemstash/config.yml\f[R].
|
267
|
+
This can be changed by providing the \f[C]\-\-config\-file\f[R] option
|
268
|
+
to the various Gemstash commands:
|
269
|
+
.IP
|
270
|
+
.nf
|
271
|
+
\f[C]
|
272
|
+
$ gemstash setup \-\-config\-file ./gemstash\-config.yml
|
273
|
+
$ gemstash authorize \-\-config\-file ./gemstash\-config.yml
|
274
|
+
$ gemstash start \-\-config\-file ./gemstash\-config.yml
|
275
|
+
$ gemstash stop \-\-config\-file ./gemstash\-config.yml
|
276
|
+
$ gemstash status \-\-config\-file ./gemstash\-config.yml
|
277
|
+
\f[R]
|
278
|
+
.fi
|
279
|
+
.PP
|
280
|
+
When providing \f[C]\-\-config\-file\f[R] to \f[C]gemstash setup\f[R],
|
281
|
+
the provided file will be output to with the provided configuration.
|
282
|
+
\f[B]This will overwrite\f[R] any existing configuration.
|
283
|
+
If the file doesn\[cq]t exist when providing \f[C]\-\-config\-file\f[R]
|
284
|
+
to \f[C]gemstash start\f[R], \f[C]gemstash stop\f[R],
|
285
|
+
\f[C]gemstash status\f[R], and \f[C]gemstash authorize\f[R], the default
|
286
|
+
configuration will be used.
|
287
|
+
.SS ERB PARSED CONFIG
|
288
|
+
.PP
|
289
|
+
You may also create a \f[C]\[ti]/.gemstash/config.yml.erb\f[R] file.
|
290
|
+
If present, this will be used instead of
|
291
|
+
\f[C]\[ti]/.gemstash/config.yml\f[R].
|
292
|
+
For example, with this you can use environment variables in the config:
|
293
|
+
.IP
|
294
|
+
.nf
|
295
|
+
\f[C]
|
296
|
+
# \[ti]/.gemstash/config.yml.erb
|
297
|
+
\-\-\-
|
298
|
+
:db_adapter: postgres
|
299
|
+
:db_url: <%= ENV[\[dq]DATABASE_URL\[dq]] %>
|
300
|
+
\f[R]
|
301
|
+
.fi
|