ruby-on-rails postgresql cloud9-ide

ruby on rails - Cloud9 postgres



ruby-on-rails postgresql (7)

Estoy intentando configurar una base de datos postgres en una aplicación Rails en Cloud9.

He seguido las instrucciones aquí: https://docs.c9.io/setting_up_postgresql.html y configuré una base de datos llamada cc_database.

Mi archivo database.yml se ve así:

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

Cuando ejecuto rake db: setup obtengo el siguiente error:

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

Soy bastante nuevo en todo esto, por lo que cualquier consejo sería muy apreciado.


Cómo configurar PostgreSQL y Rails en Cloud9

Al momento de escribir, Cloud9 tiene PostgreSQL preinstalado, por lo que no necesitará instalarlo usted mismo. Sin embargo, no se ejecuta de forma predeterminada, por lo que deberá iniciarlo con este comando en el terminal:

sudo service postgresql start

Cambie la contraseña de PostgreSQL a ''contraseña'' (o elija una contraseña diferente):

sudo sudo -u postgres psql # This will open the psql client. # Type /password and press enter to begin process # of changing the password: postgres=# /password # Type your new password (e.g. "password") and press enter twice: Enter new password: Enter it again: # Password changed, quit psql with /q postgres=# /q

Edita tu config/database.yml para que sea:

default: &default adapter: postgresql encoding: unicode pool: 5 # Important configs for cloud9, change password value # to what you entered in the previous psql step. template: template0 username: ubuntu password: password development: <<: *default database: your_app_name_development test: <<: *default database: your_app_name_test production: <<: *default database: your_app_name_production username: your_app_name password: <%= ENV[''YOUR_APP_NAME_DATABASE_PASSWORD''] %>

(Tenga en cuenta que las configuraciones de template , username y password en la sección default anterior son esenciales).

Agregue la gema pg a su Gemfile :

gem ''pg''

Ejecutar bundle install .

Elimine la gema sqlite de su Gemfile (y opcionalmente elimine los db/*.sqlite3 ).

Cree la base de datos, cargue schema.rb, y siembre la base de datos usando la tarea db:setup :

bundle exec rake db:setup # Run bin/rake -AD db to see all db-related tasks

Inicie o reinicie su aplicación de rieles y verifique que esté funcionando.

Tenga en cuenta que los datos no semilla de su antigua base de datos sqlite no estarán presentes en la nueva base de datos.

Si alguna vez desea utilizar el cliente psql para interactuar con PostgreSQL directamente, en el terminal ejecute psql o ejecute bin/rails db .


El postgresql en cloud9 está configurado para autenticarse con un par cuando la conexión localhost. Así que la resolución rápida es cambiar el usuario en su database.yaml al usuario actual. En mi caso el nombre de usuario es ubuntu. Para ver su usuario actual use el comando

$ echo $USER

Así que una lista de comandos en la terminal es.

$ sudo su - postgres $ createuser ubuntu -dslP $ Enter password for new role: **same password from your yaml file** $ Enter it again:

Establece tu archivo yaml como este

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

Ahora puedes correr

rake db:create rake db:migrate


Encontré la solución. Se necesita editar el archivo pg_hba.conf para cambiar la autenticación de igual a md5 de esta manera:

local postgres postgres md5

Es difícil encontrar el archivo, ya que solo se puede acceder a él a través del terminal en cloud9. No puedes encontrarlo en el árbol de archivos.

Si escribe lo siguiente en postgres, le mostrará la ubicación

SHOW hba_file;

A continuación, puede buscar y editar in vim a través del terminal.


Haz los siguientes pasos:

  1. Cree un nuevo nombre de usuario y contraseña para postgresql en cloud9:

    $ sudo service postgresql start $ sudo sudo -u postgres psql postgres=# CREATE USER username SUPERUSER PASSWORD ''password''; postgres=# /q

  2. Crear variables ENV en cloud9:

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

    Mi database.yml para rieles 4.2.0 en 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. Incluya la gema pg en Gemfile e instale:

    gema ''pg'', ''~> 0.18.2''

    $ bundle install

  4. Actualice template1 postgresql para database.yml en 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. Desde la línea de comandos ejecutar:

    bundle exec rake db:create


Para mí, hacer los pasos en la configuración del espacio de trabajo de Cloud9 con Rails y Postgresql no fue suficiente. Estaba pasando en mi usuario, pero no la contraseña. echo $USERNAME estaba subiendo con nada.

Solución

$ sudo su - postgres $ createuser ubuntu -dslP

Entonces hice esto:

sudo sudo -u postgres psql postgres=# /password Enter new password: entered a real password Enter it again: entered it again postgres=# /q

Luego hice esto en mi archivo yaml (nota que maté la parte del host):

development: adapter: postgresql encoding: unicode database: my_database_name pool: 5 username: ubuntu password: actual_password

Entonces pude crear mi base de datos con:

rake db:create

Y mi servidor Rails se inició sin más problemas.


Una versión corta cuando tienes la aplicación Rails antes de crear cualquier base de datos:

añadir la gema ''pg'' eliminar gema sqlite3

$ bundle install $ gem install pg

Entonces,

$sudo service postgresql start $psql -c "create database myapp_development owner=ubuntu"

según https://community.c9.io/t/how-do-i-set-up-postgresql-on-c9-for-my-rails-app/2614/4

Cambiando myapp por cualquier nombre. Luego, copie y pegue a continuación, cambiando myapp por cualquier nombre.

/myapp/config/database.yml development: adapter: postgresql encoding: unicode database: myapp_development pool: 5 username: ubuntu password: timeout: 5000

Como en los comentarios anteriores, no se necesita contraseña, el nombre de usuario puede permanecer en Ubuntu.

$rake db:migrate

Si está usando heroku, no necesitará la sección de producción en database.yml


Utilice el nombre de usuario "ubuntu" con una contraseña en blanco. Mi database.yml se parece a esto:

desarrollo:
adaptador: postgresql
codificación: Unicode
base de datos: myflix_development
piscina: 5
nombre de usuario: ubuntu
contraseña:

prueba:
adaptador: postgresql
codificación: Unicode
base de datos: myflix_test
piscina: 5
nombre de usuario: ubuntu
contraseña:

Si luego se queja de que la contraseña es incorrecta, intente cambiarla utilizando las instrucciones de Cloud9:

En la línea de comandos, escriba: sudo sudo -u postgres psql

postgres = # /password
Ingrese la nueva contraseña: leave it blank and press enter
Ingresa nuevamente: leave it blank and press enter
postgres = # /q

Soy bastante nuevo en esto para Espero que funcione!