Ruby Refinement Import Dynamic Methods

[Solved] Ruby Refinement Import Dynamic Methods | Ruby - Code Explorer | yomemimo.com
Question : ruby refinement import dynamic methods

Answered by : mateusz-drewniak

module DefineMethodModule 5.times do |i| # Methods defined with `define_method` or `define_singleton_method` # do not count as methods defined in Ruby code. # # As such they can't be imported in Refinements! define_method :"define_method_#{i}" do puts "its me, the new define_method_#{i}!" end end
end
module StringEvalModule 5.times do |i| # The only way to import dynamically generated methods # to Refinements is to construct a String with Ruby code # that defines the method and pass it to `eval` or `instance_eval` eval <<~RUBY	def string_eval_#{i}	puts "its me, the new string_eval_#{i}!" end RUBY end
end
module SomeRefinement refine String do # import_methods DefineMethodModule # the line above would result in an error #=> in `import_methods': Can't import method which is not defined with Ruby code import_methods StringEvalModule end
end
using SomeRefinement
string = ""
string.string_eval_3 #=> its me, the new string_eval_3!

Source : | Last Update : Thu, 16 Jun 22

Answers related to ruby refinement import dynamic methods

Code Explorer Popular Question For Ruby