Понимание «LoadError: Невозможно автоматически загрузить константу» - PullRequest
1 голос
/ 18 апреля 2020

Я вижу, что этот вопрос задавался несколько раз, но кажется, что ни одно из решений не работает.

Я периодически получаю эту проблему:

LoadError: Unable to autoload constant Directory::Apple::Listing, expected /my/path/lib/directory/apple/listing.rb

Но "ожидалось" "файл - это точно файл, который определяет константу?

## /my/path/lib/directory/apple/listing.rb

module Directory
  class Apple::Listing
    ...
  end
end

Папка lib включена в autoload_paths:

# application.rb

config.autoload_paths += %W(#{config.root}/lib)

Если я сделаю spring stop, она будет работать какое-то время, но потом я неизбежно снова увижу эту досадную ошибку. Чего мне не хватает?

1 Ответ

0 голосов
/ 18 апреля 2020

Определение (и повторное открытие) пространств имен и модулей с использованием явного вложения. Использование оператора разрешения области действия может привести к неожиданным постоянным поискам из-за лексической области видимости Ruby, которая зависит от вложенности модуля в точке определения.
- Руководство по стилю Ruby

# /lib/directory/apple/listing.rb
module Directory
  class Apple
    class Listing
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...