web-dev-qa-db-fra.com

Création d'une application Rails 3.1 avec une base de données Postgresql (OSX Lion)

Je n'arrive pas à trouver un guide à jour pour créer une nouvelle application Rails 3.1 avec une base de données Postgresql. J'apprécierais grandement un guide à travers ce processus.

28
neon

Depuis Rails 3, le framework est totalement indépendant de la base de données.

Cela signifie que tout ce que vous avez à faire est de 2 choses:

  1. Inclure la gemme pg dans votre Gemfile: gem 'pg'
  2. Assurez-vous que votre fichier database.yml utilise postgresql comme adaptateur.

Vous pouvez le faire automatiquement lorsque vous créez une nouvelle application en ajoutant l'indicateur --database=postgresql:

Rails new myapp --database=postgresql

Mais si vous avez déjà créé l'application, commentez simplement gem 'sqlite3' dans votre Gemfile, ajoutez-y gem 'pg', exécutez bundle, puis modifiez votre fichier database.yml pour qu'il utilise l'adaptateur approprié.

Bien sûr, il va sans dire que vous devrez également installer PostgreSQL, mais c’est quelque chose que vous pouvez facilement trouver sur Google.

69
bricker

Pour élaborer sur la réponse de bricker ... Après avoir exécuté:

$ Rails new myapp --database=postgresql

Voici à quoi ressemblera votre database.yml:

development:
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: myapp
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: myapp_test
  pool: 5
  username: myapp
  password:

production:
  adapter: postgresql
  encoding: unicode
  database: myapp_production
  pool: 5
  username: myapp
  password:

Fonctionnement:

$ bundle exec rake db:create:all

créera les bases de données pour vous si vous avez installé PostgreSQL. Le moyen le plus simple d'installer PostgreSQL est http://postgresapp.com/

23
Lance Fisher

A partir de Rails 4, la réponse de bricker ne fonctionne pas, du moins pas pour moi.

Cette commande fait l'affaire à la place:

 Rails new new_app --d = postgres
0
Starkers

J'ai constaté que vous devez soit ajouter le nom d'utilisateur, dans l'exemple ci-dessus - myapp, à la base de données PostgreSQL, ou changer le nom d'utilisateur pour un utilisateur existant. 

0
Keith