Aplicación Rails simple: error no se puede visitar Integer

Estoy tratando de construir una aplicación simple Rails. Rails v3.2.22.5 (es un requisito). Lo estoy ejecutando con PostgreSQL. Sin embargo, cuando inicio el servidor, recibo el siguiente error cuando bash leer una publicación simple de la base de datos.

No se puede visitar Integer

El rastro me lleva al método de espectáculo a continuación. Más específicamente a la segunda línea. Soy muy nuevo en Rails y no tengo la menor idea de cómo solucionarlo. Busqué en la web ya sin éxito. Cualquier idea seria muy bienvenida.

def show @post = Post.find(params[:id]) respond_to do |format| format.html # show.html.erb format.json { render json: @post } end end 

Traza completa:

 arel (3.0.3) lib/arel/visitors/visitor.rb:25:in `rescue in visit' arel (3.0.3) lib/arel/visitors/visitor.rb:19:in `visit' arel (3.0.3) lib/arel/visitors/to_sql.rb:241:in `visit_Arel_Nodes_Limit' arel (3.0.3) lib/arel/visitors/visitor.rb:19:in `visit' arel (3.0.3) lib/arel/visitors/to_sql.rb:123:in `visit_Arel_Nodes_SelectStatement' arel (3.0.3) lib/arel/visitors/visitor.rb:19:in `visit' arel (3.0.3) lib/arel/visitors/visitor.rb:5:in `accept' arel (3.0.3) lib/arel/visitors/to_sql.rb:19:in `accept' activerecord (3.2.22.5) lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `to_sql' activerecord (3.2.22.5) lib/active_record/connection_adapters/abstract/query_cache.rb:60:in `select_all' activerecord (3.2.22.5) lib/active_record/querying.rb:38:in `block in find_by_sql' activerecord (3.2.22.5) lib/active_record/explain.rb:41:in `logging_query_plan' activerecord (3.2.22.5) lib/active_record/querying.rb:37:in `find_by_sql' activerecord (3.2.22.5) lib/active_record/relation.rb:171:in `exec_queries' activerecord (3.2.22.5) lib/active_record/relation.rb:160:in `block in to_a' activerecord (3.2.22.5) lib/active_record/explain.rb:34:in `logging_query_plan' activerecord (3.2.22.5) lib/active_record/relation.rb:159:in `to_a' activerecord (3.2.22.5) lib/active_record/relation/finder_methods.rb:381:in `find_first' activerecord (3.2.22.5) lib/active_record/relation/finder_methods.rb:122:in `first' app/controllers/posts_controller.rb:16:in `show' actionpack (3.2.22.5) lib/action_controller/metal/implicit_render.rb:4:in `send_action' actionpack (3.2.22.5) lib/abstract_controller/base.rb:167:in `process_action' actionpack (3.2.22.5) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (3.2.22.5) lib/abstract_controller/callbacks.rb:18:in `block in process_action' activesupport (3.2.22.5) lib/active_support/callbacks.rb:414:in `_run__2562463311931153568__process_action__1655262725222060869__callbacks' activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.22.5) lib/abstract_controller/callbacks.rb:17:in `process_action' actionpack (3.2.22.5) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (3.2.22.5) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' activesupport (3.2.22.5) lib/active_support/notifications.rb:123:in `block in instrument' activesupport (3.2.22.5) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (3.2.22.5) lib/active_support/notifications.rb:123:in `instrument' actionpack (3.2.22.5) lib/action_controller/metal/instrumentation.rb:29:in `process_action' actionpack (3.2.22.5) lib/action_controller/metal/params_wrapper.rb:207:in `process_action' activerecord (3.2.22.5) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (3.2.22.5) lib/abstract_controller/base.rb:121:in `process' actionpack (3.2.22.5) lib/abstract_controller/rendering.rb:46:in `process' actionpack (3.2.22.5) lib/action_controller/metal.rb:203:in `dispatch' actionpack (3.2.22.5) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' actionpack (3.2.22.5) lib/action_controller/metal.rb:246:in `block in action' actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:73:in `dispatch' actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:36:in `call' journey (1.0.4) lib/journey/router.rb:68:in `block in call' journey (1.0.4) lib/journey/router.rb:56:in `each' journey (1.0.4) lib/journey/router.rb:56:in `call' actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:608:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' rack (1.4.7) lib/rack/etag.rb:23:in `call' rack (1.4.7) lib/rack/conditionalget.rb:25:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/head.rb:14:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/params_parser.rb:21:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/flash.rb:242:in `call' rack (1.4.7) lib/rack/session/abstract/id.rb:210:in `context' rack (1.4.7) lib/rack/session/abstract/id.rb:205:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/cookies.rb:341:in `call' activerecord (3.2.22.5) lib/active_record/query_cache.rb:64:in `call' activerecord (3.2.22.5) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `_run__2325253408966325104__call__3112622970942194936__callbacks' activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.22.5) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/reloader.rb:65:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' railties (3.2.22.5) lib/rails/rack/logger.rb:32:in `call_app' railties (3.2.22.5) lib/rails/rack/logger.rb:16:in `block in call' activesupport (3.2.22.5) lib/active_support/tagged_logging.rb:22:in `tagged' railties (3.2.22.5) lib/rails/rack/logger.rb:16:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/request_id.rb:22:in `call' rack (1.4.7) lib/rack/methodoverride.rb:21:in `call' rack (1.4.7) lib/rack/runtime.rb:17:in `call' activesupport (3.2.22.5) lib/active_support/cache/strategy/local_cache.rb:72:in `call' rack (1.4.7) lib/rack/lock.rb:15:in `call' actionpack (3.2.22.5) lib/action_dispatch/middleware/static.rb:83:in `call' railties (3.2.22.5) lib/rails/engine.rb:484:in `call' railties (3.2.22.5) lib/rails/application.rb:231:in `call' rack (1.4.7) lib/rack/content_length.rb:14:in `call' railties (3.2.22.5) lib/rails/rack/log_tailer.rb:17:in `call' rack (1.4.7) lib/rack/handler/webrick.rb:59:in `service' /Users/luishreis/.rbenv/versions/2.4.1/lib/ruby/2.4.0/webrick/httpserver.rb:140:in `service' /Users/luishreis/.rbenv/versions/2.4.1/lib/ruby/2.4.0/webrick/httpserver.rb:96:in `run' /Users/luishreis/.rbenv/versions/2.4.1/lib/ruby/2.4.0/webrick/server.rb:290:in `block in start_thread' 

La versión de Ruby que está utilizando (2.4.1) no es compatible con la versión de Rails que está utilizando (3.2.22.5). Esa versión de Ruby requiere al menos Rails 5. Intenta cambiar a Ruby 2.3 o inferior. Puede usar un administrador de versiones de Ruby (es decir, rvm , rbenv o chruby ) para controlar qué Ruby se usa al iniciar su aplicación.

Editar

Acabo de notar que ya estás usando rbenv desde el rbenv de tu stack. Agregue un archivo .ruby-version al directorio de su aplicación que contiene la siguiente línea:

 2.3.4 

Una vez que vuelva a ingresar a ese directorio, confirme la versión a través de:

 $> ruby -v ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-darwin16] 

(o versión similar) antes de lanzar Rails.

Recibí este error ayer y creé una solución que debería hacer que funcione con Ruby 2.4 y Rails 3.2.

La confirmación de la que obtuve la idea es: https://github.com/rails/arel/commit/dc85a6e9c74942945ad696f5da4d82490a85b865

Solo incluye lo siguiente en tus inicializadores de Rails.

 module Arel module Visitors class DepthFirst < Arel::Visitors::Visitor alias :visit_Integer :terminal end class Dot < Arel::Visitors::Visitor alias :visit_Integer :visit_String end class ToSql < Arel::Visitors::Visitor alias :visit_Integer :literal end end end 

Para futuros Googlers. Tuve el mismo problema pero necesitaba aplicar una variante de la solución de Thomas Dziedzic.

Tengo ruby 2.5.1 y rails 4.2.10 funcionando en mi sistema.

Como se muestra en este compromiso, ToSql se cambió de Arel::Visitors::Visitor a Arel::Visitors::Reduce

Así que esta es mi solución actualizada. En un inicializador de Rails pon esto:

 module Arel module Visitors class DepthFirst < Arel::Visitors::Visitor alias :visit_Integer :terminal end class Dot < Arel::Visitors::Visitor alias :visit_Integer :visit_String end class ToSql < Arel::Visitors::Reduce alias :visit_Integer :literal end end end