2009-06-26 16 views
32

私はRubyモジュールの中にクラス全体を含めていました。どうやらこれは私がやるべきことではない。モジュールのポイントは、新しいクラスのメソッドとして含めることができる関数を格納することです。別ファイルのRubyクラスを含む

私はこれが嫌いです。他のファイルからアクセスできる別のファイルに保存したいクラスがあります。これどうやってするの?

ありがとうございました。

+0

この投稿は、Ruby> = 1.9.2のときに上記の例で問題が発生した場合のrequire_relative式を明確にしています。 [Ruby require_relative example](http://stackoverflow.com/questions/3672586/what-is) -require-relative-in-ruby) – Dirk

答えて

55

モジュールは、機能のためのホルダーと名前空間としての2つの目的を果たします。モジュールでクラスを保持することは完全に受け入れられます。クラスを別のファイルに配置するには、クラスをいつものように定義してから、クラスを使用するファイルで、単にrequire 'name_of_file_with_class'を先頭に置きます。たとえば、foo.rbにクラスFooを定義した場合、bar.rbにはrequire 'foo'という行があります。あなたがRailsの中にある場合は、これらを置く

#file: bar.rb 
require 'foo' 

Foo.new 

...ファイルレイアウトの明確化

#file: foo.rb 
class Foo 
    def initialize 
    puts "foo" 
    end 
end 

あなたがRailsのを使用している場合、これは頻繁に含まは自動的

編集起こりますクラスはlib/であり、クラス名の小文字のアンダーバードバージョンのファイルには命名規則を使用します。 >foo.rbFooBar - - Foo>foo_bar.rbなど

あなたは、比較的、あなたが編集しているファイルにファイルを必要とするように、require_relativeを使用することができますルビーバージョン1.9の通り。

+0

ありがとう、非常に役に立ちます。その最後の文を明確にすることはできますか?あなたはタイプミス(?)をしている可能性があります。 fooクラスがbar.rbに格納されている場合、bazcontroller.rbに 'foo'が必要ですか? foo.newはbazcontroller.rbで使用できますか? – user94154

+9

Ruby 1.9では、このバージョンではコードが機能しないため、「require_relative」に関する情報を追加するといいでしょう。 – boutta

+2

@boutta 1.9の説明をありがとうございます、これは私の問題を修正しました。 – DorkRawk

関連する問題