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
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 :)
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.
Essayez de mettre à jour la gem sqlite3. bundle update sqlite3
bundle install
bundle update
rake db:setup
rake db:migrate
rake db:seed
# remember to restart the server
Rails server
Si vous avez dans votre Gemfile quelque chose comme:
gem 'sqlite3-Ruby', '> 1.2.0',: require => 'sqlite3'
remplacez-le par:
gem 'sqlite3'
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
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é.
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):
Créez une base de données et donnez-lui un nom.
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
$ 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é!
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.
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]
Ajoutez ceci à votre Gemfile:
gem 'sqlite3-Ruby', :require => 'sqlite3'