2010-09-06 4 views
14

Meine App funktioniert ziemlich perfekt in der Produktion - die Website zumindest Teil. Das Problem taucht nur auf, wenn ich in mein VPS SSH und tun „Schienen c RAILS_ENV = Produktion“. Die Konsole funktioniert im Entwicklungsmodus einwandfrei.Kann Rails nicht öffnen Konsole: Produktionsdatenbank nicht konfiguriert, richten Sie Verbindungserweiterungen ActiveRecord :: AdapterNotSpecified

Ich hatte dieses Problem vor (oder mindestens eine, die so aussieht) und reparierte es durch Hinzufügen von "reconnect: true" zu database.yml - aber es hat dieses Mal nicht behoben. Hier ist der Beginn der Fehlerausgabe:

/home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:62:in `establish_connection': RAILS_ENV=production database is not configured (ActiveRecord::AdapterNotSpecified) 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/railtie.rb:59:in `block (2 levels) in <class:Railtie>' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.0/lib/active_support/lazy_load_hooks.rb:26:in `on_load' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.0/lib/active_record/railtie.rb:57:in `block in <class:Railtie>' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:25:in `instance_exec' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:25:in `run' 
from /home/tour/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.0/lib/rails/initializable.rb:50:in `block in run_initializers' 

Und für meine Produktionsdatenbankeinstellungen:

production: 
    adapter: mysql 
    encoding: utf8 
    database: tour_production 
    pool: 5 
    username: [user] 
    password: [password] 
    socket: /var/run/mysqld/mysqld.sock 
    reconnect: true 

Ich kann meine Meinung nicht herumkommen, warum es funktioniert durch Passagier, aber kein Glück mit der Konsole. Wie auch immer, ich bin mit Rails 3 Ruby 1.9.2, Passagier- und Nginx.

Ich habe ein paar kleine Sachen über Runner gemacht, was nervig ist. Ich möchte das behoben haben. Also vielen Dank ein Bündel für jede Hilfe.

Antwort

48

Wenn Sie die Konsole verwenden, geben Sie die Umgebung als erstes Argument und nicht als Umgebungsvariable an. Also:

ruby script/console production 

wird die Produktionsumgebung laden.

Ihre Fehlermeldung ist, weil es für die Umgebung RAILS_ENV=production statt nur production suchen.

+1

Ah, das würde es tun. Es scheint wie jeder Befehl deklariert die Schienen-Umgebung eine andere Art und Weise hat. Vielen Dank für die schnelle Antwort. – Nathan

17

@Shadwell richtig ist, aber wenn Sie nach einer einheitlichen Syntax sind Sie RAILS_ENV am Anfang wie folgt einstellen:

RAILS_ENV=production rails console 
42

Die neuesten Rails 3 Weg, dies zu tun, ist einfach:

bundle exec rails console production 
+6

Eigentlich ist es eher wie: bundle exec rails konsolen produktion – Dogweather

+0

bündel exec schienen konsole produktion arbeitet – Hendrik

+0

Ihre Methode ist besser. Meine Antwort wurde aktualisiert. –

-1

ich mit dem Lauf gelöst:

RAILS_ENV=production bundle exec rails c 

weitere Einzelheiten über link oder stackoverflow

Verwandte Themen