Неинициализированная константа Ruby NameError - PullRequest
0 голосов
/ 24 августа 2009

У меня есть два файла ruby. Первый

require 'www/poster'

poster = Poster.new()

Второй ('www / poster.rb') -

require ...

class Poster ... end

Проблема в том, что когда я запускаю первый файл, я получаю сообщение об ошибке:

in `<main>': uninitialized constant Poster (NameError)

Но , если я заменю исходный код просто

require ...
class Poster

end

__END__
class Poster #original class here

все в порядке. Код работал нормально в Ruby 1.8.6, проблемы начались после обновления до 1.9.1p129 (версия 2009-05-12 23412) [i386-mswin32]. Есть ли обходной путь?

Ответы [ 2 ]

1 голос
/ 24 августа 2009

В вашем коде нет абсолютно ничего такого, что могло бы заставить его вести себя в Ruby 1.9 иначе, чем в Ruby 1.8. И действительно, когда я копирую и вставляю код, который вы разместили, в два файла, они работают точно так, как предполагается, во всех следующих конфигурациях:

  • MRI Ruby 1.8.6 (уровень обновления 2009-03-31 368) [i386-mingw32]
  • YARV Ruby 1.9.1p129 (версия 2009-05-12 23412) [i386-mingw32]
  • JRuby 1.4.0dev (ruby 1.8.7p174) (2009-08-24 6586) (Java HotSpot (TM), клиентская виртуальная машина 1.6.0_14-ea) [x86-java]
  • JRuby 1.4.0dev (ruby 1.9.1p0) (2009-08-24 6586) (Java HotSpot (TM) Клиент VM 1.6.0_14-ea) [x86-java]
0 голосов
/ 27 апреля 2012

Я получил эту ошибку

`<class:Employee>': uninitialized constant Employee::Datamapper (NameError)

при компиляции. Вот код

class Employee
  include Datamapper::Resource
  property :id,             Serial
....

Причиной ошибки было то, что я записал DataMapper строчными буквами 'm'

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