Module Moonshine::Manifest::Rails::Postgresql

  1. lib/moonshine/manifest/rails/postgresql.rb (view online)

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