私はRubyモジュールの中にクラス全体を含めていました。どうやらこれは私がやるべきことではない。モジュールのポイントは、新しいクラスのメソッドとして含めることができる関数を格納することです。別ファイルのRubyクラスを含む
私はこれが嫌いです。他のファイルからアクセスできる別のファイルに保存したいクラスがあります。これどうやってするの?
ありがとうございました。
私はRubyモジュールの中にクラス全体を含めていました。どうやらこれは私がやるべきことではない。モジュールのポイントは、新しいクラスのメソッドとして含めることができる関数を格納することです。別ファイルのRubyクラスを含む
私はこれが嫌いです。他のファイルからアクセスできる別のファイルに保存したいクラスがあります。これどうやってするの?
ありがとうございました。
モジュールは、機能のためのホルダーと名前空間としての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.rb
、FooBar
- - Foo
>foo_bar.rb
など
あなたは、比較的、あなたが編集しているファイルにファイルを必要とするように、require_relative
を使用することができますルビーバージョン1.9の通り。
ありがとう、非常に役に立ちます。その最後の文を明確にすることはできますか?あなたはタイプミス(?)をしている可能性があります。 fooクラスがbar.rbに格納されている場合、bazcontroller.rbに 'foo'が必要ですか? foo.newはbazcontroller.rbで使用できますか? – user94154
Ruby 1.9では、このバージョンではコードが機能しないため、「require_relative」に関する情報を追加するといいでしょう。 – boutta
@boutta 1.9の説明をありがとうございます、これは私の問題を修正しました。 – DorkRawk
この投稿は、Ruby> = 1.9.2のときに上記の例で問題が発生した場合のrequire_relative式を明確にしています。 [Ruby require_relative example](http://stackoverflow.com/questions/3672586/what-is) -require-relative-in-ruby) – Dirk