web-dev-qa-db-fra.com

Ruby - ActiveRecord :: ConnectionNotEstablished

Je suis plutôt nouveau dans Ruby et je suis le livre "Didacticiel Ruby on Rails 3 - Apprenez Ruby par l'exemple - par Michael Hartl". Je suis actuellement au chapitre 3 qui traite des pages statiques. 

Dans ce chapitre, j'ai entré la commande suivante dans l'invite: Rails generate controller Pages home contact et tout s'est bien passé. 

Ensuite, le livre me dirige vers http://localhost:3000/pages/home. Lorsque je pointe mon navigateur à cet endroit, le message d'erreur suivant s'affiche.

 ActiveRecord :: ConnectionNotEstablished 

 ActiveRecord :: ConnectionNotEstablished 
 Rails.root: /home/ralph/railsprojects/sample_app

Application Trace | Trace de cadre | Trace complète 

Les routes et le contrôleur erb ne semblent pas avoir d’erreurs. Est-ce une erreur liée à la base de données? Des idées?

Merci, DMAT

Mettre à jour:

C'est le code dans mon fichier database.yml.

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

Voici les informations de la trace du framework:

  activerecord (3.1.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:409:in `retrieve_connection'
  activerecord (3.1.1) lib/active_record/connection_adapters/abstract/connection_specification.rb:107:in `retrieve_connection'
  activerecord (3.1.1)lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in `connection'
  activerecord (3.1.1) lib/active_record/query_cache.rb:65:in `call'
  activerecord (3.1.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:477:in `call'
  actionpack (3.1.1) lib/action_dispatch/middleware/callbacks.rb:29:in `call'
  activesupport (3.1.1) lib/active_support/callbacks.rb:392:in `_run_call_callbacks'
  activesupport (3.1.1) lib/active_support/callbacks.rb:81:in `send'
  activesupport (3.1.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.1.1) lib/action_dispatch/middleware/callbacks.rb:28:in `call'
  actionpack (3.1.1) lib/action_dispatch/middleware/reloader.rb:68:in `call'
  rack (1.3.5) lib/rack/sendfile.rb:101:in `call'
  actionpack (3.1.1) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
  actionpack (3.1.1) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
  railties (3.1.1) lib/Rails/rack/logger.rb:13:in `call'
  rack (1.3.5) lib/rack/methodoverride.rb:24:in `call'
  rack (1.3.5) lib/rack/runtime.rb:17:in `call'
  activesupport (3.1.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.3.5) lib/rack/lock.rb:15:in `call'
  actionpack (3.1.1) lib/action_dispatch/middleware/static.rb:53:in `call'
  railties (3.1.1) lib/Rails/engine.rb:456:in `call'
  railties (3.1.1) lib/Rails/rack/content_length.rb:16:in `call'
  railties (3.1.1) lib/Rails/rack/log_tailer.rb:14:in `call'
  rack (1.3.5) lib/rack/handler/webrick.rb:59:in `service'
  /usr/lib/Ruby/1.8/webrick/httpserver.rb:104:in `service'
  /usr/lib/Ruby/1.8/webrick/httpserver.rb:65:in `run'
  /usr/lib/Ruby/1.8/webrick/server.rb:173:in `start_thread'
  /usr/lib/Ruby/1.8/webrick/server.rb:162:in `start'
  /usr/lib/Ruby/1.8/webrick/server.rb:162:in `start_thread'
  /usr/lib/Ruby/1.8/webrick/server.rb:95:in `start'
  /usr/lib/Ruby/1.8/webrick/server.rb:92:in `each'
  /usr/lib/Ruby/1.8/webrick/server.rb:92:in `start'
  /usr/lib/Ruby/1.8/webrick/server.rb:23:in `start'
  /usr/lib/Ruby/1.8/webrick/server.rb:82:in `start'
  rack (1.3.5) lib/rack/handler/webrick.rb:13:in `run'
  rack (1.3.5) lib/rack/server.rb:265:in `start'
  railties (3.1.1) lib/Rails/commands/server.rb:70:in `start'
  railties (3.1.1) lib/Rails/commands.rb:54
  railties (3.1.1) lib/Rails/commands.rb:49:in `tap'
  railties (3.1.1) lib/Rails/commands.rb:49
  script/Rails:6:in `require'
  script/Rails:6
36
Dmat00

J'ai eu le même problème, j'ai démarré l'application exemple à partir de zéro et utilisé ce fichier gem

source 'http://rubygems.org'

gem 'Rails', '3.1.1'

gem 'sqlite3'

group :development do
  gem 'rspec-Rails', '2.6.1'
end


group :test do
  gem 'rspec-Rails', '2.6.1'
  gem 'webrat', '0.7.1'
end

group :assets do
  gem 'sass-Rails',   '~> 3.1.4'
  gem 'coffee-Rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-Rails'

Cela a résolu le problème pour moi :)

19
buzzer123

Assurez-vous d'avoir installé sqlite3 gem.

Si oui avez-vous exécuté les commandes suivantes,

rake db:create # to create database
rake db:migrate # to create tables based on your migration

Si les deux solutions ci-dessus fonctionnent correctement, votre application devrait pouvoir se connecter à la base de données. Sinon, veuillez copier la trace de l'application de trace ici, cela peut nous aider à mieux vous aider.

10
nkm

Essayez de mettre à jour la gem sqlite3. bundle update sqlite3

2
Artem Kalinchuk
bundle install
bundle update
rake db:setup
rake db:migrate
rake db:seed
# remember to restart the server
Rails server
2
nikc

Si vous avez dans votre Gemfile quelque chose comme:

gem 'sqlite3-Ruby', '> 1.2.0',: require => 'sqlite3'

remplacez-le par:

gem 'sqlite3'

2
freytag

En environnement de développement, lancez simplement

bundle exec rake db:setup

En environnement de production, exécutez

bundle exec Rails_ENV=production rake db:setup
1
hao

Mettez à jour l'adaptateur du fichier config/database.yml avec le nom de la base de données utilisé par votre application et redémarrez vos Rails. Cela résoudra le problème.

Pour moi, il a été réinitialisé avec un autre nom de base de données, ce qui donnait une erreur. Après l'avoir mis à jour en "sqlite3", cela a bien fonctionné.

0
Murali

je suis novice dans ce domaine, mais cela pourrait être très utile (si vous êtes en développement, vérifiez simplement que le développement quitte les environnements de production et de test):

  1. Créez une base de données et donnez-lui un nom.

  2. Ouvrez .config/database.yml

    adaptateur: mysql2

    base de données: spécifiez_votre_nouveau_created_database #check si sa mise à jour automatiquement ou non

    piscine: 5

    nom d'utilisateur: votre nom d'utilisateur désigné.

    mot de passe: votre mot de passe désigné.

    Hôte: localhost

  3. $ Rails server

    => Amorcer WEBrick

    => Application Rails 3.2.9 commençant en développement sur http: // 0. 0. 0 .0: 3000

    => Appeler avec -d pour se détacher

    => Ctrl-C pour arrêter le serveur

    [2012-12-12 23:31:50] INFO WEBrick 1.3.1

    [2012-12-12 23:31:50] INFO Ruby 1.9.3 (2012-11-10) [i386-mingw32]

    [2012-12-12 23:31:50] INFO WEBrick :: HTTPServer # start: pid = 4068 port = 3000

    Ouverture de GET "/ demo/index" pour 127.0.0.1 le 2012-12-12 23:32:40 +0545

    Connexion à la base de données spécifiée par database.yml

    Traitement par DemoController # index au format HTML

    Rendu demo/index.html.erb dans les layouts/application (0.0ms)

    Demo.css compilé (46ms) (pid 4068)

etc...........

si vous essayez simplement de résoudre ActiceRecord, le problème sera résolu et votre première page d'accueil apparaîtra. C’est le problème qui survient parfois depuis que Rails cherche la base de données bien que nous n’ayons rien à faire avec la base de données lorsqu’il s’agit de la première page de salut. Vérifiez-le donc une fois, sinon nous le résoudreons ensemble. À votre santé!

0
ashim888

Je migrais depuis une version précédente de Rails. Pour moi, la solution était d'ajouter

nécessite 'Rails/all' 

au sommet de application.rb au lieu des 5 requis distincts que j'avais.

0
Adam Loving

Utiliser la dernière version de sqlite3 + bundle update + bundle a fonctionné pour moi. Je crois que la restriction à une version plus ancienne de sqlite3 par la procédure pas à pas est susceptible de gâcher les choses. Voici mon gemfile:

source 'https://rubygems.org'

# Bundle Edge Rails instead: gem 'Rails', github: 'Rails/rails'
gem 'Rails', '4.0.0'



# Use sqlite3 as the database for Active Record
gem 'sqlite3'


# Use SCSS for stylesheets
gem 'sass-Rails', '~> 4.0.0'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-Rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :Ruby

# Use jquery as the JavaScript library
gem 'jquery-Rails'

# Turbolinks makes following links in your web application faster. Read more:     https://github.com/Rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/Rails/jbuilder
gem 'jbuilder', '~> 1.2'

group :doc do
  # bundle exec rake doc:Rails generates the API under doc/api.
  gem 'sdoc', require: false
end

# Use ActiveModel has_secure_password
# gem 'bcrypt-Ruby', '~> 3.0.0'

# Use Unicorn as the app server
# gem 'Unicorn'

# Use Capistrano for deployment
# gem 'capistrano', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]
0
Matthew Saeed

Ajoutez ceci à votre Gemfile:

gem 'sqlite3-Ruby', :require => 'sqlite3'
0
Sachin Maharjan