2012-02-04 3 views
0

Je vais essayer d'être bref:
En utilisant Rails 3.2.1 et mysql2 des bases de données; en cours d'exécution sur Ubuntu 11.10
En développement tout environnement fonctionne très bien
Quand je commence mon serveur (WEBrick) dans production, il démarre bien, mais après le chargement de chaque page, il soulève l'erreur suivante:
Rails et MySQL - ActiveRecord :: ConnectionNotEstablished dans un environnement de production

ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished): 
activerecord (3.2.1) 
lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in 
retrieve_connection' 
activerecord (3.2.1) 
lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in 
`retrieve_connection' 
activerecord (3.2.1) 
lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in 
`connection' 
... 
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:138:in 
`service' 
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
/home/metjush/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/server.rb:191:in `block 
in start_thread' 

Après avoir essayé de trouver une source d'erreur possible, et la consultation comme un milliard de différents sites Web et des rapports similaires, je ne suis toujours pas en mesure de trouver ce qui ne va pas. Mon database.yml (en cours d'exécution sur localhost en ce moment, et avoir mes paramètres dans l'environnement de production le même que pour le développement, qui fonctionne) est bien, mon Gemfile est bien (gem 'mysql2' inclus, ne vous inquiétez pas) , la base de données de production est créée et rake db: migrate n'a eu aucun problème à la migrer ... Toute autre source d'erreur possible que je n'ai pas trouvée ou trouvée sur internet?

J'insiste, cela ne se produit que dans la production

Merci pour votre aide


EDIT Affichage mon Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.1' 

gem 'mysql2' 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

gem 'bcrypt-ruby', :require => 'bcrypt' 
gem 'rufus-scheduler' 
gem 'gmaps4rails' 

Hope this helps - même si Je ne vois vraiment rien de mal avec ça .

EDIT DEUX
Bizarrement, je n'ai pas de problème quand je commence à la console rails dans l'environnement de production - requêtes MySQL fonctionnent, les instances de modèle peuvent être enregistrés sans problème. Je reçois seulement l'erreur susmentionnée quand j'essaye d'accéder à la base de données à partir du navigateur.

+0

Si vous copiez '\ config \ environment \ development.rb' dans' \ config \ environment \ production.rb', cela fonctionne-t-il? – Baldrick

+0

avez-vous l'installation de 'username' et' password' correctement sur votre localhost ?? Cela n'arrive que lorsque les rails ne peuvent pas se connecter au serveur db ou à la base de données. – Surya

+0

Copier 'development.rb' dans' production.rb' n'a rien changé, toujours la même erreur. – metjush

Répondre

1

J'ai eu le même problème. Spree dernière version n'est toujours pas compatible avec les rails 3.2.0/3.2.1 donc utiliser les rails 3.1.3 et la dernière version

Dans mon cas, la version des rails était de 3.2.0 et la version spree par défaut était de 0.40. 0 J'ai changé la version de spree à 1.0.0.rc3 et cela m'a montré la question de compatibilité de rails, ainsi j'ai changé la version de rails en 3.1.3 et tout s'est bien passé.

Vous pouvez utiliser la dernière version de spree stable je suppose que c'est 0.70.3.

+0

Merci. mais je n'utilise pas la frénésie, donc ce ne peut pas être le problème. – metjush

+0

je suis désolé, je suppose que je l'ai posté sur le mauvais fil, a été destiné à être publié dans le numéro –

+0

heureux que c'était ici. J'ai vraiment le même problème. Mais maintenant nous sommes à la hauteur de Spree 1.0.3. et j'ai essayé Rails 3.1.3 et 3.1.4 en vain. – Trip

1

J'ai rencontré un problème similaire dans une gemme de moteur Rails, et finalement suivi jusqu'à une déclaration de portée (par exemple: scope: owing, where ...) sur l'une des classes. Commenter cela résolu le ActiveRecord::ConnectionNotEstablished mais a abouti à une spécification défaillante (évidemment).

Le moteur utilise la gemme Combustion pour inclure une application rails minimisée pour les spécifications, et le problème est survenu quel que soit le type de db. J'espère que cela contribue de quelque façon.

Édition: Here's a rails issue for it.

+0

Je n'utilise pas la gemme Combustion non plus, donc je ne pense pas que cela devrait poser problème ... – metjush

+0

Placer le corps de chaque déclaration de portée dans un bloc lambda m'a permis de contourner ce problème pour le moment. Cela semble toujours un problème dans Rails 3.2.8. –

1

vous devez d'abord créer une base de données mysql. puis allez dans votre répertoire d'application et éditez le fichier database.yml (~/config/database.yml) avec vos informations de base de données.

comme:

development: 
adapter: msql2 
database: your database path 
username: mysql username 
password: mysql password 
pool: 5 
timeout: 5000 
1

Vous avez probablement déjà passé avec cela, mais au cas où quelqu'un d'autre obtient à cette page, voici quelques choses à essayer.

Etes-vous sûr qu'il n'y a pas de fautes de frappe lorsque vous essayez de lancer le serveur en mode production?

bundle exec rails s --environment=production 

S'il y a une faute de frappe dans des rails « production » ne se plaindra pas quand il essaie de démarrer le serveur, mais il va essayer de chercher cette faute de frappe dans le fichier database.yml et comme il ne vous existe pas la volonté obtenez l'erreur que vous avez mentionnée

Autre chose à essayer: Vérifiez si votre fichier database.yml est formaté correctement. YAML est vraiment pointilleux avec des onglets et espaces pour une double vérification en procédant comme suit dans votre console

irb 
require 'yaml' 
a = YAML::load(File.open("config/database.yml")) 

Si vous obtenez un hachage de retour alors votre fichier est très bien, sinon résoudre le problème qui a été retourné

2

Pour moi il est descendu à un fichier database.yml mal configuré. Pour confirmer la mise en forme correcte, vous pouvez effectuer les opérations suivantes à partir du répertoire dans lequel le fichier est stocké .yml:

irb 
require 'yaml' 
a = YAML::load(File.open("database.yml")) 

si vous avez une erreur, vous verrez quelque chose comme ça en réponse ...

irb(main):001:0> require 'yaml' 
=> true 
irb(main):002:0> a = YAML::load(File.open("database.yml")) 
Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 17 column 3 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse' 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:203:in `parse_stream' 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:151:in `parse' 
     from C:/Ruby193/lib/ruby/1.9.1/psych.rb:127:in `load' 
     from (irb):2 
     from C:/Ruby193/bin/irb:12:in `<main>' 

Dans mon cas, j'ai oublié de laisser un espace après le ":" lors de la saisie du mot de passe de la base de données.

Questions connexes