Почему в Rails иногда требуется пакет, а иногда нет? - PullRequest
1 голос
/ 01 мая 2020

Я хотел бы знать yhy в Rails, иногда мне требуется пакет, а иногда нет? Пример:

class Visitor < ApplicationRecord
  validates :ipv4, allow_nil: true, format: { with: Resolv::IPv4::Regex, message: 'is an invalid IPv4' }
end

Если я не добавлю require 'resolv' в начало файла, у меня будут проблемы при вызове маршрута, который вызывает контроллер, использующий эту модель. Ошибка будет:

#<NameError: uninitialized constant #<Class:0x0000555f53c743d8>::Resolv>

Это кажется совершенно произвольным, хотя у меня сейчас должно быть какое-то правило, которого, конечно, я не знаю.

1 Ответ

3 голосов
/ 02 мая 2020

Это все о autoload в Rails. По умолчанию вам требуется библиотека lib, но некоторые гемы помещают автозагрузку в Rails, поэтому вам не нужно ее использовать при использовании.

https://www.rubyguides.com/2019/08/autoloading-in-ruby/

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