web-dev-qa-db-fra.com

Erreur de lancement Rails serveur: méthode non définie 'configure'

Je suis nouveau à Rails et travaille à travers tutoriel de Hartl . Tout allait bien jusqu'à ce que j'essaye de faire le tutoriel une deuxième fois et que je crée un autre projet essayant d'utiliser la dernière version de Rails. Lorsque j'essaie de charger le Rails server du dossier de l'application, j'obtiens l'erreur suivante.

$ Rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on
=> Run `Rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
/Users/sierra/Desktop/sample_app_2/config/environments/development.rb:1:in
  `<top (required)>': undefined method `configure' for
  #<SampleApp2::Application:0x00000101a74610> (NoMethodError)

Mon Gemfile provient directement du tutoriel Hartl:

source 'https://rubygems.org'
Ruby '2.1.0'
#Ruby-gemset=railstutorial_Rails_4_0

gem 'Rails', '4.0.4'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-Rails', '2.13.1'
end

group :test do
  gem 'Selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
end

gem 'sass-Rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-Rails', '4.0.1'
gem 'jquery-Rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'Rails_12factor', '0.0.2'
end
22
snorkelzebra

Je l'ai résolu en faisant l'étape suivante.

Étape 1: accédez à Project_Root_Directory/config/environment/development.rb

Changer cette ligne

Rails.application.configure do

À

Your_Rails_Application_Folder_name::Application.configure do

Par exemple, mon Rails nom du dossier de projet est 'Spree_demo' donc Your_Rails_Application_Folder_name dans la ligne suivante:

Your_Rails_Application_Folder_name::Application.configure do

sera remplacé comme

SpreeDemo::Application.configure do

Remarque: voir le soulignement dans le nom de votre dossier d'application, il est supprimé.

J'espère que cela fonctionne pour vous les gars.

57
Muhammad Ateq Ejaz

Définissez d'abord Ruby version avant Rails new

J'ai eu le même problème et j'ai essayé la réponse donnée et cela n'a eu aucun impact. J'ai même essayé de changer le nom pour me débarrasser du trait de soulignement, et cela n'a eu aucun impact.

Le problème est que vous avez fait ceci:

$ Rails new app_name

Mais votre Ruby version était probablement 2.1.1 ou autre chose. Vous voulez faire:

$ rvm 2.0.0

AVANT d'exécuter la nouvelle application, puis lorsque vous définissez 2.0.0 dans votre Gemfile (comme Hartl le recommande), elle se met en place.

Je ne sais pas POURQUOI cela fonctionne, et j'espère que quelqu'un vous éclairera, mais je peux vous dire que cela a mieux fonctionné que la réponse qui est actuellement en tête.

6
Omar

Cela m'est arrivé aussi. Le problème était que j'ai utilisé une version de Rails pour créer le projet. Puis j'ai changé le Gemfile pour utiliser une autre version de Rails et le système l'utilisait) pour échafauder ou exécuter le serveur. Problème de débutant! L'utilisation de la même version devrait résoudre le problème.

4
Debora Aline

J'ai posté une réponse (probablement beaucoup trop longue) dans une question similaire: Rails - NoMethodError: méthode non définie `configure 'pour FirstApp . Ce fil m'a en fait lancé sur le chemin de ma solution éventuelle, alors j'ai pensé que je posterais ici aussi au cas où cela serait utile à quelqu'un d'autre.

D'après ce que je peux dire, le problème se produit lorsque les fichiers app/config/initializers/development.rb (et production.rb) sont générés pour un nouveau projet utilisant des versions plus récentes de Rails (Je ne sais pas dans quelle version il a commencé, je n'ai testé que Rails 4.1.4). M. Hartl utilise Rails 4.0.8 pour son tutoriel, et c'est la version la plus élevée que j'ai testée dans laquelle la nouvelle syntaxe ne se produit pas.

Dans Rails 4.1.4, et peut-être certaines autres versions après 4.0.8, la première ligne de ces fichiers est générée comme Rails.application.configure.do plutôt que d'utiliser un projet appelé sample_app par exemple, SampleApp::Application.configure.do comme dans 4.0.8.

Je suis nouveau à Rails donc je ne sais pas pourquoi cette syntaxe a changé dans les versions plus récentes. Je suppose que c'est intentionnel et en quelque sorte meilleur que l'ancienne façon. Très probablement, M. Hartl en tenir compte dans les futures éditions de son tutoriel qui sont mises à jour pour les versions de Rails qui incluent cette modification.

Jusque-là, consultez mon autre réponse dans la question que j'ai mentionnée ci-dessus pour une explication plus approfondie de la façon dont je l'ai contourné sous Windows 7, mais le tl; dr en est:

Assurez-vous que vous utilisez la version de Rails spécifiée pour le tutoriel (4.0.8) dans votre référentiel local/répertoire de développement racine avant vous créez votre nouveau projet. La mise à jour de votre Gemfile après la création du projet est toujours importante, mais cela ne résoudra pas ce problème si les fichiers eux-mêmes ont été générés avec une version plus récente de Rails. Vous devrez entrer et modifier cette ligne manuellement dans ce cas, comme d'autres utilisateurs l'ont suggéré.

3
user3894023

J'ai eu ce problème lorsque je me suis amusé avec mon Gemfile. Par exemple, j'ai créé l'application en utilisant Rails 4.0.2 ou quelque chose comme ça, puis en raison d'erreurs, je l'ai changé en 4.1.1 qui change causer exactement le même problème dans le développement et la production

1
pirate694