gemstash 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/exe/gemstash +3 -0
  3. data/lib/gemstash.rb +2 -0
  4. data/lib/gemstash/api_key_authorization.rb +3 -0
  5. data/lib/gemstash/authorization.rb +7 -3
  6. data/lib/gemstash/cache.rb +5 -2
  7. data/lib/gemstash/cli.rb +2 -0
  8. data/lib/gemstash/cli/authorize.rb +3 -3
  9. data/lib/gemstash/cli/base.rb +4 -1
  10. data/lib/gemstash/cli/setup.rb +8 -1
  11. data/lib/gemstash/cli/start.rb +4 -1
  12. data/lib/gemstash/cli/status.rb +2 -0
  13. data/lib/gemstash/cli/stop.rb +2 -0
  14. data/lib/gemstash/config.ru +3 -3
  15. data/lib/gemstash/configuration.rb +7 -1
  16. data/lib/gemstash/db.rb +3 -0
  17. data/lib/gemstash/db/authorization.rb +2 -0
  18. data/lib/gemstash/db/cached_rubygem.rb +3 -0
  19. data/lib/gemstash/db/dependency.rb +2 -0
  20. data/lib/gemstash/db/rubygem.rb +3 -0
  21. data/lib/gemstash/db/upstream.rb +3 -0
  22. data/lib/gemstash/db/version.rb +3 -0
  23. data/lib/gemstash/dependencies.rb +4 -0
  24. data/lib/gemstash/env.rb +22 -4
  25. data/lib/gemstash/gem_fetcher.rb +2 -0
  26. data/lib/gemstash/gem_pusher.rb +5 -3
  27. data/lib/gemstash/gem_source.rb +2 -0
  28. data/lib/gemstash/gem_source/dependency_caching.rb +4 -4
  29. data/lib/gemstash/gem_source/private_source.rb +3 -0
  30. data/lib/gemstash/gem_source/rack_middleware.rb +3 -0
  31. data/lib/gemstash/gem_source/upstream_source.rb +9 -3
  32. data/lib/gemstash/gem_yanker.rb +4 -0
  33. data/lib/gemstash/health.rb +2 -0
  34. data/lib/gemstash/http_client.rb +4 -1
  35. data/lib/gemstash/logging.rb +2 -0
  36. data/lib/gemstash/man/gemstash-authorize.1 +51 -0
  37. data/lib/gemstash/man/gemstash-authorize.1.txt +33 -53
  38. data/lib/gemstash/man/gemstash-configuration.5 +229 -0
  39. data/lib/gemstash/man/gemstash-configuration.5.txt +150 -6
  40. data/lib/gemstash/man/gemstash-customize.7 +301 -0
  41. data/lib/gemstash/man/gemstash-customize.7.txt +183 -62
  42. data/lib/gemstash/man/gemstash-debugging.7 +34 -0
  43. data/lib/gemstash/man/gemstash-debugging.7.txt +17 -54
  44. data/lib/gemstash/man/gemstash-deploy.7 +72 -0
  45. data/lib/gemstash/man/gemstash-deploy.7.txt +44 -51
  46. data/lib/gemstash/man/gemstash-mirror.7 +40 -0
  47. data/lib/gemstash/man/gemstash-mirror.7.txt +20 -53
  48. data/lib/gemstash/man/gemstash-multiple-sources.7 +89 -0
  49. data/lib/gemstash/man/gemstash-multiple-sources.7.txt +53 -48
  50. data/lib/gemstash/man/gemstash-private-gems.7 +227 -0
  51. data/lib/gemstash/man/gemstash-private-gems.7.txt +108 -18
  52. data/lib/gemstash/man/gemstash-readme.7 +233 -0
  53. data/lib/gemstash/man/gemstash-readme.7.txt +126 -10
  54. data/lib/gemstash/man/gemstash-setup.1 +43 -0
  55. data/lib/gemstash/man/gemstash-setup.1.txt +28 -54
  56. data/lib/gemstash/man/gemstash-start.1 +26 -0
  57. data/lib/gemstash/man/gemstash-start.1.txt +16 -56
  58. data/lib/gemstash/man/gemstash-status.1 +20 -0
  59. data/lib/gemstash/man/gemstash-status.1.txt +13 -57
  60. data/lib/gemstash/man/gemstash-stop.1 +20 -0
  61. data/lib/gemstash/man/gemstash-stop.1.txt +13 -57
  62. data/lib/gemstash/man/gemstash-version.1 +22 -0
  63. data/lib/gemstash/man/gemstash-version.1.txt +12 -57
  64. data/lib/gemstash/migrations/01_gem_dependencies.rb +2 -0
  65. data/lib/gemstash/migrations/02_authorizations.rb +2 -0
  66. data/lib/gemstash/migrations/03_cached_gems.rb +2 -0
  67. data/lib/gemstash/migrations/04_health_tests.rb +2 -0
  68. data/lib/gemstash/puma.rb +2 -0
  69. data/lib/gemstash/rack_env_rewriter.rb +11 -2
  70. data/lib/gemstash/specs_builder.rb +5 -1
  71. data/lib/gemstash/storage.rb +12 -3
  72. data/lib/gemstash/upstream.rb +2 -0
  73. data/lib/gemstash/version.rb +3 -1
  74. data/lib/gemstash/web.rb +2 -0
  75. 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