Comment gérer l’erreur Ruby on Rails: «Veuillez installer l’adaptateur postgresql:` gem install activerecord-postgresql-adapter ‘»

En exécutant une application Ruby on Rails (RoR) ou un code Ruby utilisant le framework ActiveRecord, vous obtenez le message d’erreur suivant:

Veuillez installer l’adaptateur postgresql: gem install activerecord-postgresql-adapter

Essayer de courir:

 gem install activerecord-postgresql-adapter 

échoue également, vous laissant à perte.

Le problème n’est pas ce que quelqu’un a écrit. Le problème est que le nom de l’adaptateur de firebase database postgresql est “postgresql”, pas “postgres”, bien que le nom du GEM soit “pg”.

La définition dans le fichier database.yml doit inclure

  adapter: postgresql 

Voici la réponse que j’ai reçue de Heroku et qui a fonctionné pour moi (après avoir essayé différentes gemmes, adaptateurs et tout le rest des 10 autres articles à ce sujet)

1) Ajoutez la ligne: gem ‘pg’ à votre Gemfile.

2) Lancez l’installation du bundle de commandes pour installer la gem dans votre bundle.

3) Stade les modifications de Gemfile et Gemfile.lock: git add Gemfile Gemfile.lock

4) Valider les modifications: git commit -m “Installer le gem pg”

5) Redéployer vers heroku: git push heroku master

Cela signifie que la nouvelle bibliothèque postgresql ‘pg’ n’est pas installée. Ceci est facilement corrigé avec un peu de:

 sudo gem install pg 

J’ai (Dov) trouvé d’autres solutions sur le Web qui décrivaient la configuration de GEM_HOME et l’ajout de ~ / .gem / ruby ​​/ vers / bin à votre PATH, mais elles ne fonctionnaient pas. Cette solution ci-dessus a été fournie par Mark Mansour sur son blog State of Flux à l’ adresse suivante : http://stateofstream.com/2008/7/13/activerecord-postgresql-adapter-in-rails-2-1/

Il y a une autre condition profondément cachée qui causera également cette erreur.

Si vous avez une variable d’environnement local DATABASE_URL = postgres: // mehmehmeh , alors une gemme (je soupçonne Heroku) fait que l’application pense que Postgres est nécessaire même s’il n’est nulle part dans vos configs. Tuez cette variable env et ça devrait aller.

sudo apt-get install ruby1.8-dev

puis…

gem install pg

Travaillé pour moi!

Vérifiez que l’environnement database.yml est correct. S’il s’agit de postgresql, vous devrez peut-être le modifier pour faire référence à mysql2 ou à tout ce que vous utilisez pour votre environnement.

Vous pouvez essayer ceci

Sur debian (squeeze):

 aptitude install libdbd-pg-ruby 

J’ai fait un petit tour d’horizon de l’état actuel des pilotes de bases de données Ruby + PostgreSQL sur railsonpostgresql.com ; Je pense que sudo gem install pg est probablement celui que vous voulez.

En essayant différents résultats de recherche, j’ai installé un groupe. Ce qui a finalement empêché mon environnement de se plaindre avec ce message: “Veuillez installer l’adaptateur postgresql: gem install activerecord-postgresql-adapter” était:

  • J’ai supprimé tous les gems relatifs à l’adaptateur, tels que: sudo gem uninstall activerecord-jdbc-adapter; sudo gem uninstall activerecord-jdbcpostgresql-adapter; sudo gem uninstall activerecord-postgresql-adapter; sudo gem désinstaller jdbc-postgres;

  • J’ai également supprimé les références à l’adaptateur dans mon Gemfile: gem ‘activerecord-jdbcpostgresql-adapter’

  • Ne laissez que pg (0.15.1) installé (pour vérifier l’existence de pg, faire “gem list”)

Puis fonctionne “rake db: create” fonctionne. Donc, je suppose que pg est le dernier et fonctionne. Cependant, il n’est pas utilisé lorsque d’autres gems d’adaptateur endommagés sont présents.