2012-04-09 1 views
2

Ich habe zwei Ruby-Dateien sagen A und B in bestimmten Ordner.Wie Klasse erforderlich, die im gleichen Verzeichnis in Ruby 1.9.x ist

Die Klasse wird ein Code wie folgt:

class A 
    def self.foo 
    puts "foo" 
    end 
end 

A.foo 

Die B-Code-Klasse ist wie folgt:

class B 
    def self.bar 
    puts "bar" 
    end 
end 

B.bar 
A.foo 

Wenn ich versuche, Klasse B-Datei auszuführen, sind die folgenden Fehler erhalten:

bar 
b.rb:10:in `<main>': uninitialized constant A (NameError) 

Ich möchte keine Module verwenden. Also, wie referenziere ich A.foo von Klasse B?

+0

Warum Sie nicht versuchen ‚a.rb‘ in b der Datei zu benötigen. – Vik

+0

ich müde, aber diesen Fehler erhalten - erfordern ': kann nicht laden solche Datei - a (LoadError) – diya

+0

wie benötigen Sie die Datei a in b. – Vik

Antwort

2

Ich weiß nicht, ob das Ihre Frage beantwortet, weil ich nicht völlig verstehe, was Ihre Absicht ist.

Ihr b.rb Skript ist nicht bekannt, die Klasse A von a.rb, Sie wissen, daher der Fehler. Es gibt mehrere Möglichkeiten, b.rb zu verwenden, a.rb zu verwenden.

  1. können Sie die Datei hinzufügen b.rb

    require 'a' 
    
  2. Sie das b.rb Skript wie folgt ausführen:

    ruby -r a.rb b.rb 
    

eine Randnotiz. In beiden Fällen wird der Code in a.rb

A.foo 

wird auch ausgeführt. Sie können nur das Code runnable machen, wenn a.rb direkt ausgeführt wird, indem Sie den Code umschließenden zulaufen:

if __FILE__ == $0 
     # code to run when a.rb is executed directly 
     A.foo 
    end 
+3

'require 'a'' lädt die Datei nicht, es sei denn, du platzierst' a.rb' in einen der '$ LOAD_PATH'-Ordner,' require'./A'' wird machen. –

+1

@NashBridges ..oder verwenden Sie require_relative in 1.9 – Ernest

+0

@Nash Bridges - Funktioniert wie ein Charme! Vielen Dank ... – diya

Verwandte Themen