J'ai une application Rails (Rails 5). En développement, tout fonctionne, quand j'utilise
Rails console
Et entrez une instruction, par exemple User.all
, ça marche.
En production, mon application fonctionne parfaitement, pas de problème, pas d'erreur, mais quand j'utilise Rails console production
et entrez par exemple User.all
j'ai une erreur:
NameError: uninitialized constant User
from (irb):2
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/Rails/commands/console.rb:65:in `start'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/Rails/commands/console_helper.rb:9:in `start'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/Rails/commands/commands_tasks.rb:78:in `console'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/Rails/commands/commands_tasks.rb:49:in `run_command!'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/Rails/commands.rb:18:in `<top (required)>'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `block in require'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
from /home/alexandre/tcheen/bin/Rails:9:in `<top (required)>'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/commands/Rails.rb:6:in `load'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/commands/Rails.rb:6:in `call'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/command_wrapper.rb:38:in `call'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:191:in `block in serve'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:161:in `fork'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:161:in `serve'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:131:in `block in run'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:125:in `loop'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/application.rb:125:in `run'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.0/gems/spring-1.7.2/lib/spring/application/boot.rb:19:in `<top (required)>'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/alexandre/.rbenv/versions/2.3.1/lib/Ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'
J'ai le même problème avec toutes mes classes, mais je le répète, l'application fonctionne parfaitement. Je développe sur Mac OS et l'application fonctionne en production sur Debian 8. Mes modèles sont correctement nommés et vérifiés. Merci
J'ai eu ce problème et j'ai réalisé qu'il s'était produit après avoir fait un Tweak à l'un de mes fichiers de travail. Ce qui l'a corrigé, c'était le redémarrage du chargeur à ressort. Il suffit de courir
spring stop
Ensuite, la prochaine fois que vous exécutez le Rails console
il devrait charger les choses normalement.
J'ai eu ce même problème, réponse de rewolf ci-dessus l'a résolu pour moi temporairement .
Juste pour ajouter à sa réponse:
Après avoir arrêté la gemme spring en exécutant la commande ci-dessous
spring stop
Vous pouvez également résoudre ce problème de façon permanente en augmentant (en supprimant la gemme de printemps) votre bin/
exécutables:
bin/spring binstub --remove --all
Ou
spring binstub --remove --all
Vous pouvez maintenant exécuter la commande ci-dessous pour entrer dans la console Rails en production
Rails c --environment=production
De plus, pour éviter que cela ne se produise dans les occasions suivantes, essayez de vous assurer que la gemme spring n'est présente que dans les groupes development
et test
de votre Gemfile.
De plus, lorsque vous êtes en production, assurez-vous de toujours fournir le --without development test
argument à bundle install
commande
bundle install --without development test
et pas l'habituel ou commun
bundle install
Veuillez noter: À titre indicatif, chaque fois que vous exécutez la commande Rails c
ou Rails console
et vous voyez la sortie ci-dessous:
Exécution via le préchargeur Spring en cours 26651 AVERTISSEMENT: Spring est en cours de production. Pour résoudre ce problème, assurez-vous que la gemme de printemps est uniquement présente dans les groupes
development
ettest
dans votre Gemfile et assurez-vous de toujours utiliserbundle install --without development test
en production
C'est une indication que la gemme spring est en cours d'exécution dans votre environnement de production, et qu'elle doit être arrêtée ou supprimée entièrement de vos exécutables bin.
C'est tout.
J'espère que cela vous aidera