Capistrano: Configure environment specific array attributes

Posted . Visible to the public.

Using Capistrano, we usually have some array configurations in the config/deploy.rb file, like set :linked_files, %w[config/database.yml], so in this case we don't have to manage the database configuration individually on every server.

In a specific case, one of our projects supports sign in by SAML, but not every deploy target has this feature activated. Here comes a nice handy Capistrano feature Show archive.org snapshot , which lets us modify the default configuration for individual environments, instead of copying the whole config and modify relevant parts:

# config/deploy.rb

# SAML is activated by default and disabled for specific environments, so we expect to have the SAML config as default.
set :linked_files, %w[config/database.yml config/saml.config.xml]
# config/deploy/custom_environment.rb

# Here we can opt out of the SAML feature by removing only the unwanted config file
remove :linked_files, 'config/saml_config.xml'
# It would also be possible to add options for individual environments
append :linked_files, 'config/custom_file.txt'
Jakob Scholz
Last edit
Jakob Scholz
License
Source code in this card is licensed under the MIT License.
Posted by Jakob Scholz to makandra dev (2024-07-12 06:52)