しばらくの間、Rubyモジュール内にクラス全体を含めていました。明らかに、これは私がやるべきことではありません。モジュールのポイントは、次に、新しいクラスのメソッドとして含まれます。
これは欲しくありません。他のファイルからアクセスできる別のファイルに保持したいクラスがあります。これどうやってするの?
ありがとう。
モジュールは、関数のホルダーと名前空間としての二重の目的を果たします。クラスをモジュールに保持することは完全に受け入れられます。クラスを別のファイルに配置するには、通常どおりクラスを定義してから、クラスを使用するファイルで、require 'name_of_file_with_class'
を先頭に配置します。たとえば、foo.rb
でクラスFoo
を定義した場合、bar.rb
でrequire 'foo'
という行があります。
Railsを使用している場合、このインクルードは多くの場合自動的に行われます
編集:ファイルレイアウトの明確化
#file: foo.rb
class Foo
def initialize
puts "foo"
end
end
...
#file: bar.rb
require 'foo'
Foo.new
Railsを使用している場合は、これらのクラスをlib/
に配置し、クラス名の小文字の下線付きバージョンのファイルの命名規則を使用します。 Foo
-> foo.rb
、FooBar
-> foo_bar.rb
など.
Rubyバージョン1.9の時点では、require_relative
を使用して、編集中のファイルに対して相対的にファイルを要求できます。
ロードを使用することもできます。また、ファイルが同じディレクトリにある場合は、require relativeを使用します。さらに理解するためにこのリンクを読んでください: http://rubylearning.com/satishtalim/include_other_files_in_Ruby.html
Requireを使用する場合、文字列内は、Rubyのルートフォルダーにない限り、参照しているクラスのフルパス名を示します。