gemstash 2.0.0 → 2.1.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.
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