gemstash 2.2.2 → 2.3.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 +4 -4
- data/lib/gemstash/gem_source/upstream_source.rb +15 -0
- data/lib/gemstash/logging.rb +9 -2
- data/lib/gemstash/man/gemstash-authorize.1 +1 -1
- data/lib/gemstash/man/gemstash-authorize.1.txt +11 -15
- data/lib/gemstash/man/gemstash-configuration.5 +1 -1
- data/lib/gemstash/man/gemstash-configuration.5.txt +15 -19
- data/lib/gemstash/man/gemstash-customize.7 +1 -1
- data/lib/gemstash/man/gemstash-customize.7.txt +26 -30
- data/lib/gemstash/man/gemstash-debugging.7 +1 -1
- data/lib/gemstash/man/gemstash-debugging.7.txt +5 -9
- data/lib/gemstash/man/gemstash-deploy.7 +1 -1
- data/lib/gemstash/man/gemstash-deploy.7.txt +2 -6
- data/lib/gemstash/man/gemstash-mirror.7 +1 -1
- data/lib/gemstash/man/gemstash-mirror.7.txt +3 -7
- data/lib/gemstash/man/gemstash-multiple-sources.7 +1 -1
- data/lib/gemstash/man/gemstash-multiple-sources.7.txt +8 -12
- data/lib/gemstash/man/gemstash-private-gems.7 +1 -1
- data/lib/gemstash/man/gemstash-private-gems.7.txt +18 -22
- data/lib/gemstash/man/gemstash-readme.7 +1 -1
- data/lib/gemstash/man/gemstash-readme.7.txt +9 -13
- data/lib/gemstash/man/gemstash-setup.1 +1 -1
- data/lib/gemstash/man/gemstash-setup.1.txt +2 -6
- data/lib/gemstash/man/gemstash-start.1 +1 -1
- data/lib/gemstash/man/gemstash-start.1.txt +2 -6
- data/lib/gemstash/man/gemstash-status.1 +1 -1
- data/lib/gemstash/man/gemstash-status.1.txt +2 -6
- data/lib/gemstash/man/gemstash-stop.1 +1 -1
- data/lib/gemstash/man/gemstash-stop.1.txt +2 -6
- data/lib/gemstash/man/gemstash-version.1 +1 -1
- data/lib/gemstash/man/gemstash-version.1.txt +2 -6
- data/lib/gemstash/version.rb +1 -1
- metadata +13 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ee387f961929db690c98fc386db4790b340525eed0fc2980045ae7cd10f14914
|
|
4
|
+
data.tar.gz: e078fa40c9feed18e13f734186c4ca8c3b9acf1af3a5c3302ff83e4d2fc9a91e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 86d24732e38c099ab656ddead6a78b68916e019a9ebaf9b491e3d73fded2e8ae72a6f50a28b51a4f0bf64e41993ba5373e42761a648e14d6d42af6f263a3f8aa
|
|
7
|
+
data.tar.gz: 2fe72a7b46d0d7bd37265738798e5eb4d2cb6358aa92a292be7c8561db10216b3b13e55bb7bca6e49b379f4fd5efff39e71b107e7a0d29197291f82d3e84998b
|
|
@@ -128,6 +128,21 @@ module Gemstash
|
|
|
128
128
|
serve_cached(id, :gem)
|
|
129
129
|
end
|
|
130
130
|
|
|
131
|
+
def serve_latest_specs
|
|
132
|
+
http_client = http_client_for(upstream)
|
|
133
|
+
http_client.get("latest_specs.4.8.gz")
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def serve_prerelease_specs
|
|
137
|
+
http_client = http_client_for(upstream)
|
|
138
|
+
http_client.get("prerelease_specs.4.8.gz")
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def serve_specs
|
|
142
|
+
http_client = http_client_for(upstream)
|
|
143
|
+
http_client.get("specs.4.8.gz")
|
|
144
|
+
end
|
|
145
|
+
|
|
131
146
|
private
|
|
132
147
|
|
|
133
148
|
def serve_cached(id, resource_type)
|
data/lib/gemstash/logging.rb
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "logger"
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
begin
|
|
6
|
+
require "puma/log_writer" # Puma 6
|
|
7
|
+
rescue LoadError
|
|
8
|
+
require "puma/events"
|
|
9
|
+
end
|
|
5
10
|
|
|
6
11
|
module Gemstash
|
|
7
12
|
# :nodoc:
|
|
@@ -62,7 +67,9 @@ module Gemstash
|
|
|
62
67
|
# Logger that looks like a stream, for Puma and Rack to log to.
|
|
63
68
|
class StreamLogger
|
|
64
69
|
def self.puma_events
|
|
65
|
-
Puma
|
|
70
|
+
# Puma 6 removed logging from Events and placed it in LogWriter
|
|
71
|
+
klass = Puma.const_defined?(:LogWriter) ? Puma::LogWriter : Puma::Events
|
|
72
|
+
klass.new(for_stdout, for_stderr)
|
|
66
73
|
end
|
|
67
74
|
|
|
68
75
|
def self.for_stdout
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-authorize24m(1) 4mgemstash-authorize24m(1)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -27,22 +25,20 @@ gemstash-authorize(1) gemstash-authorize(1)
|
|
|
27
25
|
gemstash authorize --remove --key <secure-key>
|
|
28
26
|
|
|
29
27
|
1mOptions0m
|
|
30
|
-
o 1m--config-file
|
|
31
|
-
using
|
|
32
|
-
1mstash/config.yml.erb22m,
|
|
28
|
+
o 1m--config-file FILE22m: Specify the config file to use. If you aren't
|
|
29
|
+
using the default config file at 1m~/.gemstash/config.yml 22mor 1m~/.gem-0m
|
|
30
|
+
1mstash/config.yml.erb22m, then you must specify the config file via this
|
|
33
31
|
option.
|
|
34
32
|
|
|
35
|
-
o 1m--key
|
|
36
|
-
actual
|
|
37
|
-
1m--remove
|
|
38
|
-
ing
|
|
39
|
-
fied
|
|
33
|
+
o 1m--key SECURE_KEY22m: Specify the API key to affect. This should be the
|
|
34
|
+
actual key value, not a name. This option is required when using
|
|
35
|
+
1m--remove 22mbut is optional otherwise. If adding an authorization, us-
|
|
36
|
+
ing this will either create or update the permissions for the speci-
|
|
37
|
+
fied API key. If missing, a new API key will always be generated.
|
|
40
38
|
Note that a key can only have a maximum length of 255 chars.
|
|
41
39
|
|
|
42
|
-
o 1m--remove22m:
|
|
40
|
+
o 1m--remove22m: Remove an authorization rather than add or update one.
|
|
43
41
|
When removing, permission values are not allowed. The 1m--key <secure-0m
|
|
44
42
|
1mkey> 22moption is required.
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
October 9, 2015 gemstash-authorize(1)
|
|
44
|
+
October 9, 2015 4mgemstash-authorize24m(1)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-configuration24m(5) 4mgemstash-configuration24m(5)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -33,7 +31,7 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
33
31
|
files, and the database (when using SQLite). If the default is being
|
|
34
32
|
used, the directory will be created if it does not exist. Any other
|
|
35
33
|
directory needs to be created ahead of time and be writable to the Gem-
|
|
36
|
-
stash
|
|
34
|
+
stash server process. Specifying the 1m:base_path 22mvia 1mgemstash setup0m
|
|
37
35
|
will create the directory for you.
|
|
38
36
|
|
|
39
37
|
1mDefault value0m
|
|
@@ -45,9 +43,9 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
45
43
|
1mCache Type0m
|
|
46
44
|
1m:cache_type0m
|
|
47
45
|
|
|
48
|
-
Specifies
|
|
49
|
-
dencies).
|
|
50
|
-
point
|
|
46
|
+
Specifies how to cache values other than gem files (such as gem depen-
|
|
47
|
+
dencies). 1mmemory 22mwill use an in memory cache while 1mmemcached 22mwill
|
|
48
|
+
point to 1 or more Memcached servers. Use the 1m:memcached_servers 22mcon-
|
|
51
49
|
figuration key for specifying where the Memcached server(s) are.
|
|
52
50
|
|
|
53
51
|
1mDefault value0m
|
|
@@ -59,7 +57,7 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
59
57
|
1mMemcached Servers0m
|
|
60
58
|
1m:memcached_servers0m
|
|
61
59
|
|
|
62
|
-
Specifies
|
|
60
|
+
Specifies the Memcached servers to connect to when using 1mmemcached 22mfor
|
|
63
61
|
the 1m:cache_type22m. Only used when 1mmemcached 22mis used for 1m:cache_type22m.
|
|
64
62
|
|
|
65
63
|
1mDefault value0m
|
|
@@ -71,9 +69,9 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
71
69
|
1mDB Adapter0m
|
|
72
70
|
1m:db_adapter0m
|
|
73
71
|
|
|
74
|
-
Specifies
|
|
75
|
-
database
|
|
76
|
-
by
|
|
72
|
+
Specifies what database adapter to use. When 1msqlite3 22mis used, the
|
|
73
|
+
database will be located at 1mgemstash.db 22mwithin the directory specified
|
|
74
|
+
by 1m:base_path22m. The database will automatically be created when using
|
|
77
75
|
1msqlite322m. When 1mpostgres22m, 1mmysql22m, or 1mmysql2 22mis used, the database to con-
|
|
78
76
|
nect to must be specified in the 1m:db_url 22mconfiguration key. The data-
|
|
79
77
|
base must already be created when using anything other than 1msqlite322m.
|
|
@@ -117,9 +115,9 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
117
115
|
1mRubygems URL0m
|
|
118
116
|
1m:rubygems_url0m
|
|
119
117
|
|
|
120
|
-
Specifies
|
|
121
|
-
without
|
|
122
|
-
fetch
|
|
118
|
+
Specifies the default gem source URL. When any API endpoint is called
|
|
119
|
+
without a 1m/private 22mor 1m/upstream/<url> 22mprefix, this URL will be used to
|
|
120
|
+
fetch the result. This value can be safely changed even if there are
|
|
123
121
|
already gems stashed for the previous value.
|
|
124
122
|
|
|
125
123
|
1mDefault value0m
|
|
@@ -131,7 +129,7 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
131
129
|
1mIgnore Gemfile source0m
|
|
132
130
|
1m:ignore_gemfile_source0m
|
|
133
131
|
|
|
134
|
-
Ignore
|
|
132
|
+
Ignore the source specified in Gemfile and always use 1m:rubygems_url 22mas
|
|
135
133
|
gems upstream.
|
|
136
134
|
|
|
137
135
|
1mDefault value0m
|
|
@@ -154,7 +152,7 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
154
152
|
1mBind Address0m
|
|
155
153
|
1m:bind0m
|
|
156
154
|
|
|
157
|
-
Specifies
|
|
155
|
+
Specifies the binding used to start the Gemstash server. Keep in mind
|
|
158
156
|
the user starting Gemstash needs to have access to bind in this manner.
|
|
159
157
|
For example, if you use a port below 1024, you will need to run Gem-
|
|
160
158
|
stash as the root user.
|
|
@@ -207,6 +205,4 @@ gemstash-configuration(5) gemstash-configuration(5)
|
|
|
207
205
|
4mNote:24m 4mUsing24m 4m1m:stdout24m 4m22mfor24m 4mthe24m 4m1m:log_file24m 4m22mrequires24m 4mrunning24m 4mwith24m 4m1m--no-daemo-0m
|
|
208
206
|
4m1mnize22m.0m
|
|
209
207
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
October 13, 2015 gemstash-configuration(5)
|
|
208
|
+
October 13, 2015 4mgemstash-configuration24m(5)
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-customize24m(7) 4mgemstash-customize24m(7)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
7
5
|
1mCustomizing the Server0m
|
|
8
6
|
Although Gemstash is designed for as minimal setup as possible, there
|
|
9
7
|
may be times you will want to change some of the default configuration.
|
|
10
|
-
By
|
|
8
|
+
By the end of this guide, you will be able to customize some of the
|
|
11
9
|
Gemstash behavior, including where files are stored, what database Gem-
|
|
12
10
|
stash uses, and how Gemstash caches certain requests.
|
|
13
11
|
|
|
@@ -27,7 +25,7 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
27
25
|
Checking that the cache is available
|
|
28
26
|
Checking that the database is available
|
|
29
27
|
The database is not available
|
|
30
|
-
Once
|
|
28
|
+
Once you've answered the questions, some checks will be made to ensure
|
|
31
29
|
the configuration will work. For example, the database didn't exist in
|
|
32
30
|
the previous example, so the command failed and the configuration
|
|
33
31
|
wasn't saved. If the command passes, you may provide the 1m--redo 22moption
|
|
@@ -36,13 +34,13 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
36
34
|
1m$ gemstash setup --redo0m
|
|
37
35
|
Where should files go? [~/.gemstash]
|
|
38
36
|
Cache with what? [MEMORY, memcached] 1mmemcached0m
|
|
39
|
-
What
|
|
37
|
+
What is the comma separated Memcached servers? [local-
|
|
40
38
|
host:11211]
|
|
41
39
|
What database adapter? [SQLITE3, postgres, mysql, mysql2]
|
|
42
40
|
Checking that the cache is available
|
|
43
41
|
Checking that the database is available
|
|
44
42
|
You are all setup!
|
|
45
|
-
Once
|
|
43
|
+
Once all checks have passed, Gemstash will store your answers in the
|
|
46
44
|
configuration file located at 1m~/.gemstash/config.yml22m.
|
|
47
45
|
|
|
48
46
|
1mFiles0m
|
|
@@ -68,7 +66,7 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
68
66
|
(http://www.mysql.com/), or 1mmysql2 22m(http://sequel.jeremye-
|
|
69
67
|
vans.net/rdoc/files/doc/opening_databases_rdoc.html#label-mysql2) for
|
|
70
68
|
your 1m:db_adapter22m. When using any of these options, you need to specify
|
|
71
|
-
the
|
|
69
|
+
the 1m:db_url 22mto point to an existing database. Here is an example con-
|
|
72
70
|
figuration to use the 1mpostgres 22madapter:
|
|
73
71
|
|
|
74
72
|
# ~/.gemstash/config.yml
|
|
@@ -80,9 +78,9 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
80
78
|
:read_timeout: 5
|
|
81
79
|
:timeout: 30
|
|
82
80
|
|
|
83
|
-
Regardless
|
|
84
|
-
migrate
|
|
85
|
-
You
|
|
81
|
+
Regardless of the adapter you choose, the database will automatically
|
|
82
|
+
migrate to your version of Gemstash whenever the database is needed.
|
|
83
|
+
You only need to ensure the database exists and Gemstash will do the
|
|
86
84
|
rest, except for 1msqlite3 22m(for which Gemstash will also create the data-
|
|
87
85
|
base for you).
|
|
88
86
|
|
|
@@ -98,7 +96,7 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
98
96
|
This configuration uses the default 1mmemory 22mcache, and has increased the
|
|
99
97
|
1mcache_max_size 22msetting from its default of 500 items.
|
|
100
98
|
|
|
101
|
-
The
|
|
99
|
+
The memory cache can optionally be swapped out with a Memcached
|
|
102
100
|
(http://memcached.org/) server (or cluster of servers).
|
|
103
101
|
|
|
104
102
|
To use Memcached, use the 1mmemcached :cache_type 22mconfiguration.
|
|
@@ -123,24 +121,24 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
123
121
|
and the rackup file (https://github.com/rubygems/gemstash/blob/mas-
|
|
124
122
|
ter/lib/gemstash/config.ru) for inspiration.
|
|
125
123
|
|
|
126
|
-
While
|
|
127
|
-
can
|
|
124
|
+
While the server is not customizable, the way Gemstash binds the port
|
|
125
|
+
can be changed. To change the binding, update the 1m:bind 22mconfiguration
|
|
128
126
|
key:
|
|
129
127
|
|
|
130
128
|
# ~/.gemstash/config.yml
|
|
131
129
|
---
|
|
132
130
|
:bind: tcp://0.0.0.0:4242
|
|
133
131
|
|
|
134
|
-
This
|
|
135
|
-
(https://github.com/puma/puma#binding-tcp--sockets),
|
|
132
|
+
This maps directly to the Puma bind flag
|
|
133
|
+
(https://github.com/puma/puma#binding-tcp--sockets), and will support
|
|
136
134
|
anything valid for that flag.
|
|
137
135
|
|
|
138
|
-
The
|
|
136
|
+
The number of threads Puma uses is also customizable via the
|
|
139
137
|
1m:puma_threads 22mconfiguration key. The default is 1m1622m.
|
|
140
138
|
|
|
141
139
|
1mProtected Fetch0m
|
|
142
|
-
Gemstash
|
|
143
|
-
Authenticated
|
|
140
|
+
Gemstash by default allows unauthenticated access for private gems.
|
|
141
|
+
Authenticated access is available via the 1m:protected_fetch 22mconfigura-
|
|
144
142
|
tion key.
|
|
145
143
|
|
|
146
144
|
# ~/.gemstash/config.yml
|
|
@@ -150,15 +148,15 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
150
148
|
More details on protected_fetch are here.
|
|
151
149
|
|
|
152
150
|
1mFetch Timeout0m
|
|
153
|
-
The
|
|
151
|
+
The default fetch timeout is 20 seconds. Use the 1m:fetch_timeout 22mcon-
|
|
154
152
|
figuration key to change it.
|
|
155
153
|
|
|
156
154
|
---
|
|
157
155
|
:fetch_timeout: 20
|
|
158
156
|
|
|
159
157
|
1mConfig File Location0m
|
|
160
|
-
By
|
|
161
|
-
1mfig.yml22m.
|
|
158
|
+
By default, configuration for Gemstash will be at 1m~/.gemstash/con-0m
|
|
159
|
+
1mfig.yml22m. This can be changed by providing the 1m--config-file 22moption to
|
|
162
160
|
the various Gemstash commands:
|
|
163
161
|
|
|
164
162
|
$ gemstash setup --config-file ./gemstash-config.yml
|
|
@@ -167,14 +165,14 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
167
165
|
$ gemstash stop --config-file ./gemstash-config.yml
|
|
168
166
|
$ gemstash status --config-file ./gemstash-config.yml
|
|
169
167
|
|
|
170
|
-
When
|
|
171
|
-
be
|
|
172
|
-
existing
|
|
173
|
-
1m--config-file
|
|
168
|
+
When providing 1m--config-file 22mto 1mgemstash setup22m, the provided file will
|
|
169
|
+
be output to with the provided configuration. 1mThis will overwrite 22many
|
|
170
|
+
existing configuration. If the file doesn't exist when providing
|
|
171
|
+
1m--config-file 22mto 1mgemstash start22m, 1mgemstash stop22m, 1mgemstash status22m, and
|
|
174
172
|
1mgemstash authorize22m, the default configuration will be used.
|
|
175
173
|
|
|
176
174
|
1mERB parsed config0m
|
|
177
|
-
You
|
|
175
|
+
You may also create a 1m~/.gemstash/config.yml.erb 22mfile. If present,
|
|
178
176
|
this will be used instead of 1m~/.gemstash/config.yml22m. For example, with
|
|
179
177
|
this you can use environment variables in the config:
|
|
180
178
|
|
|
@@ -183,6 +181,4 @@ gemstash-customize(7) gemstash-customize(7)
|
|
|
183
181
|
:db_adapter: postgres
|
|
184
182
|
:db_url: <%= ENV["DATABASE_URL"] %>
|
|
185
183
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
October 28, 2015 gemstash-customize(7)
|
|
184
|
+
October 28, 2015 4mgemstash-customize24m(7)
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-debugging24m(7) 4mgemstash-debugging24m(7)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
7
5
|
1mDebugging Gemstash0m
|
|
8
6
|
If you are finding Gemstash isn't behaving as you would expect, you
|
|
9
7
|
might want to start by looking at the server log. You can find the log
|
|
10
|
-
at
|
|
8
|
+
at 1mserver.log 22mwithin your base directory. By default, this will be at
|
|
11
9
|
1m~/.gemstash/server.log22m.
|
|
12
10
|
|
|
13
11
|
You might find it easier to view the log directly in your terminal. If
|
|
@@ -20,12 +18,10 @@ gemstash-debugging(7) gemstash-debugging(7)
|
|
|
20
18
|
|
|
21
19
|
$ gemstash status
|
|
22
20
|
|
|
23
|
-
The
|
|
21
|
+
The server status is checked by passing through to pumactl
|
|
24
22
|
(https://github.com/puma/puma#pumactl).
|
|
25
23
|
|
|
26
|
-
If
|
|
24
|
+
If you find a bug, please don't hesitate to open a bug report
|
|
27
25
|
(https://github.com/rubygems/gemstash#contributing)!
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
October 28, 2015 gemstash-debugging(7)
|
|
27
|
+
October 28, 2015 4mgemstash-debugging24m(7)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-deploy24m(7) 4mgemstash-deploy24m(7)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -56,6 +54,4 @@ gemstash-deploy(7) gemstash-deploy(7)
|
|
|
56
54
|
It is not recommended to go backwards in Gemstash versions. Migrations
|
|
57
55
|
may have run that could leave the database in a bad state.
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
October 25, 2015 gemstash-deploy(7)
|
|
57
|
+
October 25, 2015 4mgemstash-deploy24m(7)
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-mirror24m(7) 4mgemstash-mirror24m(7)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
7
5
|
1mUsing Gemstash as a Mirror0m
|
|
8
6
|
If you don't have control over your 1mGemfile22m, or you don't want to force
|
|
9
|
-
everyone
|
|
7
|
+
everyone on your team to go through the Gemstash server, you can use
|
|
10
8
|
Bundler mirroring to bundle against your Gemstash server.
|
|
11
9
|
|
|
12
10
|
For each source in your 1mGemfile22m, add a mirror pointing to your Gemstash
|
|
@@ -30,6 +28,4 @@ gemstash-mirror(7) gemstash-mirror(7)
|
|
|
30
28
|
Bundler will then send headers to Gemstash to indicate the correct up-
|
|
31
29
|
stream.
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
October 25, 2015 gemstash-mirror(7)
|
|
31
|
+
October 25, 2015 4mgemstash-mirror24m(7)
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-multiple-sources24m(7) 4mgemstash-multiple-sources24m(7)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
7
5
|
1mMultiple Gem Sources0m
|
|
8
6
|
Gemstash will stash from any amount of gem sources. By the end of this
|
|
9
|
-
guide,
|
|
7
|
+
guide, you will be able to bundle using multiple gem sources, all
|
|
10
8
|
stashed within your Gemstash server.
|
|
11
9
|
|
|
12
10
|
1mDefault Source0m
|
|
13
|
-
When
|
|
14
|
-
Guide),
|
|
11
|
+
When you don't provide an explicit source (as with the Quickstart
|
|
12
|
+
Guide), your gems will be fetched from https://rubygems.org. This de-
|
|
15
13
|
fault source is not set in stone. To change it, you need only edit the
|
|
16
14
|
Gemstash configuration found at 1m~/.gemstash/config.yml22m:
|
|
17
15
|
|
|
@@ -47,9 +45,9 @@ gemstash-multiple-sources(7) gemstash-multiple-sources(7)
|
|
|
47
45
|
end
|
|
48
46
|
|
|
49
47
|
Notice the 1mCGI.escape 22mcall in the second source. This is important, as
|
|
50
|
-
it
|
|
51
|
-
source
|
|
52
|
-
source
|
|
48
|
+
it properly URL escapes the source URL so Gemstash knows what gem
|
|
49
|
+
source you want. The 1m/upstream 22mprefix tells Gemstash to use a gem
|
|
50
|
+
source other than the default source. You can now bundle with the ad-
|
|
53
51
|
ditional source.
|
|
54
52
|
|
|
55
53
|
1mRedirecting0m
|
|
@@ -67,6 +65,4 @@ gemstash-multiple-sources(7) gemstash-multiple-sources(7)
|
|
|
67
65
|
cached by Gemstash, and gem files will not be stashed, even if they
|
|
68
66
|
were previously cached or stashed from the same gem source.
|
|
69
67
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
October 8, 2015 gemstash-multiple-sources(7)
|
|
68
|
+
October 8, 2015 4mgemstash-multiple-sources24m(7)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-private-gems24m(7) 4mgemstash-private-gems24m(7)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -17,14 +15,14 @@ gemstash-private-gems(7) gemstash-private-gems(7)
|
|
|
17
15
|
try to use the key against your server. Instead of the key value here,
|
|
18
16
|
use whatever key is generated from running the commands.
|
|
19
17
|
|
|
20
|
-
In
|
|
21
|
-
ate
|
|
18
|
+
In order to push a gem to your Gemstash server, you need to first cre-
|
|
19
|
+
ate an API key. Utilize the 1mgemstash authorize 22mcommand to create the
|
|
22
20
|
API key:
|
|
23
21
|
|
|
24
22
|
$ gemstash authorize
|
|
25
23
|
Your new key is: e374e237fdf5fa5718d2a21bd63dc911
|
|
26
24
|
|
|
27
|
-
This
|
|
25
|
+
This new key can 1mpush22m, 1myank22m, and 1mfetch 22mgems from your Gemstash server.
|
|
28
26
|
Run 1mgemstash authorize 22mwith just the permissions you want to limit what
|
|
29
27
|
the key will be allowed to do. You can similarly update a specific key
|
|
30
28
|
by providing it via the 1m--key 22moption:
|
|
@@ -32,21 +30,21 @@ gemstash-private-gems(7) gemstash-private-gems(7)
|
|
|
32
30
|
$ gemstash authorize push yank --key e374e237fdf5fa5718d2a21bd63dc911
|
|
33
31
|
|
|
34
32
|
When no permissions are provided (like the first example), the key will
|
|
35
|
-
be authorized for all
|
|
36
|
-
|
|
33
|
+
be authorized for all permissions. Leave the key authorized with
|
|
34
|
+
everything if you want to use it to try all private gem interactions:
|
|
37
35
|
|
|
38
36
|
$ gemstash authorize --key e374e237fdf5fa5718d2a21bd63dc911
|
|
39
37
|
|
|
40
38
|
With the key generated, you'll need to tell Rubygems about your new
|
|
41
39
|
key. If you've pushed a gem to https://rubygems.org, then you will al-
|
|
42
|
-
ready
|
|
40
|
+
ready have a credentials file to add the key to. If not, run the fol-
|
|
43
41
|
lowing commands before modifying the credentials file:
|
|
44
42
|
|
|
45
43
|
$ mkdir -p ~/.gem
|
|
46
44
|
$ touch ~/.gem/credentials
|
|
47
45
|
$ chmod 0600 ~/.gem/credentials
|
|
48
46
|
|
|
49
|
-
Add
|
|
47
|
+
Add your new key to credentials such that it looks something like this
|
|
50
48
|
(but make sure not to remove any existing keys):
|
|
51
49
|
|
|
52
50
|
# ~/.gem/credentials
|
|
@@ -63,7 +61,7 @@ gemstash-private-gems(7) gemstash-private-gems(7)
|
|
|
63
61
|
|
|
64
62
|
$ bundle gem private-example
|
|
65
63
|
|
|
66
|
-
You'll
|
|
64
|
+
You'll need to add a summary and description to the new gem's gemspec
|
|
67
65
|
file in order to successfully build it. Once you've built the gem, you
|
|
68
66
|
will be ready to push the new gem.
|
|
69
67
|
|
|
@@ -83,12 +81,12 @@ gemstash-private-gems(7) gemstash-private-gems(7)
|
|
|
83
81
|
$ gem push --key test_key --host http://localhost:9292/private pkg/private-example-0.1.0.gem
|
|
84
82
|
|
|
85
83
|
The 1m/private 22mportion of the 1m--host 22moption tells Gemstash you are inter-
|
|
86
|
-
acting
|
|
84
|
+
acting with the private gems. Gemstash will not let you push, or yank
|
|
87
85
|
from anything except 1m/private22m.
|
|
88
86
|
|
|
89
87
|
1mBundling0m
|
|
90
|
-
Once
|
|
91
|
-
dle
|
|
88
|
+
Once your gem is pushed to your Gemstash server, you are ready to bun-
|
|
89
|
+
dle it. Create a 1mGemfile 22mand specify the gem. You will probably want
|
|
92
90
|
to wrap the private gem in a source block, and let the rest of Gemstash
|
|
93
91
|
handle all other gems:
|
|
94
92
|
|
|
@@ -129,7 +127,7 @@ gemstash-private-gems(7) gemstash-private-gems(7)
|
|
|
129
127
|
When protected fetching is enabled API keys with the permissions 1mall 22mor
|
|
130
128
|
1mfetch 22mcan be used to download gems and specs.
|
|
131
129
|
|
|
132
|
-
On
|
|
130
|
+
On the Bundler side, there are a few ways to configure credentials for
|
|
133
131
|
a given gem source:
|
|
134
132
|
|
|
135
133
|
Add credentials globally:
|
|
@@ -140,19 +138,17 @@ gemstash-private-gems(7) gemstash-private-gems(7)
|
|
|
140
138
|
|
|
141
139
|
source "https://api_key@my-gemstash.dev"
|
|
142
140
|
|
|
143
|
-
However,
|
|
144
|
-
trol.
|
|
141
|
+
However, it's not a good practice to commit credentials to source con-
|
|
142
|
+
trol. A recommended solution is to use Bundler's configuration keys
|
|
145
143
|
(http://bundler.io/man/bundle-config.1.html#CONFIGURATION-KEYS), e.g.:
|
|
146
144
|
|
|
147
145
|
$ export BUNDLE_MYGEMSTASH__DEV=api_key
|
|
148
146
|
|
|
149
|
-
Behind
|
|
150
|
-
host
|
|
147
|
+
Behind the scene, Bundler will pick up the ENV var according to the
|
|
148
|
+
host name (e.g. mygemstash.dev) and add to 1mURI.userinfo 22mfor making re-
|
|
151
149
|
quests.
|
|
152
150
|
|
|
153
151
|
The API key is treated as a HTTP Basic Auth username and any HTTP Basic
|
|
154
152
|
password supplied will be ignored.
|
|
155
153
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
October 8, 2015 gemstash-private-gems(7)
|
|
154
|
+
October 8, 2015 4mgemstash-private-gems24m(7)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-readme24m(7) 4mgemstash-readme24m(7)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -85,18 +83,18 @@ gemstash-readme(7) gemstash-readme(7)
|
|
|
85
83
|
$ bundle config mirror.https://rubygems.org.fallback_timeout true
|
|
86
84
|
|
|
87
85
|
You can also configure this fallback as a number of seconds in case the
|
|
88
|
-
Gemstash
|
|
86
|
+
Gemstash server is simply unresponsive. This example uses a 3 second
|
|
89
87
|
timeout:
|
|
90
88
|
|
|
91
89
|
$ bundle config mirror.https://rubygems.org.fallback_timeout 3
|
|
92
90
|
|
|
93
91
|
1mStopping the Server0m
|
|
94
|
-
Once
|
|
92
|
+
Once you've finish using your Gemstash server, you can stop it just as
|
|
95
93
|
easily as you started it:
|
|
96
94
|
|
|
97
95
|
$ gemstash stop
|
|
98
96
|
|
|
99
|
-
You'll
|
|
97
|
+
You'll also want to tell Bundler that it can go back to getting gems
|
|
100
98
|
from RubyGems.org directly, instead of going through Gemstash:
|
|
101
99
|
|
|
102
100
|
$ bundle config --delete mirror.https://rubygems.org
|
|
@@ -108,7 +106,7 @@ gemstash-readme(7) gemstash-readme(7)
|
|
|
108
106
|
database, and configuration for Gemstash. If you prefer, you can point
|
|
109
107
|
to a different directory.
|
|
110
108
|
|
|
111
|
-
Gemstash
|
|
109
|
+
Gemstash uses SQLite (https://www.sqlite.org/) to store details about
|
|
112
110
|
private gems. The database will be located in 1m~/.gemstash22m, however you
|
|
113
111
|
won't see the database appear until you start using private gems. If
|
|
114
112
|
you prefer, you can use a different database.
|
|
@@ -163,20 +161,18 @@ gemstash-readme(7) gemstash-readme(7)
|
|
|
163
161
|
1mDevelopment0m
|
|
164
162
|
After checking out the repo, run 1mbin/setup 22mto install dependencies.
|
|
165
163
|
Then, run 1mrake 22mto run RuboCop and the tests. While developing, you can
|
|
166
|
-
run
|
|
164
|
+
run 1mbin/gemstash 22mto run Gemstash. You can also run 1mbin/console 22mfor an
|
|
167
165
|
interactive prompt that will allow you to experiment.
|
|
168
166
|
|
|
169
167
|
1mContributing0m
|
|
170
|
-
Bug
|
|
168
|
+
Bug reports and pull requests are welcome on GitHub at
|
|
171
169
|
https://github.com/rubygems/gemstash. This project is intended to be a
|
|
172
170
|
safe, welcoming space for collaboration, and contributors are expected
|
|
173
171
|
to adhere to the Contributor Covenant (https://github.com/rubygems/gem-
|
|
174
172
|
stash/blob/master/CODE_OF_CONDUCT.md) code of conduct.
|
|
175
173
|
|
|
176
174
|
1mLicense0m
|
|
177
|
-
The
|
|
175
|
+
The gem is available as open source under the terms of the MIT License
|
|
178
176
|
(http://opensource.org/licenses/MIT).
|
|
179
177
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
November 30, 2015 gemstash-readme(7)
|
|
178
|
+
November 30, 2015 4mgemstash-readme24m(7)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-setup24m(1) 4mgemstash-setup24m(1)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -37,6 +35,4 @@ gemstash-setup(1) gemstash-setup(1)
|
|
|
37
35
|
use ERB in your config file, you might want to use 1m~/.gemstash/con-0m
|
|
38
36
|
1mfig.yml.erb22m.
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
October 9, 2015 gemstash-setup(1)
|
|
38
|
+
October 9, 2015 4mgemstash-setup24m(1)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-start24m(1) 4mgemstash-start24m(1)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -23,6 +21,4 @@ gemstash-start(1) gemstash-start(1)
|
|
|
23
21
|
Provide this option to instead run the server until 1mCtrl-C 22mis typed.
|
|
24
22
|
When not daemonized, the log will be output to standard out.
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
October 9, 2015 gemstash-start(1)
|
|
24
|
+
October 9, 2015 4mgemstash-start24m(1)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-status24m(1) 4mgemstash-status24m(1)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -19,6 +17,4 @@ gemstash-status(1) gemstash-status(1)
|
|
|
19
17
|
1mstash/config.yml.erb22m, then you must specify the config file via this
|
|
20
18
|
option.
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
October 28, 2015 gemstash-status(1)
|
|
20
|
+
October 28, 2015 4mgemstash-status24m(1)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-stop24m(1) 4mgemstash-stop24m(1)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -19,6 +17,4 @@ gemstash-stop(1) gemstash-stop(1)
|
|
|
19
17
|
1mstash/config.yml.erb22m, then you must specify the config file via this
|
|
20
18
|
option.
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
October 9, 2015 gemstash-stop(1)
|
|
20
|
+
October 9, 2015 4mgemstash-stop24m(1)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
4mgemstash-version24m(1) 4mgemstash-version24m(1)
|
|
4
2
|
|
|
5
3
|
<!-- Automatically generated by Pandoc -->
|
|
6
4
|
|
|
@@ -18,6 +16,4 @@ gemstash-version(1) gemstash-version(1)
|
|
|
18
16
|
gemstash --version
|
|
19
17
|
gemstash -v
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
December 14, 2015 gemstash-version(1)
|
|
19
|
+
December 14, 2015 4mgemstash-version24m(1)
|
data/lib/gemstash/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gemstash
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andre Arko
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-08-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -56,28 +56,28 @@ dependencies:
|
|
|
56
56
|
requirements:
|
|
57
57
|
- - "~>"
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: '0
|
|
59
|
+
version: '1.0'
|
|
60
60
|
type: :runtime
|
|
61
61
|
prerelease: false
|
|
62
62
|
version_requirements: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version: '0
|
|
66
|
+
version: '1.0'
|
|
67
67
|
- !ruby/object:Gem::Dependency
|
|
68
68
|
name: faraday_middleware
|
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
|
71
71
|
- - "~>"
|
|
72
72
|
- !ruby/object:Gem::Version
|
|
73
|
-
version: '0
|
|
73
|
+
version: '1.0'
|
|
74
74
|
type: :runtime
|
|
75
75
|
prerelease: false
|
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
|
77
77
|
requirements:
|
|
78
78
|
- - "~>"
|
|
79
79
|
- !ruby/object:Gem::Version
|
|
80
|
-
version: '0
|
|
80
|
+
version: '1.0'
|
|
81
81
|
- !ruby/object:Gem::Dependency
|
|
82
82
|
name: lru_redux
|
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -112,14 +112,14 @@ dependencies:
|
|
|
112
112
|
requirements:
|
|
113
113
|
- - "~>"
|
|
114
114
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: '
|
|
115
|
+
version: '6.1'
|
|
116
116
|
type: :runtime
|
|
117
117
|
prerelease: false
|
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
|
119
119
|
requirements:
|
|
120
120
|
- - "~>"
|
|
121
121
|
- !ruby/object:Gem::Version
|
|
122
|
-
version: '
|
|
122
|
+
version: '6.1'
|
|
123
123
|
- !ruby/object:Gem::Dependency
|
|
124
124
|
name: sequel
|
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -157,7 +157,7 @@ dependencies:
|
|
|
157
157
|
version: '1.4'
|
|
158
158
|
- - "<"
|
|
159
159
|
- !ruby/object:Gem::Version
|
|
160
|
-
version: '
|
|
160
|
+
version: '4.0'
|
|
161
161
|
type: :runtime
|
|
162
162
|
prerelease: false
|
|
163
163
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -167,21 +167,21 @@ dependencies:
|
|
|
167
167
|
version: '1.4'
|
|
168
168
|
- - "<"
|
|
169
169
|
- !ruby/object:Gem::Version
|
|
170
|
-
version: '
|
|
170
|
+
version: '4.0'
|
|
171
171
|
- !ruby/object:Gem::Dependency
|
|
172
172
|
name: thor
|
|
173
173
|
requirement: !ruby/object:Gem::Requirement
|
|
174
174
|
requirements:
|
|
175
175
|
- - "~>"
|
|
176
176
|
- !ruby/object:Gem::Version
|
|
177
|
-
version: '0
|
|
177
|
+
version: '1.0'
|
|
178
178
|
type: :runtime
|
|
179
179
|
prerelease: false
|
|
180
180
|
version_requirements: !ruby/object:Gem::Requirement
|
|
181
181
|
requirements:
|
|
182
182
|
- - "~>"
|
|
183
183
|
- !ruby/object:Gem::Version
|
|
184
|
-
version: '0
|
|
184
|
+
version: '1.0'
|
|
185
185
|
- !ruby/object:Gem::Dependency
|
|
186
186
|
name: sqlite3
|
|
187
187
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -301,7 +301,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
301
301
|
- !ruby/object:Gem::Version
|
|
302
302
|
version: '0'
|
|
303
303
|
requirements: []
|
|
304
|
-
rubygems_version: 3.
|
|
304
|
+
rubygems_version: 3.4.14
|
|
305
305
|
signing_key:
|
|
306
306
|
specification_version: 4
|
|
307
307
|
summary: A place to stash gems you'll need
|