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

Я решил с помощью "пружинной остановки" в консоли.