Я моделирую веб-приложение, где вы можете перейти на другую страницу приложения, щелкнув ссылку. Я решил сделать что-то вроде этого:Неинициализированная постоянная ошибка в скриптах Ruby
файл C:/Sandbox/common_page.rb
:
require_relative "./pageA"
require_relative "./pageB"
require_relative "./pageC"
require_relative "./pageD"
class CommonPage
def pageA
# click_pageA_link
pageA.new
end
def pageB
# click_pageB_link
pageB.new
end
def pageC
# click_pageC_link
pageC.new
end
def pageD
# click_pageD_link
pageD.new
end
# and so on for other pages..
end
файл C:/Sandbox/pageA.rb
:
require_relative "./common_page"
class PageA < CommonPage
def pageA
self
end
end
файл :
require_relative "./common_page"
class PageB < CommonPage
def pageB
self
end
end
Аналогичный код будет представлен для классов, представляющих другие страницы. Если я запускаю файл C:/Sandbox/test.rb
с этим кодом:
require_relative "./pageA"
pA = PageA.new
Я получаю эту ошибку:
C:/Sandbox/pageB.rb:2:in `<top (required)>': uninitialized constant CommonPage (NameError)
from C:/Sandbox/common_page.rb:2:in `require_relative'
from C:/Sandbox/common_page.rb:2:in `<top (required)>'
from C:/Sandbox/pageA.rb:1:in `require_relative'
from C:/Sandbox/pageA.rb:1:in `<top (required)>'
from C:/Sandbox/test.rb:1:in `require_relative'
from C:/Sandbox/test.rb:1:in `<main>'
Похожие ошибки выскакивает также, когда я пытаюсь создать экземпляры других классов. Может ли кто-нибудь объяснить, что здесь происходит и как избежать этой проблемы?
Что называется «циклическая зависимость». –
@ Спасибо за объяснение! Является ли циркулярной ссылкой, которую я должен избегать в моем дизайне? Есть ли другой/лучший способ достичь того, что я хотел? – tom