Vault::Tools

Tools is the English word for ツール. Tooling for the Heroku Vault team to enable faster bootstrapping for Ruby projects.

Build Status

Installation

Add this line to your application's Gemfile:

gem 'vault-tools'

Usage

Vault.setup

calling Vault.setup will:

  • call Bundler.require with the corresponding RACK_ENV
  • add ./lib to the $LOAD_PATH
  • set TZ to utc as well as Sequel's default timezone
  • overwrite Time.to_s to default to ISO8601
  • replace Ruby's default, deprecated Config with Vault::Config
  • if the CONFIG_APP environment variable is defined and this is the production environment, it will attempt to use the Heroku API to load the config vars from another app into Vault::Config

Vault::Config

Provides a better way to configure the application than simply pulling strings from ENV.

defaults

Config[:foo]
# => nil

Config.default(:foo, 'bar')
Config[:foo]
# => 'bar'
Config['FOO']
# => 'bar'

type casts

Returns nil when undefined, otherwise casts to indicated type.

Config.int(:max_connections)

Vault::Log

  Log.time(name, t)
  #  => "measure=true at=web-40"

  Log.count('foo')
  #  => "measure=true at=foo"

Vault::Web

Sinatra base class

Includes request logging and health endpoints

  class Web < Vault::Web
    helpers Vault::SinatraHelpers::HtmlSerializer
  end

Setting up a development environment

Install the dependencies:

bundle install --binstubs vendor/bin
rbenv rehash

Run the tests:

vendor/bin/t

Generate the API documentation:

vendor/bin/d

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Releasing

> bundle exec rake release