Cómo manejar el error Ruby on Rails: “Instale el adaptador postgresql:` gem install activerecord-postgresql-adapter ‘”

Al ejecutar una aplicación Ruby on Rails (RoR) o un código Ruby que usa el marco ActiveRecord, aparece el mensaje de error:

Instale el adaptador postgresql: gem install activerecord-postgresql-adapter

Intentando correr:

 gem install activerecord-postgresql-adapter 

también falla, dejándote perdido.

El problema no es lo que alguien escribió. El problema es que el nombre del adaptador de base de datos postgresql es “postgresql”, no “postgres”, aunque el nombre de GEM es “pg”.

La definición en el archivo database.yml debe incluir

  adapter: postgresql 

Aquí está la respuesta que obtuve de Heroku y funcionó para mí (después de probar diferentes gems, adaptadores y todo lo demás en las otras 10 publicaciones sobre esto)

1) agrega la línea: gem ‘pg’ a tu Gemfile.

2) Ejecute la instalación del paquete de comando para instalar la gem en su paquete.

3) Etapa de los cambios de Gemfile y Gemfile.lock: git add Gemfile Gemfile.lock

4) Confirmar los cambios: git commit -m “Instalar la gem pg”

5) Volver a desplegar a heroku: git push heroku master

Esto significa que no tiene instalada la nueva biblioteca ‘pg’ postgresql. Esto se soluciona fácilmente con un poco de:

 sudo gem install pg 

I (Dov) encontré otras soluciones en la web que describían la configuración de GEM_HOME y agregaban ~ / .gem / ruby ​​/ vers / bin a su PATH, pero no funcionaban. Esta solución anterior fue proporcionada por Mark Mansour en su blog State of Flux en: http://stateofflux.com/2008/7/13/activerecord-postgresql-adapter-in-rails-2-1/

Hay una condición más profundamente oculta que también causará este error.

Si tiene una variable de entorno local DATABASE_URL = postgres: // mehmehmeh establecido, entonces una gem (sospecho que Heroku) hace que la aplicación piense que Postgres es necesario incluso si no está en ninguna parte en sus configuraciones. Mata a esa variable env y deberías estar bien.

sudo apt-get install ruby1.8-dev

entonces…

joya instalar pg

¡Trabajó para mi!

Comprobar el entorno database.yml db es correcto. Si es postgresql, puede que necesite cambiarlo para referirse a mysql2 o lo que sea que use para su entorno dado.

Puedes intentar esto

En debian (squeeze):

 aptitude install libdbd-pg-ruby 

Hice una pequeña revisión del estado actual de los controladores de base de datos Ruby + PostgreSQL en railsonpostgresql.com ; Creo que sudo gem install pg es probablemente la que quieres.

Al probar diferentes resultados de búsqueda, instalé un montón. Lo que finalmente hizo que mi entorno dejara de quejarse con este mensaje: “Instale el adaptador postgresql: gem install activerecord-postgresql-adapter” fue:

  • Eliminé todas las gems relacionadas con el adaptador, como: sudo gem uninstall activerecord-jdbc-adapter; sudo gem uninstall activerecord-jdbcpostgresql-adapter; sudo gem uninstall activerecord-postgresql-adapter; sudo gem uninstall jdbc-postgres;

  • También eliminé referencias al adaptador como se siguió dentro de mi Gemfile: gem ‘activerecord-jdbcpostgresql-adapter’

  • Deje solo pg (0.15.1) instalado (para verificar la existencia de pg, haga “lista de gems”)

Luego, ejecutar “rake db: create” funciona. Entonces, supongo que pg es lo último y funciona. Sin embargo, no se usa cuando hay otras gems de adaptador rotas.