NameError: неинициализированная константа ActionController :: Dispatcher - PullRequest
1 голос
/ 14 января 2012

Нашел похожий пост здесь , но я работаю на Mac, поэтому первое решение не совсем подходит, а второе не работает для меня.

Запуск Mac OS 10.7.2, Xcode 4.2.1, rvm 1.10.1 с использованием ruby ​​1.9.3p0 (редакция 2011-10-30 33570) [x86_64-darwin11.2.0]

Я считаю, что проблема связана с rvm, однако я не знаю, как ее исправить

$ 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 > 

Я следую за The Rails 3 Way

Опять же, я считаю, что проблема связана с rvm, однако я не знаю, как это исправить?

UPDATE: Может быть, это не имеет никакого отношения к rvm, работает нативный Ruby 1.8.7 и Rails 3.1.3, я сталкиваюсь с той же проблемой:

>> ActionController::Dispatcher.new.call(env).last.body
NameError: uninitialized constant ActionController::Dispatcher
    from (irb):6

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Взгляните на config.ru, в моем случае это:

> 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

Файл был сгенерирован для 3.0 с Main :: Application и был изменен на наше локальное имя.

Я использовал это для своего приложения (Rack :: Test):

def app
  Wagn::Application
end

Обратите внимание, что '.new' не существует, поскольку этот класс является приложением, а не промежуточным программным обеспечением.

1 голос
/ 14 января 2012

Похоже, ActionController::Dispatcher просто не существует в используемой вами версии направляющих.Если вы читаете книгу, обычно лучше придерживаться версии Rails, для которой она написана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...