Ich bin wirklich neu in Ruby. Und durch neue - weniger als 16 Stunden, aber mein Chef gab mir etwas Ruby Code hinzuzufügen. Ich fand jedoch, dass es eine riesige Datei war und überhaupt nicht modular, also beschloss ich, sie zu säubern. Jetzt, da ich es in mehrere Dateien/Klassen aufgeteilt habe (im Allgemeinen 1 Klasse pro Datei), habe ich Probleme, es zusammenzufügen, damit es wieder funktioniert. Ursprünglich war alles Teil derselben Klasse, also funktionierten die Anrufe, aber es sah hässlich aus und es brauchte einen ganzen Arbeitstag, um es herauszufinden. Ich möchte das für die Zukunft vermeiden, da dieser Code noch viel größer wird, bevor er fertig ist.Zugriff auf Instanzvariablen von einer Klasse innerhalb einer anderen Klasse
Mein Hauptproblem sieht wie folgt aus (vereinfacht, natürlich):
class TestDevice
def initialize
@loghash = { }
....
end
end
class Log
def self.msg(identifier, level, section, message)
...
@loghash[identifier] = { level => { section => message }}
...
end
end
device = TestDevice.new
Danach ruft es auf andere Klassenmethoden aus, und die Klassenmethoden verweisen zurück auf die Klasse Log für ihre Protokollierung Bedürfnisse. Natürlich muss Log auf "device.loghash" zugreifen, um die Informationen in diesem Hash zu protokollieren. Aber ich kann nicht herausfinden, wie ich das erreichen kann, wenn ich den Inhalt von "loghash" nicht an jede Methode weitergebe, so dass sie diese wiederum weitergeben und den Wert dann an den Ursprungspunkt zurückgeben und ihn dann protokollieren kann am Ende, aber das scheint wirklich ungeschickt und peinlich.
Ich hoffe, ich bin wirklich nur etwas fehlt.
Sollte sein "Dies ist effektiv, was attr_accessor hinter den Kulissen tut." –
Richtig du bist. Danke, dass du das verstanden hast. – Chuck