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
, Таким образом, выяснение проблемы было болью в заднице. Следующие шаги помогли мне:
Бежать
irb
и выполните эту команду в папке вашего проекта:File.expand_path("./") # => "/Users/psy/code/rails_app"
Теперь выход
irb
и запустите эту команду в вашей оболочке:$ pwd # => /Users/Psy/code/rails_app
Сравните два и обратите внимание на каталог с разницей в регистре, в данном случае это
Psy
Переименуйте этот каталог во что угодно, а затем переименуйте его обратно в исходную папку (используйте
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.
Мне потребовалось полтора дня, чтобы решить эту проблему. Надеюсь, это сэкономит кому-то время и разочарование.