module MyModule
def set_my_value(val)
define_method :my_value do
val
end
end
def method1
my_value
end
def method2
"#{method1} is another method"
end
end
class MyClass
include MyModule
extend MyModule
@my_value = 'Method1'
set_my_value 'Method1'
end
вы можете сделать это так, rails интенсивно использует этот способ, и когда вы включаете модуль в класс, он становится родителем в иерархии наследования этого класса, поэтому вы не можете получить доступ к его переменной экземпляра напрямуюкак вы (в теле класса) для доступа к нему, вам нужно сделать из внутреннего метода
module MyModule
def method1
@my_value
end
def method2
"#{method1} is another method"
end
end
class MyClass
include MyModule
def initialize
@my_value = 'Method1'
end
end
puts MyClass.new().method2
то, что вы определили в своем коде, было переменной экземпляра класса, и это не переменная экземпляра, которую вы пытались изменить