NameError: ActionController constante no inicializado :: despachador
-
28-10-2019 - |
Pregunta
Encontró una publicación similar aquí Pero estoy ejecutando una Mac, por lo que la primera solución no se aplica exactamente y la segunda no funcionó para mí.
Ejecutando Mac OS 10.7.2, Xcode 4.2.1, RVM 1.10.1 usando Ruby 1.9.3p0 (revisión 2011-10-30 33570) [x86_64-darwin11.2.0
Creo que el problema se debe con RVM, sin embargo, no sé cómo solucionarlo
$ rails new dispatch_me
$ rails generate controller demo index
$ rails console
Loading development environment (Rails 3.2.0.rc2)
1.9.3-p0 :001 > env = {}
=> {}
1.9.3-p0 :002 > env['REQUEST_METHOD'] = 'GET'
=> "GET"
1.9.3-p0 :003 > env['PATH_INFO'] = '/demo/index'
=> "/demo/index"
1.9.3-p0 :004 > env['rack.input'] = StringIO.new
=> #<StringIO:0x007f946db0ece0>
1.9.3-p0 :005 > ActionController::Dispatcher.new.call(env).last.body
NameError: uninitialized constant ActionController::Dispatcher
from (irb):5
from /Users/rudolph9/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.0.rc2/lib/rails/commands/console.rb:47:in `start'
from /Users/rudolph9/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.0.rc2/lib/rails/commands/console.rb:8:in `start'
from /Users/rudolph9/.rvm/gems/ruby-1.9.3-p0/gems/railties- 3.2.0.rc2/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
1.9.3-p0 :006 >
Estoy siguiendo con el Los rieles de 3 vías
Una vez más, creo que el problema de RVM, sin embargo, no sé cómo solucionarlo.
ACTUALIZACIÓN: Tal vez no tenga algo que ver con RVM, ejecutando Native Ruby 1.8.7 y Rails 3.1.3 Me encuentro con el mismo problema:
>> ActionController::Dispatcher.new.call(env).last.body
NameError: uninitialized constant ActionController::Dispatcher
from (irb):6
Solución
Eche un vistazo a config.ru, en mi caso es:
> cat config.ru
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
run Wagn::Application
El archivo se generó para 3.0 con la aplicación Main :: y se cambió para nuestro nombre local.
Usé esto para mi aplicación (rack :: test):
def app
Wagn::Application
end
Tenga en cuenta que no hay '.Neo', ya que esta clase es una aplicación, no un middleware.
Otros consejos
Parece ActionController::Dispatcher
Simplemente no existe en la versión de los rieles que está utilizando. Si sigues un libro, generalmente es mejor seguir con la versión de Rails, el libro fue escrito.