2010-09-01 5 views
13

J'ai commencé à utiliser Rails 2 en avril dernier mais je me suis arrêté en juin parce que je pensais que l'apprendre à la sortie de Rails 3 serait plus pratique car beaucoup de choses ont été complètement refactorisées et restructurées. Je travaillais avec Ubuntu 10.04 (avec SQLite3 comme db par défaut) mais maintenant j'utilise Windows 7 et MySQL 5. J'ai déjà installé l'adaptateur gem pour MySQL, mais pour l'utiliser, j'ai encore besoin de modifier database.yml. Merci.Comment définir MySQL comme base de données par défaut dans Rails 3?

Répondre

25

En termes de configuration de base de données, rien n'a vraiment changé entre Rails 2 et 3, à l'exception de la façon dont vous chargez votre pilote MySQL. Cela sert à faire dans config/environment.rb mais se fait maintenant dans Gemfile:

gem 'mysql' 

Le fichier par défaut config/database.yml est configuré avec SQLite, mais vous pouvez facilement changer ce sur être MySQL. Une version générique ressemble:

defaults: &defaults 
    adapter: mysql 
    username: localdev 
    password: mylocaldevpasswordwhateveritis 
    host: localhost 

development: 
    <<: *defaults 
    database: project_dev 

test: 
    <<: *defaults 
    database: project_test 

Il est la ligne de déclaration adapter qui définit pilote à utiliser.

+0

Existe-t-il un moyen de faire de mysql la valeur par défaut au lieu de sqlite? –

+0

Pour les nouveaux projets? Pas facilement. Ceci est une caractéristique de base de Rails. Généralement, les gens préparent un projet «squelette» pour leurs nouvelles applications personnalisées selon les besoins, avec des pilotes de base de données, des plugins, des gemmes tous configurés comme vous les aimez, puis les clonent pour de nouveaux projets. De cette façon, vous pouvez avoir tous les défauts que vous aimez, peu importe comment exotique. – tadman

+0

Merci. Donc je ne peux pas le faire par défaut pour de nouveaux projets. – arscariosus

7

Dans la réponse de tadman, utilisez gem 'mysql2' pour les rails 3 puisque les rails 3 utilisent maintenant le nouvel adaptateur mysql !!

+0

Aussi, dans database.yml 'adaptateur: mysql' -> 'adaptateur: mysql2' –

3

Vous pouvez modifier les rails par défaut à MySql lorsque vous générez une nouvelle application, mais vous devez modifier une ligne dans l'installation de vos rails. Vous devrez faire le changement à chaque version, et chaque fois que vous mettez à jour la gemme de rails.

J'utilise Ruby-Enterprise. Alors, voici ce que je fais:

Dans le fichier (où 1.8 est la version rubis et 3.0.4 est la version Rails):

/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/railties-3.0.4/lib/rails/generators/rails/app/app_generator.rb 

Edit: Rails-3.1.0-rc1 le fichier est:

gems/railties-3.1.0.rc1/lib/rails/generators/app_base.rb 

Rechercher cette ligne:

class_option :database, :type => :string, :aliases => "-d", :default => "sqlite3", 

Change "sqlite3" à "mysql".

class_option :database, :type => :string, :aliases => "-d", :default => "mysql", 

Ainsi, au lieu de faire:

rails new application_name -d mysql 

je peux faire (et le database.yml et Gemfiles sont configurés pour la gemme mysql2):

rails new application_name 

Cela suppose que vous avez le bon mysql2 gem installé déjà. De plus, je ne fais que ça depuis que Rails 3 est sorti. C'est probablement similaire pour les versions précédentes. Encore une fois, chaque fois que vous mettez à jour Rails, vous devez trouver et modifier ce fichier.

+1

J'utilise RVM avec Ruby 1.9.2 et Rails 3, et le chemin vers le fichier pour moi se trouve à: $ (rvm gemdir) /gems/railties-3.0.5/lib/rails/generators/rails/app/app_generator.rb. Les instructeurs fonctionnent parfaitement. – gunit888

0

Depuis Rails 3.2, vous pouvez définir un fichier .railsrc avec des options de ligne de commande personnalisée qui s'appliquera toujours rails new

Donc, si vous créez un fichier appelé .railsrc et mettez-le dans votre répertoire w/le contenu comme cela va faire de mysql votre base de données par défaut. Vous pouvez mettre l'une des options de ligne de commande là (y compris application templates qui sont souper génial!

Exécutez rails new --help depuis la ligne de commande pour voir toutes les options.

Questions connexes