Capistrano::SharedConfig
This gem provides some capistrano tasks for config files management during deploy. With it you can:
- Create symlinks to config files in shared directory on each deploy
- Upload config files to shared directory from local machine on each deploy
- Use erb and capistrano tasks binding in your config files (it will compile before uploading to server)
- Make separate config files for each rails environment
- Automatically create shared_path/config directory on deploy:setup
Installation
Add this line to your application's Gemfile:
gem 'capistrano-shared_config'
And then execute:
$ bundle install
Usage
Configure variables in config/deploy.rb, then require capistrano/shared_config:
set :shared_config_files, %w[settings.local nginx.conf]
set :shared_config_symlinks, %w[database, settings.local newrelic.yml] # default is same as shared_config_files
require 'capistrano/shared_config'
Notice, you may skip .yml
extension when configuring configs lists
(Known extensions are: .rb
, .conf
, .pem
, .ppk
and .yml
).
Make sure, you require capistrano/shared_config after desired shared_config_files
set
You can also configure, when to run provided tasks:
# set :run_shared_config_symlinks, [:after, 'deploy:update_code']
# set :run_shared_config_sync, [:after, 'deploy:update_code']
# set :run_early_shared_config_check, [:before, 'deploy:update_code']
require 'capistrano/shared_config'
Advanced Usage
You can call particular cap task with FILE env variable specified to upload or check only one file:
$ cap shared_config:sync FILE=newrelic
Or you can inspect content generated in config file with show
task like this:
$ cap shared_config:show FILE=settings.local
It will output content of specified file surrounded by =====
lines
Config Files Lookup
For uploading to server, provided task sync
use files from config
directory.
For every file_name in shared_config_files
(after adding default .yml
if needed)
it try to find the following files in order:
config/rails_env.file_name.erb
config/rails_env.file_name
config/file_name.erb
config/file_name
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request