module Capistrano::Postgresql::HelperMethods
Public Instance Methods
archetype_database_yml_file()
click to toggle source
location of archetypal database.yml file created on primary db role when user and database are first created
# File lib/capistrano/postgresql/helper_methods.rb, line 68 def archetype_database_yml_file raise(":deploy_to in your app/config/deploy/#{fetch(:rails_env)}.rb file cannot contain ~") if shared_path.to_s.include?('~') # issues/27 deploy_path.join('db/database.yml') end
database_yml_file()
click to toggle source
location of database.yml file on clients
# File lib/capistrano/postgresql/helper_methods.rb, line 62 def database_yml_file raise(":deploy_to in your app/config/deploy/#{fetch(:rails_env)}.rb file cannot contain ~") if shared_path.to_s.include?('~') # issues/27 shared_path.join('config/database.yml') end
extension_exists?(extension)
click to toggle source
# File lib/capistrano/postgresql/helper_methods.rb, line 7 def extension_exists?(extension) psql 'test', fetch(:pg_database), '-tAc', %Q{"SELECT 1 FROM pg_extension WHERE extname='#{extension}';" | grep -q 1} end
generate_database_yml_io()
click to toggle source
# File lib/capistrano/postgresql/helper_methods.rb, line 23 def generate_database_yml_io StringIO.open do |s| s.puts "#{fetch(:pg_env)}:" { adapter: 'postgresql', encoding: fetch(:pg_encoding), database: fetch(:pg_database), pool: fetch(:pg_pool), username: fetch(:pg_username), password: fetch(:pg_password), host: fetch(:pg_host), socket: fetch(:pg_socket), port: fetch(:pg_port), timeout: fetch(:pg_timeout) }.each { |option_name,option_value| s.puts " #{option_name}: #{option_value}" } # Yml does not support tabs. There are two spaces leading the config option line s.string end end
pg_template(update=false,archetype_file=nil)
click to toggle source
# File lib/capistrano/postgresql/helper_methods.rb, line 42 def pg_template(update=false,archetype_file=nil) config_file = "#{fetch(:pg_templates_path)}/postgresql.yml.erb" if update raise('Regeneration of archetype database.yml need the original file to update from.') if archetype_file.nil? raise('Cannot update a custom postgresql.yml.erb file.') if File.exists?(config_file) # Skip custom postgresql.yml.erb if we're updating. It's not supported # Update yml file from settings generate_database_yml_io else if File.exists?(config_file) # If there is a customized file in your rails app template directory, use it and convert any ERB StringIO.new ERB.new(File.read(config_file)).result(binding) else # Else there's no customized file in your rails app template directory, proceed with the default. # Build yml file from settings ## We build the file line by line to avoid overwriting existing files generate_database_yml_io end end end
remove_extensions()
click to toggle source
# File lib/capistrano/postgresql/helper_methods.rb, line 11 def remove_extensions if Array( fetch(:pg_extensions) ).any? on roles :db do # remove in reverse order if extension is present Array( fetch(:pg_extensions) ).reverse.each do |ext| next if [nil, false, ""].include?(ext) psql 'execute', fetch(:pg_database), '-c', %Q{"DROP EXTENSION IF EXISTS #{ext};"} if extension_exists?(ext) end end end end