Je suis nouveau sur Ruby on Rails et j'essaie de faire ma première demande. J'ai des problèmes quand je lance une commande Rails generate
. Je reçois l'erreur suivante
MyUsers-MacBook-Pro:MyApp MyUser$ Rails generate devise:install
Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring.
/Users/MyUser/.gem/Ruby/2.0.0/gems/activerecord-4.1.2.rc1/lib/active_record/dynamic_matchers.rb:26:in `method_missing': undefined method `devise' for User (call 'User.connection' to establish a connection):Class (NoMethodError)
from /Users/MyUser/.Trash/MyApp/app/models/user.rb:4:in `<class:User>'
from /Users/MyUser/.Trash/MyApp/app/models/user.rb:1:in `<top (required)>'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:443:in `load'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:443:in `block in load_file'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:633:in `new_constants_in'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:442:in `load_file'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:342:in `require_or_load'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:480:in `load_missing_constant'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:180:in `const_missing'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:238:in `const_get'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:238:in `block in constantize'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:236:in `each'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:236:in `inject'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:236:in `constantize'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:552:in `get'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:583:in `constantize'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise.rb:297:in `get'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:77:in `to'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:72:in `modules'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:89:in `routes'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:156:in `default_used_route'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:66:in `initialize'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise.rb:331:in `new'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise.rb:331:in `add_mapping'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/Rails/routes.rb:221:in `block in devise_for'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/Rails/routes.rb:220:in `each'
from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/Rails/routes.rb:220:in `devise_for'
from /Users/MyUser/.Trash/MyApp/config/routes.rb:2:in `block in <top (required)>'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/actionpack-4.1.2.rc1/lib/action_dispatch/routing/route_set.rb:337:in `instance_exec'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/actionpack-4.1.2.rc1/lib/action_dispatch/routing/route_set.rb:337:in `eval_block'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/actionpack-4.1.2.rc1/lib/action_dispatch/routing/route_set.rb:315:in `draw'
from /Users/MyUser/.Trash/MyApp/config/routes.rb:1:in `<top (required)>'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:241:in `load'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:241:in `block in load'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:241:in `load'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/routes_reloader.rb:40:in `block in load_paths'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/routes_reloader.rb:40:in `each'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/routes_reloader.rb:40:in `load_paths'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/routes_reloader.rb:16:in `reload!'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/routes_reloader.rb:26:in `block in updater'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/file_update_checker.rb:75:in `call'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/file_update_checker.rb:75:in `execute'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/routes_reloader.rb:27:in `updater'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/routes_reloader.rb:7:in `execute_if_updated'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application/finisher.rb:71:in `block in <module:Finisher>'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/initializable.rb:30:in `instance_exec'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/initializable.rb:30:in `run'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/initializable.rb:55:in `block in run_initializers'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/tsort.rb:150:in `block in tsort_each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_component_from'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/tsort.rb:182:in `block in each_strongly_connected_component'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/tsort.rb:180:in `each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_component'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/tsort.rb:148:in `tsort_each'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/initializable.rb:54:in `run_initializers'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/railties-4.1.2.rc1/lib/Rails/application.rb:300:in `initialize!'
from /Users/MyUser/.Trash/MyApp/config/environment.rb:5:in `<top (required)>'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:247:in `require'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:247:in `block in require'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:232:in `load_dependency'
from /Users/MyUser/.gem/Ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:247:in `require'
from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:92:in `preload'
from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:140:in `serve'
from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:128:in `block in run'
from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:122:in `loop'
from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:122:in `run'
from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in `<top (required)>'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'
Même si je n'ajoute pas le gem 'devise'
dans mon Gemfile, j'obtiens toujours cette erreur. J'ai même créé une nouvelle application et j'ai cette erreur.
J'ai même essayé les réponses à méthode non définie 'concevez' pour User
Une idée de comment je peux me débarrasser de cette erreur?
EDIT Je n'ai actuellement aucun modèle
Cela se produit parce que vous avez manqué la commande:
Rails generate devise:install
Il vous suffit de commenter toutes les lignes de conception temporellement (dans routes.rb/user.rb) pour ne pas augmenter.
Et exécutez à nouveau la commande.
C'est la commande appropriée.
gem 'devise'
Run the bundle command to install it.
Rails generate devise:install
Rails generate devise MODEL
Ici, le modèle a été créé avant que "Rails ne génère:" installez ". Vous devez donc revenir en arrière sur tout commentaire créé par ce modèle:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
#devise :database_authenticatable, :registerable,
#:recoverable, :rememberable, :trackable, :validatable
end
et aussi cela
Rails.application.routes.draw do
#devise_for :users
end
À présent, lancez "Rails génère le schéma: installer" et décommentez ce qui précède.
J'ai rencontré un problème similaire avec un projet existant fraîchement extrait d'un dépôt:
Les fichiers manquants spécifiques étaient:
config/initializers/devise.rb
config/locales/devise.en.yml
Dans ce cas, étant donné que devise.rb
était dans la liste .gitignore
, un fichier config/initializers/devise.rb.example
pouvait être copié.
Ou, comme moi, après avoir ajouté:
gem 'devise'
à Gemfile, et en cours d'exécution:
$ bundle install
vous avez oublié de redémarrer le serveur avec CtrlC et:
$ Rails s
C'est un problème un peu étrange que j'ai moi aussi rencontré! Essayez d’ajouter extend Devise::Models
dans le fichier app/models/install.rb comme expliqué dans le lien ci-dessous.
J'espère que cela vous aidera! https://github.com/plataformatec/devise/issues/3877
Rails g devise install
! = Rails g devise:install
J'ai aussi rencontré ce problème. En exécutant Rails generate devise install
(sic!), Rien ne semblait ne pas avoir fonctionné. La sortie du terminal était:
$ Rails g devise install
Running via Spring preloader in process 5422
invoke active_record
create db/migrate/20180306165306_devise_create_installs.rb
create app/models/install.rb
insert app/models/install.rb
route devise_for :installs
Mais j'ai raté le point-virgule . En annulant ces modifications, puis en exécutant Rails generate devise:install
(notez le :
entre devise
et install
), tout a parfaitement fonctionné. Aussi, vous obtenez une sortie beaucoup plus étendue:
$ Rails g devise:install
Running via Spring preloader in process 5218
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================
Some setup you must do manually if you haven't yet:
1. Ensure you have defined default url options in your environments files. Here
is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:
config.action_mailer.default_url_options = { Host: 'localhost', port: 3000 }
In production, :Host should be set to the actual Host of your application.
2. Ensure you have defined root_url to *something* in your config/routes.rb.
For example:
root to: "home#index"
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. You can copy Devise views (for customization) to your app by running:
Rails g devise:views
===============================================================================