Setup postgresql for Capistrano rails app deployment
- stars
- 54
- watchers
- 2
- forks
- 19
- open issues
- 3
- Last updated
- 05/23/2023
Setup postgresql for Capistrano rails app deployment
Note: this plugin works only with Capistrano 3. Please check the capistrano
gem version you're using before installing this gem:
$ bundle show | grep capistrano
The plugin for Capistrano 2 is here.
Capistrano PostgreSQL plugin abstracts and speeds up common administration tasks for PostgreSQL when deploying rails apps.
Here are the specific things this plugin does for your capistrano deployment process:
database.yml file on all release nodes (using ssh)db and app nodes ( versions > 4.0 )Note: gem version 4 introduces some breaking changes. If you installed gem version 3 or below you might want to follow the upgrade instructions.
Put the following in your application's Gemfile:
group :development do
gem 'capistrano', '~> 3.11'
gem 'capistrano-postgresql', '~> 6.2'
end
Then:
$ bundle install
In a standard RAILS app, you need to put the following in Capfile file:
require 'capistrano/postgresql'
You need to include ONLY ONE of the following in your config/deploy/*.rb files:
set :pg_password, ENV['DATABASE_USER_PASSWORD'] # Example is an ENV value, but you can use a string instead
set :pg_ask_for_password, true # Prompts user for password on execution of setup
set :pg_generate_random_password, true # Generates a random password on each setup
cap ENV setup will run ALTER USER on pg_username if there is a different password. If you're using :pg_generate_random_password, you'll get a new random password on each run.Example config:
server 'yoursite.net', user: 'ssh_username_here', roles: %w{app db}
set :stage, :development
set :branch, 'development'
# ==================
# Postgresql setup
set :pg_without_sudo, false
set :pg_host, 'db.yoursite.net'
set :pg_database, 'pg_database_name_here'
set :pg_username, 'pg_username_here'
#set :pg_generate_random_password, true
#set :pg_ask_for_password, true
set :pg_password, ENV['yoursite_PGPASS']
set :pg_extensions, ['citext','hstore']
set :pg_encoding, 'UTF-8'
set :pg_pool, '100'
Finally, to setup the server(s), run:
$ bundle exec cap development setup
config/database.yml from your application's version control.local all all trust. We ssh into the servers to execute psql commands.deploy_to path exists and has the right privileges on your servers. The ~ symbol (i.e. ~/myapp) is not supported.roles: %w{web app db}):primary => true on the end of your primary :db server.Read it only if you want to learn more about the plugin internals.
A full list of configuration options.
The list can be overwhelming so consult it only if you're looking for something specific.
Wiki page about the database.yml format.
Check out capistrano-plugins github org.
Contributions and improvements are very welcome.
If something is not working for you, or you find a bug, please report it.
Here are other plugins and people this project was based upon: