Rails: AbstractController:: Helpers:: MissingHelperError - Отсутствует вспомогательный файл application_helper.rb_helper.rb
Невозможно найти какой-либо ресурс, который помог мне в этом! Когда я пытаюсь "рельсы s" и перейти на любую страницу приложения; он снимает мне эту страницу с ошибкой, говоря, что мне не хватает вспомогательных файлов.
Я думаю, что это локально на моем настольном компьютере, потому что недавно я немного поработал над этим приложением на своем ноутбуке. Я оттолкнулся от ноутбука, и приложение отлично работает на Heroku и работает на этой машине с нулевыми проблемами. Я добавил функцию загрузки изображений логотипов компании с помощью Carrierwave, Mini_Magick и Fog в Amazon S3.
Вещи, которые я пробовал до сих пор: я удалил приложение и git клонировать его обратно на этот компьютер. Я пробовал Brew удалить/установить imagemagick и сделал все основы, такие как bundle install, rake db: migrate после того, как я клонировал приложение. Еще не повезло..
Вот коды ошибок, которые я получаю на странице, а также полную трассу:
AbstractController::Helpers::MissingHelperError in PagesController#dashboard
Missing helper file helpers//users/jamesfend/sites/feedbackz/app/helpers/application_helper.rb_helper.rb
Extracted source (around line #1):
1 class ApplicationController < ActionController::Base
2 # Prevent CSRF attacks by raising an exception.
3 # For APIs, you may want to use :null_session instead.
4 protect_from_forgery with: :exception
Полная трассировка
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 `map!'
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 `load'
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 `load'
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 `const_get'
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 `each'
activesupport (4.2.0) lib/active_support/inflector/methods.rb:259:in `inject'
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 `each'
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'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34: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 `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'
actionpack (4.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:17: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'
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/jamesfend/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
/Users/jamesfend/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
/Users/jamesfend/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
Контроллер страниц
class PagesController < ApplicationController
def dashboard
@title = 'Feedbackz by Amazio Labs'
@header_title = 'Dashboard'
end
def billing
@title = 'Billing & Plans - Feedbackz by Amazio Labs'
@header_title = 'Billing & Plans'
@user = User.find(current_user.id)
end
def contact
@title = 'Contact - Feedbackz by Amazio Labs'
@header_title = 'Contact Us'
end
def faq
@title = 'FAQ - Feedbackz by Amazio Labs'
@header_title = 'Frequently Asked Questions'
end
def invoices
@title = 'Invoices - Feedbackz by Amazio Labs'
@header_title = 'Invoices'
end
def videos
@title = 'Videos - Feedbackz by Amazio Labs'
@header_title = 'Helpful Videos'
end
def schedule
@title = 'Schedule - Feedbackz by Amazio Labs'
@header_title = 'Schedule of Pending Sends'
end
end
Ответы
Ответ 1
Это сработало для меня:
cd ~
mv sites tmpsites
mv tmpsites sites
Я также сделал это, но не уверен, если это необходимо:
cd /
sudo ln -s Users users
Как ни странно, я не вижу символическую ссылку users
в нижнем регистре, но работают как ls /users
, так и ls /users
.
Ответ 2
Пошаговое руководство:
В OSX я изменил свое имя пользователя на Psy
с Psy
. Так что выяснение проблемы было болью в заднице. После этих шагов мне помогли:
-
Запустите irb
и выполните эту команду в папке проекта:
File.expand_path("./")
# => "/Users/psy/code/rails_app"
-
Теперь выйдите из irb
и запустите эту команду в своей оболочке:
$ pwd
# => /Users/Psy/code/rails_app
-
Сравните два и обратите внимание на каталог с разницей в case, в этом случае он Psy
-
Переименуйте этот каталог на что-нибудь, а затем переименуйте его обратно в исходную папку (используйте sudo
только при необходимости)
$ sudo mv /Users/Psy /Users/tmp
$ sudo mv /Users/tmp /Users/Psy
Ответ 3
В то время как ответ Зубина предоставил мне работу на моей персональной машине, я просто столкнулся с той же проблемой на рабочей машине, где это было не совсем так. Я создал сайты в виде нижнего регистра:
mkdir sites
Переименование с капиталом s исправлено.
mv sites Sites
Ответ 4
Я обнаружил, что переименование только папки сайтов работало для меня так же, как указал Зубин. Я не выполнял команду sudo ln.
mv sites sites1
mv sites1 sites
Ответ 5
Простое перемещение/переименование папки не помогло мне. Мне пришлось переименовать существующую папку, создать новую папку с тем же именем, а затем скопировать все на нее. Затем я удалил старую переименованную папку.
Ответ 6
Для меня эта проблема была вызвана тем, что я использовал GitBash для Windows и выполнял мои тесты. Похоже на несоответствие случая, на что ожидает bash, и фактические имена папок. Удалил его из cmd и работал нормально.
Ответ 7
Если вы используете Windows и Powershell, эта проблема может возникать при запуске rails s
или rails server
из каталога, который имеет определенную заглавную букву в файловой системе, но если вы перешли в каталог в Powershell с использованием другой заглавной буквы.
Например, в моей файловой системе Windows мой сайт rails находится по адресу:
C: /Code/Personal-Website
однако я запустил следующие команды в powershell для запуска моего сервера:
C:\Users\XXX XXX> cd C: /code/personal-website
C:\code\personal-website> rails s
Это несоответствие между случаем, когда Powershell считает, что он запускает сервер, и тем, где корневая папка документа сервера фактически находится в файловой системе, кажется, вызывает проблему, и обеспечение того, что ваш случай расположения Powershell совпадает с регистром каталогов в Windows, остановит его.
Ответ 8
Я получил ту же ошибку, что и выше, но это было не из-за проблемы. В итоге это произошло из-за комбинации вещей. У меня было два менеджера версий ruby - rvm и rbenv - и я использовал старую установку gem. Мне пришлось удалить rvm (Как удалить RVM (Ruby Version Manager) из моей системы?) и переустановить rbenv (brew переустановить rbenv) и обновить до последнего версия рубина. Затем мне пришлось обновить rubygems (gem update -system). Затем переустановили все драгоценные камни и перезагрузили, и все было исправлено.
По сути, мой рубиновый менеджер указывал на старую версию ruby и использовал устаревшую версию установщика gem (2.2.0). Возможно, вы сможете исправить ситуацию только с обновлением до rubygems.
Мне понадобилось полтора дня, чтобы решить эту проблему. Надеюсь, это сэкономит время и разочарование.
Ответ 9
Я начал получать то же самое недостающее вспомогательное сообщение при запуске тестов, хотя мое приложение работало нормально в режиме dev. И это началось сразу после того, как я успешно выполнил свои тесты, без каких-либо изменений в системе, о которых я знал. Попробовав предложение удалить прописные имена файлов с моего пути без успеха, я запустил rvm, в моем случае
rvm use [email protected]
bundle install
Проблема исчезла. Я подозреваю, что моя система перезагрузилась и начала использовать несовместимый модуль Ruby. Я новичок, который прокладывает себе путь через учебник по рельсам Майкла Хартла по OS X 10.10.3.
Ответ 10
Я также столкнулся с этой ошибкой. Все решения здесь не сработали, и я пробовал разные вещи. Здесь мое решение, которое может помочь и другим:
В моем пути к проекту была папка с мутацией гласных / "Umlaut" (ü, ö, ä и т.д.).
Поэтому я изменил это, и все сработало.
Ответ 11
На самом деле это не ошибка рубинов или Rails, поскольку это ошибка в OSX (IMHO), возникшая в результате решения, принятого много лет назад, для обеспечения совместимости с OS 8.0 (классический MacOS) и обеспечения лучшей совместимости с Windows FAT/NTFS. Это решение заключалось в том, чтобы реализовать HFS + с сохраняющей регистр, но без учета регистра схемы именования, в которой следующие пути эквивалентны:
/tmp/CASE_insensitive
/tmp/case_INSENSITIVE
Подробнее об этом вы можете прочитать в следующем сообщении quora:
Почему OS X выбирает файловую систему с учетом регистра, а не чувствительную к регистру?
Если вы когда-либо настраивали файловую систему HFS + для обеспечения нечувствительности к регистру (вы знаете, чтобы быть более совместимым с фактическими файловыми системами * nix), вы вполне можете столкнуться с программным обеспечением, которое просто ломается на OSX, потому что это программное обеспечение было несколько небрежно написано (IIRC, некоторые программы Adobe имели большие проблемы с HFS + с чувствительностью к регистру).
Попробуйте это в терминале OSX:
prompt>mkdir /tmp/CASE_insensitive
prompt>cd /tmp/case_INSENSITIVE
prompt>pwd
/tmp/case_INSENSITIVE
ИМХО, это очень испортилось. Теперь, если вы используете Pow в своей системе OSX, создайте символическую ссылку в каталоге ~/.pow
, чтобы указать на свои Rails приложение, будьте осторожны. Ошибочный ввод здесь приведет к ошибке, отмеченной OP. Простое удаление и переименование символической ссылки в соответствующем случае исправит это правильно.
Ответ 12
Я решил с помощью "пружинной остановки" в консоли.