Странная ошибка в рельсах - пропал помощник
Я не уверен, но это может быть связано с поломкой компьютера. После перезапуска (после сбоя) я получаю ошибку отсутствующего помощника, где имя помощника неверно. Смена филиалов не влияет на результат.
Ошибка:
Отсутствуют вспомогательные помощники для файлов //users/xxxx/sites/xxxx/app/helpers/accounts_helper.rb_helper.rb
Я пытался обновить драгоценные камни, неустановленные рельсы и переустановленные, проверил имена помощников и везде, где есть помощники. Я также просмотрел журналы git и проверил недавно измененный код. Неудачно.
Трассировки стека
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'
16 ответов
Проблема, кажется, была введена в последней версии ruby, ruby 2.2.0.
Попробуйте этот эксперимент:
в консоли рельсов / или IRB:
[1] pry(main)>File.expand_path ("./")
=> "/users/xxxx/Sites/xxxx"
и в окне терминала:
]$ pwd
/users/xxxx/sites/xxxx
Видишь другой случай? Если вы получите это, то глубоко в недрах активной поддержки регулярное выражение идет на юг. Одним из исправлений является удаление каталога "sites" и повторное создание. Он также может работать, чтобы переименовать каталог сайтов с помощью поиска, как переименовать его в "foobar", а затем обратно в "сайты".
НТН.
(с этой страницы в Японии) http://translate.google.com/translate?hl=en&sl=ja&u=http://d.hatena.ne.jp/jiikko/20150108&prev=search
И когда я отлаживал это с другим человеком, этого было достаточно, чтобы в пути было указано имя каталога со смешанным регистром. Мы переименовали его в "farknerd", а затем вернули оригинал, за исключением всех строчных букв, и это сработало.
Для меня папку "сайты" нужно было только переименовать, а не весь каталог.
из моего пользовательского корневого каталога я сделал это...
mv sites sites1
mv sites1 sites
Следуя инструкциям Роба, я счел необходимым переименовать + нижний регистр каждой папки в пути к файлу до "Пользователи", прежде чем моя ошибка исчезнет.
Я получил эту ошибку после создания helpers
каталог впервые.
Проблема ушла после запуска spring stop
и пытаюсь снова.
У меня тоже была проблема с делом. Первоначально я находился в папке C:\users\pxxx\projects\odot, которая выдавала вышеуказанную ошибку. Когда я сменил C:\Users\Pxxx\projects\odot, он, похоже, работал
У меня была та же проблема с использованием порошка Gem. Вот как я это исправил:
powder unlink
powder link
У меня была та же самая проблема, очевидно связанная с dropbox, но не чувствительная к регистру, как другие предложили.
После ответа @ Роба, вывод [1] pry(main)>File.expand_path ("./")
привело к:
/Users/xxxx/dropbox/xxxx
и выход ]$ pwd
также привело к:
/Users/xxxx/dropbox/xxxx
Следуя инструкциям @Beengie, из моего корневого каталога Users я сделал:
mv Dropbox Dropbox1
mv Dropbox1 Dropbox
Это решает проблему для меня - до тех пор, пока я не перезагружусь, после чего мне придется снова выполнить операцию. Я все еще ищу постоянное исправление.
У меня была такая же проблема, но НЕТ пользовательских каталогов с заглавными буквами... только /Users
,
Я попытался обновить до ruby 2.2.1 - это не исправить.
Я очень нерешительно исправил это, выполнив то же самое "чувствительное к регистру" исправление /Users
каталог:
cd /
sudo mv Users users1
sudo mv users1 users
Я еще не видел, сломает ли это что-нибудь еще....
Это беспокоило меня так долго. Я не нашел никакой радости от попыток переименовать файлы или каталоги.
Однако я нашел действительно легкое решение. Просто зайдите в главный каталог вашего проекта и запустите "пакетную установку". Он установил все зависимости gem (без перезаписи любых данных, которые я написал), что эффективно решало любые проблемы.
Открыл сервер рельсов и ура, нормальное обслуживание возобновилось.
Надеюсь, это поможет!
Эта проблема..
Для меня такая же проблема с ошибкой
"missing helper file app/helpers/application_helper.rb_helper.rb"
Приложение было расположено в дереве каталогов
/Users/grantsayer/Documents/Work/recipes
Поэтому, проводя тест, чтобы показать путь, как из терминала, так и из среды ruby, я обнаружил следующее:
1. Рубиновая среда
Grants-MacBook-Pro: рецепты грантсайеров $ irb
2.2.0: 001>
2.2.0: 002> File.expand_path ("./") => "/ Users / grantsayer / Documents / Work / Recipes"
2. Терминал Unix
Grants-MacBook-Pro: Рецепты грантсайера $ pwd / Пользователи / грантсайер / Документы / Работа / Рецепты
На этом этапе запуск сервера rails и переход на http://localhost:3000/ привел к ошибке об отсутствующем помощнике приложения. Эта ошибка, как уже описывали другие, является ошибкой в ruby, приводящей к преобразованию регистра в пути к файлу.
Я решил проблему, переименовав папку recipes в Recipes, чтобы проверка среды ruby в irb соответствовала локальной файловой системе.
Это случилось со мной после того, как я обновил Rubymine. Все, что я сделал, это изменил папку моего сайта с HelloWord
в helloword
, Убрал заглавные и другие символы и все работает отлично.
В моем случае я использовал Windows. Используя оболочку Git, я продолжал получать эту ошибку, пытаясь установить гем администрирование из мыслибота. Команда, которая продолжала выдавать мне ошибку "AbstractController::Helpers::MissingHelperError", была:
$ rails generate administrate:install
Я не переименовал свою папку в нижний регистр, как предлагали многие ответы. Вместо этого я использовал cmd окна. Это сработало отлично.
Я получил ту же ошибку, что и выше, но это не было связано с проблемой дела. Это закончилось тем, что произошло из-за комбинации вещей. У меня были установлены два менеджера версий ruby - rvm и rbenv - и я использовал старый установщик gem. Мне пришлось удалить rvm (как я могу удалить RVM (Ruby Version Manager) из моей системы?), Переустановить rbenv (brew reinstall rbenv) и обновить до последней версии ruby. Затем мне пришлось обновить rubygems (gem update --system). Затем переустановил все гемы и перезагрузил и все было исправлено.
По сути, мой менеджер ruby указывал на старую версию ruby и использовал устаревшую версию установщика gem (2.2.0). Возможно, вам удастся исправить ситуацию, просто обновив rubygems.
Мне потребовалось полтора дня, чтобы решить эту проблему. Надеюсь, это сэкономит кому-то время и разочарование.
Была такая же проблема на Ruby 2.2.0, и мне удалось исправить это, изменив структуру папок с
/Users/xxx/Documents/Ruby/xxxx
в
/Users/xxx/Documents/ruby/xxxx
Так строчные имя папки
У меня возникла эта проблема после создания нового контроллера с помощью команды
rails generate controller Microposts
Это нарушало весь мой набор тестов.
Если бы я отменил команду, используя: rails destroy controller Microposts
он снова станет зеленым.
Мне удалось решить проблему, запустив: gem update
После уничтожения контроллера и его повторного создания после обновления драгоценных камней.
Как ни странно, при регенерации я получил это сообщение:
"Имя MicropostsHelper либо уже используется в вашем приложении, либо зарезервировано Ruby on Rails. Выберите альтернативу или используйте --force, чтобы пропустить эту проверку и снова запустить этот генератор".
Который не появлялся до того, как я обновил свои драгоценные камни, и больше не имеет проблем.
Я использую RVM и использовал это, чтобы убедиться, что я выполняю команду в той же версии Ruby, которую использует мое приложение.
У меня была черта в одном из моих каталогов: миссия, которая также вызывала ошибку. Помимо того, что все ваши родительские каталоги должны быть строчными (включая изменение рабочего стола на рабочий стол), также убедитесь, что единственными символами в именах каталогов являются буквы.
Я использую 2.2.0 и сделал, как сказал @Rob, и обнаружил, что проблема была в моем корневом каталоге приложений, поскольку он имел заглавное имя. Я также не держу приложение в каталоге сайтов, а в другом каталоге.