web-dev-qa-db-fra.com

Erreur étrange dans Rails - helper manquant

Je ne suis pas sûr, mais cela pourrait être associé à un ordinateur en panne. Après le redémarrage (après le crash), j'obtiens une erreur d'aide manquante lorsque le nom de l'aide est incorrect. Le changement de branche n'a aucun effet sur le résultat.

L'erreur est:

Assistants de fichiers d'aide manquants // users/xxxx/sites/xxxx/app/helpers/accounts_helper.rb_helper.rb

Ive a essayé de mettre à jour les gemmes, désinstallé Rails et réinstallé, vérifié les noms des assistants et n'importe où les assistants sont inclus. J'ai également examiné les journaux git et vérifié le code récemment modifié. Pas de chance.

Trace de la pile

Started GET "/" for 127.0.0.1 at 2015-01-09 17:53:57 -0700
  ActiveRecord::SchemaMigration Load (1.1ms)  SELECT "schema_migrations".* FROM "schema_migrations"

AbstractController::Helpers::MissingHelperError - Missing helper file helpers//users/xxxx/sites/xxxx/app/helpers/accounts_helper.rb_helper.rb:
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:151:in `rescue in block in modules_for_helpers'
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:148:in `block in modules_for_helpers'
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:144:in `modules_for_helpers'
  actionpack (4.2.0) lib/action_controller/metal/helpers.rb:93:in `modules_for_helpers'
  actionpack (4.2.0) lib/abstract_controller/helpers.rb:108:in `helper'
  actionpack (4.2.0) lib/action_controller/railties/helpers.rb:17:in `inherited'
  app/controllers/application_controller.rb:1:in `<top (required)>'
  activesupport (4.2.0) lib/active_support/dependencies.rb:457:in `block in load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:647:in `new_constants_in'
  activesupport (4.2.0) lib/active_support/dependencies.rb:456:in `load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:354:in `require_or_load'
  activesupport (4.2.0) lib/active_support/dependencies.rb:494:in `load_missing_constant'
  activesupport (4.2.0) lib/active_support/dependencies.rb:184:in `const_missing'
  app/controllers/pages_controller.rb:1:in `<top (required)>'
  activesupport (4.2.0) lib/active_support/dependencies.rb:457:in `block in load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:647:in `new_constants_in'
  activesupport (4.2.0) lib/active_support/dependencies.rb:456:in `load_file'
  activesupport (4.2.0) lib/active_support/dependencies.rb:354:in `require_or_load'
  activesupport (4.2.0) lib/active_support/dependencies.rb:494:in `load_missing_constant'
  activesupport (4.2.0) lib/active_support/dependencies.rb:184:in `const_missing'
  activesupport (4.2.0) lib/active_support/inflector/methods.rb:261:in `block in constantize'
  activesupport (4.2.0) lib/active_support/inflector/methods.rb:259:in `constantize'
  activesupport (4.2.0) lib/active_support/dependencies.rb:566:in `get'
  activesupport (4.2.0) lib/active_support/dependencies.rb:597:in `constantize'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:69:in `controller_reference'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:59:in `controller'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:38:in `serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:43:in `block in serve'
  actionpack (4.2.0) lib/action_dispatch/journey/router.rb:30:in `serve'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:802:in `call'
  bullet (4.14.0) lib/bullet/rack.rb:10:in `call'
  meta_request (0.3.4) lib/meta_request/middlewares/app_request_handler.rb:13:in `call'
  meta_request (0.3.4) lib/meta_request/middlewares/meta_request_handler.rb:13:in `call'
  rack (1.6.0) lib/rack/etag.rb:24:in `call'
  rack (1.6.0) lib/rack/conditionalget.rb:25:in `call'
  rack (1.6.0) lib/rack/head.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/flash.rb:260:in `call'
  rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.2.0) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.2.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:647:in `call'
  activerecord (4.2.0) lib/active_record/migration.rb:378:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.2.0) lib/active_support/callbacks.rb:88:in `_run_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_call_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:57:in `call'
  rack-contrib (1.2.0) lib/rack/contrib/response_headers.rb:17:in `call'
  meta_request (0.3.4) lib/meta_request/middlewares/headers.rb:16:in `call'
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:18:in `middleware_call'
  web-console (2.0.0) lib/action_dispatch/debug_exceptions.rb:13:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.0) lib/Rails/rack/logger.rb:38:in `call_app'
  railties (4.2.0) lib/Rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.0) lib/Rails/rack/logger.rb:20:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.0) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
  rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
  rack-mini-profiler (0.9.2) lib/mini_profiler/profiler.rb:300:in `call'
  railties (4.2.0) lib/Rails/engine.rb:518:in `call'
  railties (4.2.0) lib/Rails/application.rb:164:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  rack (1.6.0) lib/rack/content_length.rb:15:in `call'
  rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service'
  /Users/Hank/.rvm/rubies/Ruby-2.2.0-rc1/lib/Ruby/2.2.0/webrick/httpserver.rb:138:in `service'
  /Users/Hank/.rvm/rubies/Ruby-2.2.0-rc1/lib/Ruby/2.2.0/webrick/httpserver.rb:94:in `run'
  /Users/Hank/.rvm/rubies/Ruby-2.2.0-rc1/lib/Ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
32
hellion

Le problème semble avoir été introduit dans la dernière version de Ruby, Ruby 2.2.0.

Essayez cette expérience:

dans Rails console/or irb:

[1] pry(main)>File.expand_path ("./") 
=> "/users/xxxx/Sites/xxxx"

et dans la fenêtre du terminal:

]$ pwd
/users/xxxx/sites/xxxx

Voir le cas différent? Si vous obtenez cela, alors au fond des entrailles du soutien actif, une expression régulière va vers le sud. Une solution consiste à supprimer le répertoire "sites" et à le recréer. Il peut également être utile de renommer le répertoire des sites à l'aide du Finder, comme le renommer "foobar", puis de nouveau sur "sites".

hth.

(à partir de cette page au Japon) http://translate.google.com/translate?hl=en&sl=ja&u=http://d.hatena.ne.jp/jiikko/20150108&prev=search

Et quand je déboguais cela avec une autre personne, il suffisait d'avoir un nom de répertoire à casse mixte dans le chemin. Nous l'avons renommé "farknerd", puis sauvegardons l'original, sauf tous les minuscules, et cela a fonctionné.

50
Rob

Pour moi, le dossier "sites" devait seulement être renommé, pas le répertoire entier.

à partir de mon répertoire racine utilisateur, je l'ai fait ...

mv sites sites1
mv sites1 sites
11
Beengie

En suivant les instructions de Rob, j'ai trouvé nécessaire de renommer + en minuscules chaque dossier dans le chemin de fichier jusqu'à "Utilisateurs" avant que mon erreur ne disparaisse.

8
andytrombone

Le mien était également un problème. J'étais initialement dans le dossier C:\users\pxxx\projects\odot qui lançait l'erreur ci-dessus. Quand je suis passé à C:\Users\Pxxx\projects\odot cela semblait fonctionner

3
Pranay Aryal

J'ai eu cette erreur après avoir créé un répertoire helpers pour la première fois.

Le problème a disparu après avoir exécuté spring stop et réessayer.

1
Paul Cantrell

Cela m'embêtait depuis si longtemps. Je n'ai trouvé aucune joie à essayer de renommer les fichiers ou les répertoires.

J'ai cependant trouvé une solution très simple. Simplement allez dans le répertoire principal de votre projet et lancez 'bundle install'. Il a installé toutes les dépendances de gemmes (sans écraser les données que j'avais écrites), ce qui a résolu efficacement tous les problèmes.

Ouverture du serveur Rails et hourra, le service normal a repris.

J'espère que cela pourra aider!

1
Sunil Sandhu

J'ai eu le même problème, mais AUCUN répertoire créé par l'utilisateur qui contenait une lettre majuscule ... seulement /Users.

J'ai essayé de passer à Ruby 2.2.1 - cela ne l'a pas corrigé.

Je l'ai corrigé avec beaucoup d'hésitation en faisant la même "correction" sensible à la casse sur mon /Users répertoire:

cd /
Sudo mv Users users1
Sudo mv users1 users

Je dois encore voir si cela casse autre chose ...

1
Taryn East

Le problème ..

Pour moi, le même problème avec l'erreur

 "missing helper file app/helpers/application_helper.rb_helper.rb"

L'application était située dans une arborescence de répertoires

/Users/grantsayer/Documents/Work/recipes

Donc, en effectuant le test pour montrer le chemin, à la fois à l'intérieur du terminal et dans l'environnement Ruby, j'ai trouvé ce qui suit:

1. Ruby environnement

Grants-MacBook-Pro: Recettes grantayer $ irb

2.2.0: 001>

2.2.0: 002> File.expand_path ("./") => "/ Users/grantayer/Documents/Work/Recipes"

2. Terminal Unix

Grants-MacBook-Pro: Recettes grantayer $ pwd/Users/grantayer/Documents/Work/recipes

À ce stade, l'exécution du serveur Rails et la navigation vers http: // localhost: 30 a entraîné l'erreur concernant un assistant d'application manquant. Cette erreur, comme d'autres l'ont décrit , semble être un bogue dans Ruby provoquant une conversion de casse sur le chemin du fichier.

J'ai résolu le problème en renommant le dossier recettes en Recettes afin que le Ruby check-in d'environnement irb correspondait au système de fichiers local.

1
Grant Sayer

J'ai eu le même problème, apparemment lié à Dropbox, mais pas sensible à la casse comme d'autres l'ont suggéré.

Suite à la réponse de @ Rob, la sortie de [1] pry(main)>File.expand_path ("./") a entraîné:

/Users/xxxx/dropbox/xxxx

et la sortie de ]$ pwd a également entraîné:

/Users/xxxx/dropbox/xxxx

En suivant les instructions de @ Beengie, à partir de mon répertoire racine Utilisateurs, j'ai fait:

mv Dropbox Dropbox1
mv Dropbox1 Dropbox

Cela résout le problème pour moi - jusqu'à ce que je redémarre, auquel cas je dois recommencer l'opération. Je cherche toujours une solution permanente.

1
alphaleonis

J'ai eu le même problème en utilisant poudre gem. Voici comment je l'ai corrigé:

powder unlink
powder link
1
Michael Hulet

J'ai eu la même erreur que ci-dessus, mais ce n'était pas dû à un problème de boîtier. Cela a fini par être dû à une combinaison de choses. J'avais deux Ruby gestionnaires de versions installés - rvm et rbenv- et j'utilisais un ancien programme d'installation de gemmes. J'ai dû désinstaller rvm (Comment puis-je supprimer RVM (Ruby Version Manager) de mon système? ) et réinstaller rbenv (brew réinstaller rbenv) et mettre à niveau vers la dernière version de Ruby. Ensuite, j'ai dû mettre à jour rubygems (gem update --system). Ensuite, j'ai réinstallé toutes les gemmes et un redémarrage et tout a été corrigé.

Essentiellement, mon gestionnaire Ruby pointait vers une ancienne version de Ruby et utilisait une version obsolète du programme d'installation de gem (2.2.0). Vous pourriez peut-être pour réparer les choses avec juste une mise à niveau vers rubygems.

Il m'a fallu un jour et demi pour résoudre ce problème. Espérons que cela fera gagner du temps et de la frustration à quelqu'un.

0
Alex Irwin

J'utilise 2.2.0 et j'ai fait comme @Rob l'a dit et j'ai constaté que c'était mon répertoire racine des applications qui avait le problème car il avait un nom en majuscule. Je ne garde pas non plus l'application dans le répertoire Sites, mais dans un autre répertoire frère.

0
broox9

Eu le même problème sur Ruby 2.2.0 et je n'ai réussi à le corriger qu'en changeant la structure des dossiers de

/Users/xxx/Documents/Ruby/xxxx

à

/Users/xxx/Documents/Ruby/xxxx

Donc en minuscules le nom du dossier

0
pastullo

dans mon cas, j'utilisais des fenêtres. En utilisant Git Shell, j'ai continué à recevoir cette erreur en essayant d'installer la gem administrer depuis penséebot. La commande qui ne cessait de me donner l'erreur, "AbstractController :: Helpers :: MissingHelperError", était:

$ Rails generate administrate:install

Je n'ai pas renommé mes dossiers en minuscules comme de nombreuses réponses l'ont suggéré. J'ai plutôt utilisé le cmd de la fenêtre. Cela a parfaitement fonctionné.

0
Leo Much

Cela m'est arrivé après avoir mis à jour Rubymine. Je n'ai fait que changer le dossier de mon site Web de HelloWord à helloword. Suppression du capital et d'un autre symbole et cela fonctionne bien.

0
user9680695

J'avais un tiret dans l'un de mes répertoires: la mission qui provoquait également une erreur. En plus de vous assurer que tous vos répertoires parents sont en minuscules (y compris le changement de Bureau en bureau), assurez-vous également que les seuls caractères dans vos noms de répertoire sont des lettres.

0
nanselm2