モジュールの別のクラスの中から設定変数にアクセスする必要があります。同じモジュールのクラス間でクラスインスタンス変数にアクセスするにはどうすればよいですか?
test.rbでは、client.rbからどのように設定値を取得できますか? @config
は私に初期化されていないvarを与えます。それは同じモジュールですが、別のクラスにあります。
configの新しいインスタンスを作成することをお勧めしますか?もしそうなら、run.rbを通して渡された引数をどのように取得するのですか?
または、これをすべて間違って構成しているか、attr_accessor
を使用していますか?
client.rb
module Cli
class Client
def initialize(config_file)
@config_file = config_file
@debug = false
end
def config
@config ||= Config.new(@config_file)
end
def startitup
Cli::Easy.test
end
end
end
config.rb
module Cli
class Config
def initialize(config_path)
@config_path = config_path
@config = {}
load
end
def load
begin
@config = YAML.load_file(@config_path)
rescue
nil
end
end
end
end
test.rb
module Cli
class Easy
def self.test
puts @config
end
end
end
run.rb
client = Cli::Client.new("path/to/my/config.yaml")
client.startitup
クラス外からインスタンス属性にアクセスする場合は、アクセサーを提供する必要があります。 –