Capistrano::FigaroYml

Capistrano tasks for handling figaro application.yml when deploying Rails 4+ apps.

Install

Add this to Gemfile:

group :development do
  gem 'capistrano', '~> 3.3.0'
  gem 'capistrano-figaro-yml', '~> 1.0.2'
end

And then:

$ bundle install

Setup and usage

  • make sure your local config/application.yml is not git tracked. It should be on the disk, but gitignored.

  • populate production figaro settings in local config/application.yml:

    production:
      secret_key_base: "d6ced..."
    
  • add to Capfile:

    require 'capistrano/figaro_yml'
    
  • create figaro application.yml file on the remote server by executing this task:

    $ bundle exec cap production setup
    

You can now proceed with other deployment tasks.

What if a new config is added to figaro file?

  • add it to local config/application.yml:

    production:
      secret_key_base: "d6ced..."
      foobar: "some_other_secret"
    
  • if you're working in a team where other people have the deploy rights, compare you local application.yml with the one on the server. This is to ensure you didn't miss an update.

  • copy to the server:

    $ bundle exec cap production setup
    
  • notify your colleagues that have the deploy rights that the remote application.yml has been updated so they can change their copy.

How it works

When you execute $ bundle exec cap production setup:

  • figaro settings from your local application.yml are copied to the server.
  • only "stage" secrets are copied: if you are deploying to production, only production secrets are copied there
  • on the server secrets file is located in #{shared_path}/config/application.yml

On deployment:

  • secrets file is automatically symlinked to #{current_path}/config/application.yml

Configuration

None.

More Capistrano automation?

Check out capistrano-plugins github org.

License

MIT