Не могли бы вы помочь мне? Я разрабатываю камень, он имеет модуль:Как требовать модуль от gem для использования его классов без пространства имен?
#cherry/sdk/high_level.rb
module Cherry
module SDK
module HighLevel
autoload :CherryUser, 'cherry/sdk/high_level/user'
autoload :CherryCard, 'cherry/sdk/high_level/card'
end
end
end
Теперь я использую это так:
require "cherry/sdk/high_level"
user = Cherry::SDK::CherryUser.new
card = Cherry::SDK::CherryCard.new
Но мне нужен пользователь использовать мои классы гема без пространств имен, т.е.
require "cherry/sdk/high_level"
user = CherryUser.new
card = CherryCard.new
Как я могу это достичь? И что вы думаете о autoload? было обещано обесценить эту способность, но новые версии рубинов по-прежнему имеют автозагрузка метод.
Спасибо!
Спасибо за ваш ответ. Но могу ли я настроить свой камень, чтобы пользователь не мог использовать ** include **? Может ** включать ** автоматически выполняться в драгоценном камне? – Vasilina
вы можете использовать движок rails для этого: http://stackoverflow.com/questions/7066040/automatic-include-a-gem-in-a-controller, иначе я бы рекомендовал придерживаться хорошего старого поведения. – Esse
Большое спасибо! :) – Vasilina