gemstash-configuration
# ~/.gemstash/config.yml
---
:base_path: "/var/gemstash"
:cache_type: memcached
:memcached_servers: localhost:11211
:db_adapter: postgres
:db_url: postgres:///gemstash
:db_connection_options:
:test: true
:pool_timeout: 2
:rubygems_url: https://my.gem-source.local
:ignore_gemfile_source: false
:puma_threads: 32
:bind: tcp://0.0.0.0:4242
:protected_fetch: true
:fetch_timeout: 10
:open_timeout: 2
:log_file: gemstash.log
:base_path
Specifies where to store local files like the server log, cached gem
files, and the database (when using SQLite). If the default is being
used, the directory will be created if it does not exist. Any other
directory needs to be created ahead of time and be writable to the
Gemstash server process. Specifying the :base_path
via
gemstash setup
will create the directory for
you.
~/.gemstash
Any valid path
:cache_type
Specifies how to cache values other than gem files (such as gem
dependencies). memory
will use an in memory cache while memcached
will point to 1 or more Memcached servers. Use the :memcached_servers
configuration key for specifying where the Memcached server(s) are.
memory
memory
, memcached
:memcached_servers
Specifies the Memcached servers to connect to when using memcached
for
the :cache_type
. Only used when memcached
is used for :cache_type
.
localhost:11211
A comma delimited list of Memcached servers
:db_adapter
Specifies what database adapter to use. When sqlite3
is used, the
database will be located at gemstash.db
within the directory specified
by :base_path
. The database will automatically be created when using
sqlite3
. When postgres
, mysql
, or mysql2
is used, the database
to connect to must be specified in the :db_url
configuration key. The
database must already be created when using anything other than
sqlite3
.
sqlite3
sqlite3
, postgres
, mysql
, mysql2
:db_url
Specifies the database to connect to when using postgres
, mysql
, or
mysql2
for the :db_adapter
. Only used when the :db_adapter
is not
sqlite3
.
None
A valid database URL for the Sequel gem
:db_connection_options
Specifies additional Sequel.connect
options to use. Note that any
options here are merged in with the default options, so you need not
specify the max_connections
if you customize this option.
{ max_connections: 1 }
for sqlite3
adapter,
{ max_connections: config[:puma_threads] + 1 }
for any other adapter.
A valid connection options Hash for the Sequel.connect method.
:rubygems_url
Specifies the default gem source URL. When any API endpoint is called
without a /private
or /upstream/<url>
prefix, this URL will be used
to fetch the result. This value can be safely changed even if there are
already gems stashed for the previous value.
https://rubygems.org
A valid gem source URL
:ignore_gemfile_source
Ignore the source specified in Gemfile and always use :rubygems_url
as
gems upstream.
false
Boolean: true
or false
:puma_threads
Specifies the number of threads used for the Gemstash server.
16
Integer value with a minimum of 1
:bind
Specifies the binding used to start the Gemstash server. Keep in mind the user starting Gemstash needs to have access to bind in this manner. For example, if you use a port below 1024, you will need to run Gemstash as the root user.
tcp://0.0.0.0:9292
Any valid binding that is supported by Puma
:protected_fetch
Tells Gemstash to authenticate via an API key before allowing the fetching of private gems and specs. The default behavior is to allow unauthenticated download of private gems and specs.
false
Boolean values true
or false
:fetch_timeout
This is the number of seconds to allow for fetching a gem from upstream.
It covers establishing the connection and receiving the response.
Fetching gems over a slow connection may cause timeout errors. If you
experience timeout errors, you may want to increase this value. The
default is 20
seconds.
20
Integer value with a minimum of 1
:open_timeout
The timeout setting for opening the connection to an upstream gem
server. On high-latency networks, even establishing the connection to an
upstream gem server can take a while. If you experience connection
failures instead of timeout errors, you may want to increase this value.
The default is 2
seconds.
2
Integer value with a minimum of 1
:log_file
Indicates the name of the file to use for logging. The file will be placed in the base path.
server.log
Any valid file name, or :stdout
to log to $stdout