Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
505 views
in Technique[技术] by (71.8m points)

ruby on rails - Cloud9 postgres

I am trying to set up a postgres database in a Rails app in Cloud9.

I have followed the instructions here: https://docs.c9.io/setting_up_postgresql.html and set up a database called cc_database.

My database.yml file looks like this:

development:
  adapter: postgresql
  encoding: SQL_ASCII
  database: cc_database
  pool: 5
  username: postgres
  password: password

When I run rake db:setup I get the following error:

 PG::ConnectionBad: FATAL:  Peer authentication failed for user "postgres"

I am quite new to all this, so any advice would be much appreciated.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Do the following steps:

  1. Create a new username and password for postgresql on cloud9:

    $ sudo service postgresql start
    $ sudo sudo -u postgres psql
    postgres=# CREATE USER username SUPERUSER PASSWORD 'password';
    postgres=# q
    
  2. Create ENV variables on cloud9:

    $ echo "export USERNAME=username" >> ~/.profile
    $ echo "export PASSWORD=password" >> ~/.profile
    $ source ~/.profile
    

    My database.yml for rails 4.2.0 on cloud9:

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: 5
      username: <%= ENV['USERNAME'] %>
      password: <%= ENV['PASSWORD'] %>
      host:     <%= ENV['IP'] %>
    
    development:
      <<: *default
      database: sample_app_development
    
    test:
      <<: *default
      database: sample_app_test
    
    production:
      <<: *default
      database: sample_app_production
    
  3. Include the gem pg in Gemfile and install:

    gem 'pg', '~> 0.18.2'

    $ bundle install
    
  4. Update template1 postgresql for database.yml on cloud9:

    postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
    postgres=# DROP DATABASE template1;
    postgres=# CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
    postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
    postgres=# c template1
    postgres=# VACUUM FREEZE;
    postgres=# q
    
  5. From command line run:

    bundle exec rake db:create
    

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...