diff --git a/libraries/choregraphie.rb b/libraries/choregraphie.rb index bb57211..d9bb643 100644 --- a/libraries/choregraphie.rb +++ b/libraries/choregraphie.rb @@ -44,10 +44,11 @@ def initialize(name, &block) # read all available primitives and make them available with a method # using their name. It allows to call `check_file '/tmp/titi'` to # instantiate the CheckFile primitive + delegated_args = RUBY_VERSION.to_i < 3 ? '*args, &block' : '*args, **kwargs, &block' Primitive.all.each do |klass| instance_eval <<-METHOD, __FILE__, __LINE__ + 1 - def #{klass.primitive_name}(*args, &block) - primitive = ::#{klass}.new(*args, &block) + def #{klass.primitive_name}(#{delegated_args}) + primitive = ::#{klass}.new(#{delegated_args}) @primitives << primitive primitive.register(self) end @@ -75,8 +76,14 @@ def #{klass.primitive_name}(*args, &block) instance_eval(&block) end - def method_missing(method, *args, &block) # rubocop:disable Style/MissingRespondToMissing - @self_before_instance_eval.send method, *args, &block + if RUBY_VERSION.to_i < 3 + def method_missing(method, *args, &block) # rubocop:disable Style/MissingRespondToMissing + @self_before_instance_eval.send method, *args, &block + end + else + def method_missing(method, *args, **kwargs, &block) # rubocop:disable Style/MissingRespondToMissing + @self_before_instance_eval.send method, *args, **kwargs, &block + end end def cleanup_block_name(resource_name)