Как отличить классы с одинаковыми именами, определенные в разных драгоценных камнях? - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть два драгоценных камня, PDF-ридер и оригами.Каждый драгоценный камень имеет модуль под названием PDF.Когда я вызываю их в следующем порядке,

# Importing first gem
requires 'pdf/reader'

# Second gem
requires origami
include Origami

PDF::Reader.new(dir) # (first gem)
PDF.read dir # (second gem) #>> undefined method 'read' for PDF:Module (NoMethodError)

первый камень не имеет проблем, но когда я добираюсь до второго, я получаю ошибку, утверждая, что pdf не имеет readметод.Но если я сначала импортирую «оригами», а затем «pdf / reader», я получаю сообщение об ошибке:

PDF is not a module (TypeError)

Руби запутывается в том, какой драгоценный камень я вызываю.

Как мне указатьчто я говорю о конкретном первом или втором драгоценном камне?

1 Ответ

0 голосов
/ 05 декабря 2018

В вашем конкретном примере include Origami не является необходимым, я не знаю, почему они добавили этот пример в свои README.

require 'pdf/reader'
require 'origami'

PDF::Reader.new(dir) # (first gem)
Origami::PDF.read dir # (second gem)

Иногда может быть возможно сделать что-то вроде:

require 'pdf/reader'

PDFReader = PDF::Reader

require 'origami'
include Origami

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