gemstash 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/lib/gemstash/cli.rb +46 -0
  4. data/lib/gemstash/cli/setup.rb +1 -1
  5. data/lib/gemstash/env.rb +5 -0
  6. data/lib/gemstash/man/gemstash-authorize.1 +50 -0
  7. data/lib/gemstash/man/gemstash-authorize.1.txt +45 -0
  8. data/lib/gemstash/man/gemstash-configuration.5 +133 -0
  9. data/lib/gemstash/man/gemstash-configuration.5.txt +121 -0
  10. data/lib/gemstash/man/gemstash-customize.7 +224 -0
  11. data/lib/gemstash/man/gemstash-customize.7.txt +137 -0
  12. data/lib/gemstash/man/gemstash-debugging.7 +34 -0
  13. data/lib/gemstash/man/gemstash-debugging.7.txt +29 -0
  14. data/lib/gemstash/man/gemstash-deploy.7 +40 -0
  15. data/lib/gemstash/man/gemstash-deploy.7.txt +34 -0
  16. data/lib/gemstash/man/gemstash-mirror.7 +40 -0
  17. data/lib/gemstash/man/gemstash-mirror.7.txt +33 -0
  18. data/lib/gemstash/man/gemstash-multiple-sources.7 +89 -0
  19. data/lib/gemstash/man/gemstash-multiple-sources.7.txt +71 -0
  20. data/lib/gemstash/man/gemstash-private-gems.7 +195 -0
  21. data/lib/gemstash/man/gemstash-private-gems.7.txt +133 -0
  22. data/lib/gemstash/man/gemstash-readme.7 +204 -0
  23. data/lib/gemstash/man/gemstash-readme.7.txt +160 -0
  24. data/lib/gemstash/man/gemstash-setup.1 +41 -0
  25. data/lib/gemstash/man/gemstash-setup.1.txt +38 -0
  26. data/lib/gemstash/man/gemstash-start.1 +25 -0
  27. data/lib/gemstash/man/gemstash-start.1.txt +25 -0
  28. data/lib/gemstash/man/gemstash-status.1 +19 -0
  29. data/lib/gemstash/man/gemstash-status.1.txt +21 -0
  30. data/lib/gemstash/man/gemstash-stop.1 +19 -0
  31. data/lib/gemstash/man/gemstash-stop.1.txt +21 -0
  32. data/lib/gemstash/man/gemstash-version.1 +22 -0
  33. data/lib/gemstash/man/gemstash-version.1.txt +21 -0
  34. data/lib/gemstash/storage.rb +7 -4
  35. data/lib/gemstash/version.rb +1 -1
  36. metadata +79 -48
  37. data/Gemfile +0 -4
  38. data/README.md +0 -161
  39. data/Rakefile +0 -25
  40. data/bin/console +0 -14
  41. data/bin/gemstash +0 -3
  42. data/bin/setup +0 -5
  43. data/docs/config.md +0 -136
  44. data/docs/debug.md +0 -24
  45. data/docs/deploy.md +0 -30
  46. data/docs/mirror.md +0 -30
  47. data/docs/multiple_sources.md +0 -68
  48. data/docs/private_gems.md +0 -140
  49. data/docs/reference.md +0 -323
  50. data/gemstash.gemspec +0 -49
  51. data/gemstash.png +0 -0
  52. data/rake/changelog.citrus +0 -157
  53. data/rake/changelog.rb +0 -201
  54. data/rake/table_of_contents.rb +0 -36
@@ -0,0 +1,34 @@
1
+ gemstash-deploy(7) gemstash-deploy(7)
2
+
3
+
4
+
5
+ DEPLOYING GEMSTASH
6
+ Bundler is here for the rescue to keep Gemstash up to date! Create a
7
+ Gemfile pointing to Gemstash:
8
+
9
+ # ./Gemfile
10
+ source "https://rubygems.org"
11
+ gem "gemstash"
12
+
13
+ Then bundle to create your Gemfile.lock. When you are ready to up-
14
+ grade, simply bundle update. You may need to run gemstash via bun-
15
+ dle exec. Alternatively, you can gem uninstall gemstash and gem in-
16
+ stall gemstash when you want to upgrade.
17
+
18
+ Gemstash will automatically run any necessary migrations, so updating
19
+ the gem is all that needs to be done.
20
+
21
+ It is probably wise to stop Gemstash before upgrading, then starting
22
+ again once you are done:
23
+
24
+ $ bundle exec gemstash stop
25
+ $ bundle update
26
+ $ bundle exec gemstash start
27
+
28
+ DOWNGRADING
29
+ It is not recommended to go backwards in Gemstash versions. Migrations
30
+ may have run that could leave the database in a bad state.
31
+
32
+
33
+
34
+ October 25, 2015 gemstash-deploy(7)
@@ -0,0 +1,40 @@
1
+ .\" Automatically generated by Pandoc 1.16.0.2
2
+ .\"
3
+ .TH "gemstash\-mirror" "7" "October 25, 2015" "" ""
4
+ .hy
5
+ .SH USING GEMSTASH AS A MIRROR
6
+ .PP
7
+ If you don\[aq]t have control over your \f[C]Gemfile\f[], or you
8
+ don\[aq]t want to force everyone on your team to go through the Gemstash
9
+ server, you can use Bundler mirroring to bundle against your Gemstash
10
+ server.
11
+ .PP
12
+ For each source in your \f[C]Gemfile\f[], add a mirror pointing to your
13
+ Gemstash server:
14
+ .IP
15
+ .nf
16
+ \f[C]
17
+ $\ bundle\ config\ mirror.http://rubygems.org\ http://localhost:9292
18
+ $\ bundle\ config\ mirror.https://my.gem\-source.local\ http://localhost:9292/upstream/$(ruby\ \-rcgi\ \-e\ \[aq]puts\ CGI.escape("https://my.gem\-source.local")\[aq])
19
+ \f[]
20
+ .fi
21
+ .PP
22
+ From now on, bundler will fetch gems from those sources via your
23
+ Gemstash server.
24
+ .SH SIMPLER GEMSTASH MIRRORS
25
+ .PP
26
+ \f[B]This feature requires Bundler to be at least version
27
+ \f[C]1.11.0\f[].\f[]
28
+ .PP
29
+ If you are using Bundler version \f[C]1.11.0\f[] or greater, the
30
+ mirroring becomes a bit easier:
31
+ .IP
32
+ .nf
33
+ \f[C]
34
+ $\ bundle\ config\ mirror.http://rubygems.org\ http://localhost:9292
35
+ $\ bundle\ config\ mirror.https://my.gem\-source.local\ http://localhost:9292
36
+ \f[]
37
+ .fi
38
+ .PP
39
+ Bundler will then send headers to Gemstash to indicate the correct
40
+ upstream.
@@ -0,0 +1,33 @@
1
+ gemstash-mirror(7) gemstash-mirror(7)
2
+
3
+
4
+
5
+ USING GEMSTASH AS A MIRROR
6
+ If you don't have control over your Gemfile, or you don't want to force
7
+ everyone on your team to go through the Gemstash server, you can use
8
+ Bundler mirroring to bundle against your Gemstash server.
9
+
10
+ For each source in your Gemfile, add a mirror pointing to your Gemstash
11
+ server:
12
+
13
+ $ bundle config mirror.http://rubygems.org http://localhost:9292
14
+ $ bundle config mirror.https://my.gem-source.local http://localhost:9292/upstream/$(ruby -rcgi -e 'puts CGI.escape("https://my.gem-source.local")')
15
+
16
+ From now on, bundler will fetch gems from those sources via your Gem-
17
+ stash server.
18
+
19
+ SIMPLER GEMSTASH MIRRORS
20
+ This feature requires Bundler to be at least version 1.11.0.
21
+
22
+ If you are using Bundler version 1.11.0 or greater, the mirroring be-
23
+ comes a bit easier:
24
+
25
+ $ bundle config mirror.http://rubygems.org http://localhost:9292
26
+ $ bundle config mirror.https://my.gem-source.local http://localhost:9292
27
+
28
+ Bundler will then send headers to Gemstash to indicate the correct up-
29
+ stream.
30
+
31
+
32
+
33
+ October 25, 2015 gemstash-mirror(7)
@@ -0,0 +1,89 @@
1
+ .\" Automatically generated by Pandoc 1.16.0.2
2
+ .\"
3
+ .TH "gemstash\-multiple\-sources" "7" "October 8, 2015" "" ""
4
+ .hy
5
+ .SH MULTIPLE GEM SOURCES
6
+ .PP
7
+ Gemstash will stash from any amount of gem sources.
8
+ By the end of this guide, you will be able to bundle using multiple gem
9
+ sources, all stashed within your Gemstash server.
10
+ .SS DEFAULT SOURCE
11
+ .PP
12
+ When you don\[aq]t provide an explicit source (as with the Quickstart
13
+ Guide (gemstash help readme.7)), your gems will be fetched from
14
+ https://rubygems.org.
15
+ This default source is not set in stone.
16
+ To change it, you need only edit the Gemstash configuration found at
17
+ \f[C]~/.gemstash/config.yml\f[]:
18
+ .IP
19
+ .nf
20
+ \f[C]
21
+ #\ ~/.gemstash/config.yml
22
+ \-\-\-
23
+ :rubygems_url:\ https://my.gem\-source.local
24
+ \f[]
25
+ .fi
26
+ .PP
27
+ Make sure to restart your Gemstash server after changing the config:
28
+ .IP
29
+ .nf
30
+ \f[C]
31
+ $\ gemstash\ stop
32
+ $\ gemstash\ start
33
+ \f[]
34
+ .fi
35
+ .PP
36
+ Once restarted, bundling against \f[C]http://localhost:9292\f[] will
37
+ fetch gems from \f[C]https://my.gem\-source.local\f[].
38
+ If you had bundled before making these changes, fear not; bundling with
39
+ a different default gem source will store gems in a separate location,
40
+ ensuring different sources won\[aq]t leak between each other.
41
+ .SS BUNDLING WITH MULTIPLE SOURCES
42
+ .PP
43
+ Changing the default source won\[aq]t help you if you need to bundle
44
+ against https://rubygems.org along with additional sources.
45
+ If you need to bundle with multiple gem sources, Gemstash doesn\[aq]t
46
+ need to be specially configured.
47
+ Your Gemstash server will honor any gem source specified via a
48
+ specialized URL.
49
+ Consider the following \f[C]Gemfile\f[]:
50
+ .IP
51
+ .nf
52
+ \f[C]
53
+ #\ ./Gemfile
54
+ require\ "cgi"
55
+ source\ "http://localhost:9292"
56
+ gem\ "rubywarrior"
57
+
58
+ source\ "http://localhost:9292/upstream/#{CGI.escape("https://my.gem\-source.local")}"\ do
59
+ \ \ gem\ "my\-gem"
60
+ end
61
+ \f[]
62
+ .fi
63
+ .PP
64
+ Notice the \f[C]CGI.escape\f[] call in the second source.
65
+ This is important, as it properly URL escapes the source URL so Gemstash
66
+ knows what gem source you want.
67
+ The \f[C]/upstream\f[] prefix tells Gemstash to use a gem source other
68
+ than the default source.
69
+ You can now bundle with the additional source.
70
+ .SS REDIRECTING
71
+ .PP
72
+ Gemstash supports an alternate mode of specifying your gem sources.
73
+ If you want Gemstash to redirect Bundler to your given gem sources, then
74
+ you can specify your \f[C]Gemfile\f[] like so:
75
+ .IP
76
+ .nf
77
+ \f[C]
78
+ #\ ./Gemfile
79
+ require\ "cgi"
80
+ source\ "http://localhost:9292/redirect/#{CGI.escape("https://rubygems.org")}"
81
+ gem\ "rubywarrior"
82
+ \f[]
83
+ .fi
84
+ .PP
85
+ Notice the \f[C]/redirect\f[] prefix.
86
+ This prefix tells Gemstash to redirect API calls to the provided URL.
87
+ Redirected calls like this will not be cached by Gemstash, and gem files
88
+ will not be stashed, even if they were previously cached or stashed from
89
+ the same gem source.
@@ -0,0 +1,71 @@
1
+ gemstash-multiple-sources(7) gemstash-multiple-sources(7)
2
+
3
+
4
+
5
+ MULTIPLE GEM SOURCES
6
+ Gemstash will stash from any amount of gem sources. By the end of this
7
+ guide, you will be able to bundle using multiple gem sources, all
8
+ stashed within your Gemstash server.
9
+
10
+ DEFAULT SOURCE
11
+ When you don't provide an explicit source (as with the Quickstart Guide
12
+ (gemstash help readme.7)), your gems will be fetched from
13
+ https://rubygems.org. This default source is not set in stone. To
14
+ change it, you need only edit the Gemstash configuration found at
15
+ ~/.gemstash/config.yml:
16
+
17
+ # ~/.gemstash/config.yml
18
+ ---
19
+ :rubygems_url: https://my.gem-source.local
20
+
21
+ Make sure to restart your Gemstash server after changing the config:
22
+
23
+ $ gemstash stop
24
+ $ gemstash start
25
+
26
+ Once restarted, bundling against http://localhost:9292 will fetch gems
27
+ from https://my.gem-source.local. If you had bundled before making
28
+ these changes, fear not; bundling with a different default gem source
29
+ will store gems in a separate location, ensuring different sources
30
+ won't leak between each other.
31
+
32
+ BUNDLING WITH MULTIPLE SOURCES
33
+ Changing the default source won't help you if you need to bundle
34
+ against https://rubygems.org along with additional sources. If you
35
+ need to bundle with multiple gem sources, Gemstash doesn't need to be
36
+ specially configured. Your Gemstash server will honor any gem source
37
+ specified via a specialized URL. Consider the following Gemfile:
38
+
39
+ # ./Gemfile
40
+ require "cgi"
41
+ source "http://localhost:9292"
42
+ gem "rubywarrior"
43
+
44
+ source "http://localhost:9292/upstream/#{CGI.escape("https://my.gem-source.local")}" do
45
+ gem "my-gem"
46
+ end
47
+
48
+ Notice the CGI.escape call in the second source. This is important, as
49
+ it properly URL escapes the source URL so Gemstash knows what gem
50
+ source you want. The /upstream prefix tells Gemstash to use a gem
51
+ source other than the default source. You can now bundle with the ad-
52
+ ditional source.
53
+
54
+ REDIRECTING
55
+ Gemstash supports an alternate mode of specifying your gem sources. If
56
+ you want Gemstash to redirect Bundler to your given gem sources, then
57
+ you can specify your Gemfile like so:
58
+
59
+ # ./Gemfile
60
+ require "cgi"
61
+ source "http://localhost:9292/redirect/#{CGI.escape("https://rubygems.org")}"
62
+ gem "rubywarrior"
63
+
64
+ Notice the /redirect prefix. This prefix tells Gemstash to redirect
65
+ API calls to the provided URL. Redirected calls like this will not be
66
+ cached by Gemstash, and gem files will not be stashed, even if they
67
+ were previously cached or stashed from the same gem source.
68
+
69
+
70
+
71
+ October 8, 2015 gemstash-multiple-sources(7)
@@ -0,0 +1,195 @@
1
+ .\" Automatically generated by Pandoc 1.16.0.2
2
+ .\"
3
+ .TH "gemstash\-private\-gems" "7" "October 8, 2015" "" ""
4
+ .hy
5
+ .SH PRIVATE GEMS
6
+ .PP
7
+ Stashing private gems in your Gemstash server requires a bit of
8
+ additional setup.
9
+ If you haven\[aq]t read through the Quickstart
10
+ Guide (gemstash help readme.7), you should do that first.
11
+ By the end of this guide, you will be able to interact with your
12
+ Gemstash server to store and retrieve your private gems.
13
+ .SS AUTHORIZING
14
+ .PP
15
+ \f[B]IMPORTANT NOTE:\f[] Do not use the actual key value in this
16
+ document, otherwise your Gemstash server will be vulnerable to anyone
17
+ who wants to try to use the key against your server.
18
+ Instead of the key value here, use whatever key is generated from
19
+ running the commands.
20
+ .PP
21
+ In order to push a gem to your Gemstash server, you need to first create
22
+ an API key.
23
+ Utilize the \f[C]gemstash\ authorize\f[] command to create the API key:
24
+ .IP
25
+ .nf
26
+ \f[C]
27
+ $\ gemstash\ authorize
28
+ Your\ new\ key\ is:\ e374e237fdf5fa5718d2a21bd63dc911
29
+ \f[]
30
+ .fi
31
+ .PP
32
+ This new key can \f[C]push\f[], \f[C]yank\f[], and \f[C]unyank\f[] gems
33
+ from your Gemstash server.
34
+ Run \f[C]gemstash\ authorize\f[] with just the permissions you want to
35
+ limit what the key will be allowed to do.
36
+ You can similarly update a specific key by providing it via the
37
+ \f[C]\-\-key\f[] option:
38
+ .IP
39
+ .nf
40
+ \f[C]
41
+ $\ gemstash\ authorize\ push\ yank\ \-\-key\ e374e237fdf5fa5718d2a21bd63dc911
42
+ \f[]
43
+ .fi
44
+ .PP
45
+ When no permissions are provided (like the first example), the key will
46
+ be authorized for all permissions.
47
+ Leave the key authorized with everything if you want to use it to try
48
+ all private gem interactions:
49
+ .IP
50
+ .nf
51
+ \f[C]
52
+ $\ gemstash\ authorize\ \-\-key\ e374e237fdf5fa5718d2a21bd63dc911
53
+ \f[]
54
+ .fi
55
+ .PP
56
+ With the key generated, you\[aq]ll need to tell Rubygems about your new
57
+ key.
58
+ If you\[aq]ve pushed a gem to https://rubygems.org, then you will
59
+ already have a credentials file to add the key to.
60
+ If not, run the following commands before modifying the credentials
61
+ file:
62
+ .IP
63
+ .nf
64
+ \f[C]
65
+ $\ mkdir\ \-p\ ~/.gem
66
+ $\ touch\ ~/.gem/credentials
67
+ $\ chmod\ 0600\ ~/.gem/credentials
68
+ \f[]
69
+ .fi
70
+ .PP
71
+ Add your new key to credentials such that it looks something like this
72
+ (but make sure not to remove any existing keys):
73
+ .IP
74
+ .nf
75
+ \f[C]
76
+ #\ ~/.gem/credentials
77
+ \-\-\-
78
+ :test_key:\ e374e237fdf5fa5718d2a21bd63dc911
79
+ \f[]
80
+ .fi
81
+ .PP
82
+ The name \f[C]test_key\f[] can be anything you want, but you will need
83
+ to remember it and use it again later in this guide for the
84
+ \f[C]\-\-key\f[] option.
85
+ .SS CREATING A TEST GEM
86
+ .PP
87
+ You\[aq]ll need a test gem before you can play with private gems on your
88
+ Gemstash server.
89
+ If you have a gem you can use, move along to the next section.
90
+ You can start by instantiating a test gem via Bundler:
91
+ .IP
92
+ .nf
93
+ \f[C]
94
+ $\ bundle\ gem\ private\-example
95
+ \f[]
96
+ .fi
97
+ .PP
98
+ You\[aq]ll need to add a summary and description to the new gem\[aq]s
99
+ gemspec file in order to successfully build it.
100
+ Once you\[aq]ve built the gem, you will be ready to push the new gem.
101
+ .IP
102
+ .nf
103
+ \f[C]
104
+ $\ cd\ private\-example
105
+ $\ rake\ build
106
+ \f[]
107
+ .fi
108
+ .PP
109
+ You will now have a gem at
110
+ \f[C]private\-example/pkg/private\-example\-0.1.0.gem\f[].
111
+ .SS PUSHING
112
+ .PP
113
+ If your Gemstash server isn\[aq]t running, go ahead and start it:
114
+ .IP
115
+ .nf
116
+ \f[C]
117
+ $\ gemstash\ start
118
+ \f[]
119
+ .fi
120
+ .PP
121
+ Push your test gem using Rubygems:
122
+ .IP
123
+ .nf
124
+ \f[C]
125
+ $\ gem\ push\ \-\-key\ test_key\ \-\-host\ http://localhost:9292/private\ pkg/private\-example\-0.1.0.gem
126
+ \f[]
127
+ .fi
128
+ .PP
129
+ The \f[C]/private\f[] portion of the \f[C]\-\-host\f[] option tells
130
+ Gemstash you are interacting with the private gems.
131
+ Gemstash will not let you push, yank, or unyank from anything except
132
+ \f[C]/private\f[].
133
+ .SS BUNDLING
134
+ .PP
135
+ Once your gem is pushed to your Gemstash server, you are ready to bundle
136
+ it.
137
+ Create a \f[C]Gemfile\f[] and specify the gem.
138
+ You will probably want to wrap the private gem in a source block, and
139
+ let the rest of Gemstash handle all other gems:
140
+ .IP
141
+ .nf
142
+ \f[C]
143
+ #\ ./Gemfile
144
+ source\ "http://localhost:9292"
145
+ gem\ "rubywarrior"
146
+
147
+ source\ "http://localhost:9292/private"\ do
148
+ \ \ gem\ "private\-example"
149
+ end
150
+ \f[]
151
+ .fi
152
+ .PP
153
+ Notice that the Gemstash server points to \f[C]/private\f[] again when
154
+ installing your private gem.
155
+ Go ahead and bundle to install your new private gem:
156
+ .IP
157
+ .nf
158
+ \f[C]
159
+ $\ bundle
160
+ \f[]
161
+ .fi
162
+ .SS YANKING
163
+ .PP
164
+ If you push a private gem by accident, you can yank the gem with
165
+ Rubygems:
166
+ .IP
167
+ .nf
168
+ \f[C]
169
+ $\ RUBYGEMS_HOST=http://localhost:9292/private\ gem\ yank\ \-\-key\ test_key\ private\-example\ \-\-version\ 0.1.0
170
+ \f[]
171
+ .fi
172
+ .PP
173
+ Like with pushing, the \f[C]/private\f[] portion of the host option
174
+ tells Gemstash you are interacting with private gems.
175
+ Gemstash will only let you yank from \f[C]/private\f[].
176
+ Unlike pushing, Rubygems doesn\[aq]t support \f[C]\-\-host\f[] for yank
177
+ and unyank (yet), so you need to specify the host via the
178
+ \f[C]RUBYGEMS_HOST\f[] environment variable.
179
+ .SS UNYANKING
180
+ .PP
181
+ If you yank a private gem by accident, you can unyank the gem with
182
+ Rubygems:
183
+ .IP
184
+ .nf
185
+ \f[C]
186
+ $\ RUBYGEMS_HOST=http://localhost:9292/private\ gem\ yank\ \-\-key\ test_key\ private\-example\ \-\-version\ 0.1.0\ \-\-undo
187
+ \f[]
188
+ .fi
189
+ .PP
190
+ Like with pushing and yanking, the \f[C]/private\f[] portion of the host
191
+ option tells Gemstash you are interacting with private gems.
192
+ Gemstash will only let you unyank from \f[C]/private\f[].
193
+ Unlike pushing, Rubygems doesn\[aq]t support \f[C]\-\-host\f[] for
194
+ unyank and yank (yet), so you need to specify the host via the
195
+ \f[C]RUBYGEMS_HOST\f[] environment variable.