2016-03-23 6 views
3

私は別のファイルのクラスを使用しようとしています。別のファイルのクラスをどのように使用しますか?

something.rb

class Something 
    def initialize 
    end 
    def getText 
    'Some example text' 
    end 
end 

another.rb

class Another 
end 

somethingVar = Something.new 
puts somethingVar.getText 

これは私にエラー私が間違っているのは何

/usr/bin/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /home/chris/RubymineProjects/untitled1/another.rb 
/home/chris/RubymineProjects/untitled1/another.rb:4:in `<top (required)>': uninitialized constant Something (NameError) 
    from -e:1:in `load' 
    from -e:1:in `<main>' 

を与えますか?

+0

これはレールプロジェクトですか?そうでない場合は、定義を含むファイルを使用する前にそれを要求する必要があります。 – BroiSatse

+0

@Chris、質問が答えられたと思ったら、その答えを受け入れたものとしてマークすることは良い考えです。 –

答えて

4

次のようなコードを使用する最も一般的な方法は、require経由です:

require 'something.rb' 

そのファイル内で定義されたクラスの使用を可能に..willが、ファイルはのいずれかで見つけることができる場合にのみ、 Rubyロードパス、またはインストールされた宝石に関連付けられています。

require_relative './something.rb'` 

:あなたが使用したいファイルへの相対パスをとり

あなたが特にテストや短期的なハッキングのために、自分自身を書きたい場合、あなたはおそらくrequire_relativeを使用したいと思います、 something.rbがanother.rbと同じディレクトリにある場合には動作します

Rubyでコードを再利用するさまざまな方法の詳細はhereです。

+1

require_relative works!ありがとう –

+0

自分自身を窒息させるために、ファイルシステムのルートから絶対パスを与えると、 'require'も動作します。しかし、最後のリンクを読んで本当に完全な理解を得てください。 –

+2

require/require_relativeの呼び出しで拡張機能を使用する必要はありません(通常の慣行です) –

5

something.rbが必要です。

require 'something.rb' 
+0

最初に私はそれをanother.rbの先頭に置くと次のエラーが出ると考えました: 'require 'の :このファイルをロードできません - 何か(LoadError) –

+0

' require'/something'' 。 –

+0

'.'(現在のディレクトリ)が' $ LOAD_PATH'にないので、これは動作しません。 'require_relative'は行く方法です。 – DMKE

0

注:以下の例に示すように、ファイル名が.rbの拡張子なしで表示されることは非常に一般的です。

他の人が述べたように、同じロードパスにある場合は、「何か」が必要です。

require 'something' 

またはrequire_relative './something'(ファイルへのパスを含める)。いないすべての拡張機能が.RBで終わるファイルを使用しているため

require_relative 'something' 

は「別によりよい見てから、拡張子を参照のこの裸の単語方法が必要である。具体的には、Cで書かれた拡張子が.soのかで終わるファイルに格納されています。 dll。プロセスを透過的に保つために、必要な拡張子が.rbファイルを使用するかどうかを知る手間を省くため、Rubyはbarewordを受け取り、自動ファイル検索を行い、可能なファイル名を試します。あなたが要求した内線番号に対応するファイルを見つけます。

詳細 - http://rubylearning.com/satishtalim/including_other_files_in_ruby.html

関連する問題