Rails: AbstractController::Helpers::MissingHelperError - Отсутствует вспомогательный файл application_helper.rb_helper.rb

Не могу найти ни одного ресурса, который бы помог мне в этом! Когда я пытаюсь "рельсы" и перейти на любую страницу приложения; это стреляет в меня эту страницу ошибки, говоря, что я пропускаю вспомогательные файлы.

Я думаю, что это локально на моем настольном компьютере, потому что я недавно сделал некоторую работу с приложением на моем ноутбуке. Я нажал с ноутбука, и приложение отлично работает на Heroku и работает локально на этой машине без проблем. Я добавил функцию загрузки логотипов компаний с помощью Carrierwave, Mini_Magick и Fog в Amazon S3.

Вещи, которые я до сих пор пробовал: я удалил приложение и скопировал его обратно на эту машину. Я попробовал Brew удалить / установить imagemagick и выполнил все основы, такие как пакетная установка, 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

14 ответов

Решение

Это сработало для меня:

cd ~
mv sites tmpsites
mv tmpsites sites

Я также сделал это, но не уверен, если это было необходимо:

cd /
sudo ln -s Users users

Как ни странно, я не вижу строчных users символическая ссылка, но оба ls /users а также ls /Users Работа.

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

Пошаговое руководство:

В OSX я сменил имя пользователя на Psy от psy, Таким образом, выяснение проблемы было болью в заднице. Следующие шаги помогли мне:

  1. Бежать irb и выполните эту команду в папке вашего проекта:

    File.expand_path("./")
    # => "/Users/psy/code/rails_app"
    
  2. Теперь выход irb и запустите эту команду в вашей оболочке:

    $ pwd
    # => /Users/Psy/code/rails_app
    
  3. Сравните два и обратите внимание на каталог с разницей в регистре, в данном случае это Psy

  4. Переименуйте этот каталог во что угодно, а затем переименуйте его обратно в исходную папку (используйте sudo только при необходимости)

    $ sudo mv /Users/Psy /Users/tmp
    $ sudo mv /Users/tmp /Users/Psy
    

В то время как ответ, который дал Зубин, сработал для меня на моей персональной машине, я столкнулся с той же проблемой на рабочей машине, где он не совсем. Я создал сайты в нижнем регистре:

mkdir sites 

Переименование с большой буквы исправлено.

mv sites Sites

Я обнаружил, что переименование только папки сайтов у меня работает так же, как указал Зубин. Я не делал команду sudo ln.

mv sites sites1
mv sites1 sites

Я получаю эту ошибку во время работы rails sв Windows PowerShell, но не в cmd. Я предлагаю использовать другой интерфейс командной строки.

Для меня эта проблема была вызвана тем, что я использовал GitBash в Windows и запускал свои тесты оттуда. Похоже, не соответствует регистру того, что ожидает bash, с фактическими именами папок. Запустил его из cmd и работал нормально.

Простое перемещение / переименование папки не работает для меня. Мне пришлось переименовать существующую папку, создать новую папку с тем же именем, а затем скопировать все в нее. Затем я удалил старую переименованную папку.

Если вы используете 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, остановит его.

На самом деле это не ошибка ruby ​​или Rails, так как это недостаток OSX (IMHO), возникший в результате решения, принятого много лет назад для поддержания совместимости с OS 8.0 (классическая MacOS) и обеспечения лучшей совместимости с Windows FAT/NTFS. Это решение состояло в том, чтобы реализовать HFS+ с сохраняющей регистр, но нечувствительной к регистру схемой именования, в которой следующие пути эквивалентны:

 /tmp/CASE_insensitive
 /tmp/case_INSENSITIVE

Вы можете прочитать больше об этом в следующем сообщении:

Почему 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. Простое удаление и переименование символической ссылки с соответствующим регистром исправит это правильно.

Я начал получать то же самое пропущенное вспомогательное сообщение при запуске тестов, хотя мое приложение работало нормально в режиме разработки. И это началось сразу после того, как я успешно выполнил свои тесты, без каких-либо системных изменений, о которых я знал. Попробовав предложение удалить заглавные имена файлов с моего пути без успеха, я запустил rvm, в моем случае

rvm use ruby-2.2.0@rails4.2
bundle install

Проблема ушла. Я подозреваю, что моя система перезагрузилась и начала использовать какой-то несовместимый системный модуль Ruby. Я новичок, работающий над учебником Майкла Хартла по OS X 10.10.3.

Я также столкнулся с этой ошибкой. Все решения здесь не сработали, и я попробовал разные вещи. Вот мое решение, которое может помочь и другим:

В пути моего проекта была папка с гласной мутацией / "Umlaut" (ü, ö, ä и т. Д.). Я изменил это, и все заработало.

Я получил эту ошибку от

rails g controller Name

Я просто удалил контроллер с помощью

rails d controller Name

Затем снова сгенерировал его со строчными буквами

rails g controller name

Я получил ту же ошибку, что и выше, но это не было связано с проблемой дела. Это закончилось тем, что произошло из-за комбинации вещей. У меня были установлены два менеджера версий 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.

Мне потребовалось полтора дня, чтобы решить эту проблему. Надеюсь, это сэкономит кому-то время и разочарование.

Другие вопросы по тегам