To use PostgreSQL, add the following recipes calls to your manifest:
recipe :postgresql_server, :postgresql_gem, :postgresql_user, :postgresql_database
Public instance methods
postgresql_database
()
Create the database from the current database_environment
[show source]
# File lib/moonshine/manifest/rails/postgresql.rb, line 58 58: def postgresql_database 59: exec "postgresql_database", 60: :command => "/usr/bin/createdb -O #{database_environment[:username]} #{database_environment[:database]}", 61: :unless => "/usr/bin/psql -l | grep #{database_environment[:database]}", 62: :user => 'postgres', 63: :require => exec('postgresql_user'), 64: :before => exec('rake tasks'), 65: :notify => exec('rails_bootstrap') 66: end
postgresql_gem
()
Install the pg rubygem and dependencies
[show source]
# File lib/moonshine/manifest/rails/postgresql.rb, line 43 43: def postgresql_gem 44: gem 'pg' 45: gem 'postgres' 46: end
postgresql_server
()
Installs postgresql from apt and enables the postgresql service.
[show source]
# File lib/moonshine/manifest/rails/postgresql.rb, line 9 9: def postgresql_server 10: package 'postgresql', :ensure => :installed 11: package 'postgresql-client', :ensure => :installed 12: package 'postgresql-contrib', :ensure => :installed 13: package 'libpq-dev', :ensure => :installed 14: service 'postgresql-8.3', 15: :ensure => :running, 16: :hasstatus => true, 17: :require => [ 18: package('postgresql'), 19: package('postgres'), 20: package('pg') 21: ] 22: #ensure the postgresql key is present on the configuration hash 23: configure(:postgresql => {}) 24: file '/etc/postgresql/8.3/main/pg_hba.conf', 25: :ensure => :present, 26: :content => template(File.join(File.dirname(__FILE__), 'templates', 'pg_hba.conf.erb')), 27: :require => package('postgresql'), 28: :mode => '600', 29: :owner => 'postgres', 30: :group => 'postgres', 31: :notify => service('postgresql-8.3') 32: file '/etc/postgresql/8.3/main/postgresql.conf', 33: :ensure => :present, 34: :content => template(File.join(File.dirname(__FILE__), 'templates', 'postgresql.conf.erb')), 35: :require => package('postgresql'), 36: :mode => '600', 37: :owner => 'postgres', 38: :group => 'postgres', 39: :notify => service('postgresql-8.3') 40: end
postgresql_user
()
Grant the database user specified in the current database_environment permisson to access the database with the supplied password
[show source]
# File lib/moonshine/manifest/rails/postgresql.rb, line 50 50: def postgresql_user 51: psql "CREATE USER #{database_environment[:username]} WITH PASSWORD '#{database_environment[:password]}'", 52: :alias => "postgresql_user", 53: :unless => psql_query('\\\\du') + "| grep #{database_environment[:username]}", 54: :require => service('postgresql-8.3') 55: end