Мне нужно получить доступ к некоторым функциям в некоторых закрытых методах в классе Ruby, который подклассифицирован из Sinatra :: Base.
Определение класса начинается следующим образом:
class Geminabox < Sinatra::Base
начинаетсяс рядом блоков кода, таких как:
get '/' do
@gems = load_gems
@index_gems = index_gems(@gems)
erb :index
end
, где «load_gems» и «index_gems» являются частными методами, определенными позже в том же классе.
Однако, если я загружаю этот класс в консоль irb и создаю экземпляр, подобный этому:
g=Geminabox.new
, а затем пытаюсь просмотреть закрытые методы, я получаю это:
> 2.2.1 :005 > g.private_methods(false)
=> [:initialize]
> 2.2.1 :006 >
здесь нет «load_gems», нет «index_gems» и т. Д., И т. Д., И я не могу вызвать ни одного из них с помощью «send»:
2.2.1 :007 > g.send(:load_gems)
NoMethodError: undefined method `load_gems' for #<Geminabox app_file="/apps/geminabox/lib/geminabox.rb">
from (irb):7
from /usr/local/rvm/rubies/ruby-2.2.1/bin/irb:11:in `<main>'
2.2.1 :008 >
Я не понимаю, почемуи я надеюсь, что кто-то может просветить меня.