2010-09-01 11 views
13

Ho iniziato a usare Rails 2 lo scorso aprile, ma mi sono fermato a giugno perché pensavo che impararlo quando Rails 3 fosse stato rilasciato sarebbe stato molto più pratico poiché molto è stato completamente refactored e ristrutturato. Lavoravo con Ubuntu 10.04 (con SQLite3 come db predefinito) ma ora sto usando Windows 7 e MySQL 5. Ho già installato l'adattatore gem per MySQL, ma per utilizzarlo ho ancora bisogno di modificare database.yml. Grazie.Come impostare MySQL come database predefinito in Rails 3?

risposta

25

In termini di configurazione del database, non è cambiato molto tra Rails 2 e 3, ad eccezione di come si carica il driver MySQL. Questo usato per essere fatto in config/environment.rb ma ora è fatto in Gemfile:

gem 'mysql' 

Il file predefinito config/database.yml è impostato con SQLite, ma si può facilmente cambiare questo oltre ad essere MySQL. Una versione generica assomiglia:

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

development: 
    <<: *defaults 
    database: project_dev 

test: 
    <<: *defaults 
    database: project_test 

E 'la linea adapter dichiarazione che imposta quale driver da utilizzare.

+0

C'è un modo per rendere mysql l'impostazione predefinita invece di sqlite? –

+0

Per i nuovi progetti? Non facilmente. Questa è una caratteristica fondamentale di Rails. In genere le persone preparano un progetto "scheletro" per le loro nuove applicazioni che è personalizzato come richiesto, con driver di database, plugin, gemme tutti impostati come ti piace, quindi clonato per nuovi progetti. In questo modo puoi avere qualsiasi valore predefinito che ti piace, non importa quanto esotico. – tadman

+0

Grazie. Quindi non posso renderlo predefinito per i nuovi progetti. – arscariosus

7

Nella risposta di tadman, utilizzare gem 'mysql2' per i binari 3 poiché rails 3 ora utilizza il nuovo adattatore mysql !!

+0

Inoltre, in database.yml 'adattatore: mysql' -> 'adattatore: mysql2' –

3

È possibile modificare i binari predefiniti in MySql quando si genera una nuova applicazione, ma è necessario modificare una linea nell'installazione delle guide. Dovrai apportare la modifica ad ogni versione e ogni volta che aggiorni la gemma delle rotaie.

Io uso Ruby-Enterprise. Quindi, ecco quello che faccio:

nel file (dove 1.8 è la versione rubino e 3.0.4 è la versione rotaie):

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

Edit: In rotaie-3.1.0-rc1 il file è:

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

Cerca per questa linea:

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

Change "sqlite3" a "mysql".

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

Così, invece di fare:

rails new application_name -d mysql 

posso solo fare (e la database.yml e Gemfiles sono configurati per la gemma mysql2):

rails new application_name 

Questo presuppone che la gemma mysql2 corretta già installata. Inoltre, l'ho fatto solo da quando è uscito Rails 3. Probabilmente è simile per le versioni precedenti. Di nuovo, ogni volta che aggiorni Rails, dovrai trovare e modificare quel file.

+1

Sto usando RVM con Ruby 1.9.2 e Rails 3, e il percorso del file per me si trova a: $ (rvm gemdir) /gems/railties-3.0.5/lib/rails/generators/rails/app/app_generator.rb. Gli istruttori funzionano perfettamente. – gunit888

0

Dal Rails 3.2 è possibile definire un file .railsrc con le opzioni della riga di comando personalizzato che sarà sempre applica ai rails new

Quindi, se si crea un file chiamato .railsrc e metterlo nella vostra directory home w/i contenuti come questo -d mysql renderà mysql il tuo database predefinito. Puoi mettere qualsiasi delle opzioni della riga di comando in là (incluso lo application templates che sono fantastiche!)

Eseguire rails new --help dalla riga di comando per visualizzare tutte le opzioni.

Problemi correlati