ruby-on-rails - que - ruby on rails tutorial
Rails: AbstractController:: Helpers:: MissingHelperError-Falta el archivo de ayuda application_helper.rb_helper.rb (11)
Guía paso por paso:
En OSX, había cambiado mi nombre de usuario a Psy
desde psy
. Así que resolver el problema fue un dolor en el culo. Siguiendo estos pasos me ayudaron:
Ejecute
irb
y ejecute este comando en la carpeta de su proyecto:File.expand_path("./") # => "/Users/psy/code/rails_app"
Ahora salga de
irb
y ejecute este comando en su shell:$ pwd # => /Users/Psy/code/rails_app
Compara los dos y observa el directorio con la diferencia de casos, en este caso es
Psy
Renombra ese directorio a cualquier cosa, y luego renombralo a la carpeta original (usa
sudo
solo si es necesario)$ sudo mv /Users/Psy /Users/tmp $ sudo mv /Users/tmp /Users/Psy
¡No puedo encontrar ningún recurso que me haya ayudado en esto! Cuando intento ''rails s'' y voy a cualquier página de la aplicación; Me dispara esta página de error diciendo que faltan archivos de ayuda.
Creo que es local en mi computadora de escritorio porque hace poco trabajé en la aplicación de mi computadora portátil. Empujé desde la computadora portátil y la aplicación funciona bien en Heroku y se ejecuta localmente en esa máquina sin ningún problema. Agregué una función para cargar imágenes del logotipo de la compañía usando Carrierwave, Mini_Magick y Fog a Amazon S3.
Cosas que he probado hasta ahora: he eliminado la aplicación y git, la he vuelto a clonar en esta máquina. He intentado Brew desinstalar / instalar imagemagick e hice todos los conceptos básicos como la instalación de paquetes, rake db: migrate después de clonar la aplicación. Todavía no hay suerte ..
Aquí están los códigos de error que estoy recibiendo en la página y también el rastreo completo:
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
Traza completa
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''
Controlador de paginas
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
Comencé a recibir el mismo mensaje de ayuda faltante cuando ejecutaba pruebas, aunque mi aplicación funcionaba bien en modo dev. Y esto comenzó justo después de haber ejecutado mis pruebas con éxito, sin cambios en el sistema que conocía. Después de intentar la sugerencia de eliminar los nombres de archivo en mayúsculas de mi camino sin éxito, corrí rvm, en mi caso
rvm use [email protected]
bundle install
El problema se fue. Sospecho que mi sistema se reinició y comencé a usar un módulo de Ruby incompatible con el sistema. Soy un principiante que se abre camino a través del tutorial de Rails de Michael Hartl en OS X 10.10.3.
Descubrí que cambiar el nombre de la carpeta de los sitios funcionaba para mí como lo señaló Zubin. No hice el comando sudo.
mv sites sites1
mv sites1 sites
Esto funcionó para mí:
cd ~
mv sites tmpsites
mv tmpsites sites
También hice esto, pero no estoy seguro si fue requerido:
cd /
sudo ln -s Users users
Curiosamente, no puedo ver el enlace simbólico de los users
minúsculas, pero tanto ls /users
y ls /Users
funcionan.
Esto no es realmente un error de Ruby o Rails, ya que es una falla en OSX (IMHO) como resultado de una decisión de diseño tomada hace muchos años para mantener la compatibilidad con OS 8.0 (MacOS clásico) y proporcionar una mejor compatibilidad con Windows FAT / NTFS. Esa decisión fue implementar HFS + con un esquema de nomenclatura que conserva mayúsculas y minúsculas, pero las siguientes rutas son equivalentes:
/tmp/CASE_insensitive
/tmp/case_INSENSITIVE
Puedes leer más sobre esto en la siguiente publicación:
Si alguna vez configuró un sistema de archivos HFS + para imponer la falta de sensibilidad a los casos (ya sabe, para ser más compatible con los sistemas de archivos reales * nix), es muy posible que encuentre un software que se interrumpa en OSX porque ese software se ha escrito de forma descuidada para suponer que Insensibilidad a los casos (IIRC, algunos programas de Adobe tuvieron grandes problemas con HFS + con sensibilidad a los casos).
Intenta esto en el terminal OSX:
prompt>mkdir /tmp/CASE_insensitive
prompt>cd /tmp/case_INSENSITIVE
prompt>pwd
/tmp/case_INSENSITIVE
En mi humilde opinión, eso es bastante desordenado. Ahora, si está utilizando Pow en su sistema OSX, cuando cree el enlace simbólico en el directorio ~/.pow
para apuntar a su aplicación Rails, tenga cuidado con el caso. Si escribe mal el caso aquí, se producirá el error señalado por el OP. Simplemente eliminando y cambiando el nombre del enlace simbólico con el caso adecuado se solucionará esto correctamente.
Para mí, este problema se debió a que estaba usando GitBash en Windows y ejecutando mis pruebas desde allí. Parece una falta de coincidencia de mayúsculas y minúsculas en lo que bash espera frente a los nombres de carpetas reales. Lo ejecuté desde cmd y funcionó bien.
Recibí el mismo error que el anterior, pero no se debió a un problema de caso. Acabó por ser una combinación de cosas. Tenía dos gestores de versiones ruby instalados, rvm y rbenv, y estaba usando un antiguo instalador de gemas. Tuve que desinstalar rvm ( ¿Cómo puedo eliminar RVM (Ruby Version Manager) de mi sistema? ) Y reinstalar rbenv (brew reinstalar rbenv) y actualizar a la última versión de ruby. Luego tuve que actualizar rubygems (actualización de gema --sistema). Luego, reinstaló todas las gemas y un reinicio y todo fue arreglado.
Esencialmente, mi administrador de ruby estaba apuntando a una versión antigua de ruby y estaba usando una versión obsoleta del instalador de gemas (2.2.0). Es posible que puedas arreglar las cosas con solo una actualización a rubygems.
Me tomó un día y medio para resolver esto. Con suerte, esto le ahorrará a alguien algo de tiempo y frustración.
Si bien la respuesta que proporcionó Zubin funcionó para mí en mi máquina personal, simplemente me encontré con el mismo problema en una máquina de trabajo donde no era exactamente así. Había creado sitios como un directorio en minúsculas:
mkdir sites
El cambio de nombre con mayúscula lo ha arreglado.
mv sites Sites
Si está utilizando Windows y Powershell, este problema puede ocurrir al ejecutar rails s
o rails server
desde un directorio que tiene una cierta capitalización en el sistema de archivos, pero si ha cambiado al directorio en Powershell utilizando una mayúscula diferente.
Por ejemplo, en mi sistema de archivos de Windows, mi sitio de rieles se encuentra en:
C:/Code/Personal-Website
sin embargo, ejecuté los siguientes comandos en powershell para iniciar mi servidor:
C:/Users/XXX XXX> cd C:/code/personal-website
C:/code/personal-website> rails s
Esta discrepancia entre los casos donde Powershell cree que está iniciando el servidor y donde la raíz de documentos del servidor en realidad está en el sistema de archivos parece causar el problema, y garantizar que su caso de ubicación de Powershell coincida con el de los directorios en Windows lo detendrá.
Simplemente mover / renombrar la carpeta no me funcionó. Tuve que cambiar el nombre de la carpeta existente, crear una nueva carpeta con el mismo nombre y, luego, copiarle todo. Luego borré la carpeta antigua renombrada.
También me encontré con este error. Todas las soluciones aquí no funcionaron y probé diferentes cosas. Aquí está mi solución que podría ayudar a otros también:
En la ruta de mi proyecto había una carpeta con una mutación de vocal / "Umlaut" (ü, ö, ä, etc.). Así que cambié eso y todo funcionó.