Вызов методов для экземпляра без добавления префикса метода к имени экземпляра для каждого вызова - PullRequest
0 голосов
/ 09 февраля 2019

Есть ли способ вызвать несколько методов в одном экземпляре без необходимости ставить префикс каждого вызова метода в экземпляре?

logger = Logger.new(STDERR)
table_name = ENV['ec2_information'].split('/')[1]

discovery = Ec2_ddb_discovery.new(logger:, table:)
discovery.scan_ddb_table
discovery.collect_stale_items.each { |item|

1 Ответ

0 голосов
/ 09 февраля 2019

Как отметил Макс Плинер в своем комментарии, вы можете использовать instance_eval или, если вам нужно передать аргументы, вы можете использовать instance_exec .Обычно они используются для создания DSL , но также могут использоваться и так.

class Foo 
    def bar_one
        puts "hello from bar_one"
    end
    def bar_two
        puts "hello from bar_two"
    end
    def bar_three(arg)
        puts "hello from bar_three with #{arg}"
    end
end

Foo.new.instance_eval do  
    bar_one
    bar_two
    bar_three("local_argument")
end

Foo.new.instance_exec("passed_argument") do |arg| 
    bar_one
    bar_two
    bar_three(arg)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...