ruby on rails - Enabling hstore when deploying with rubber -


i'm deploying rails app uses postgresql , hstore.

to deploy it, i'm ussing rubber.

everything works, except hstore not being enabled. when migration contains execute("create extension hstore") runs, following errors:

** [out :: production.---]  ** [out :: production.---] -- execute("create extension hstore") ** [out :: production.---]  ** [out :: production.---] rake aborted! ** [out :: production.---] error has occurred, , later migrations canceled: ** [out :: production.---]  ** [out :: production.---] pg::error: error:  permission denied create extension "hstore" ** [out :: production.---] hint:  must superuser create extension. 

the script creates postgres instance has code:

create_user_cmd = "create user #{env.db_user} nosuperuser createdb nocreaterole" 

so think problem might related nosuperuser attribute being set here.

is there way enable hstore using rubber while keeping of generated files unchanged?

the problem rubber creates db user nosuperuser. workaround create tasks run before , after capistrano's deploy:migrate change user superuser , back.

here's code:

namespace :rubber    namespace :project      before "deploy:migrate", "rubber:project:add_pg_superuser_and_enable_hstore"     after "deploy:migrate", "rubber:project:remove_pg_superuser"      task :add_pg_superuser_and_enable_hstore,          :roles => [:postgresql_master, :postgresql_slave]       alter_user_cmd = "alter user #{rubber_env.db_user} superuser"       create_hstore_cmd = "create extension if not exists hstore;"       rubber.sudo_script "add_superuser_create_hstore", <<-endscript         sudo -i -u postgres psql -c "#{alter_user_cmd}"         sudo -i -u postgres psql -c "#{create_hstore_cmd}"       endscript     end      task :remove_pg_superuser, :roles => [:postgresql_master,                                           :postgresql_slave]       alter_user_cmd = "alter user #{rubber_env.db_user} nosuperuser"       rubber.sudo_script "add_superuser_create_hstore", <<-endscript         sudo -i -u postgres psql -c "#{alter_user_cmd}"       endscript     end    end  end 

Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -