I moduli hanno un doppio scopo come supporto per funzioni e come spazio dei nomi. Mantenere le classi nei moduli è perfettamente accettabile. Per mettere una classe in un file separato, basta definire la classe come al solito e quindi nel file in cui si desidera utilizzare la classe, semplicemente inserire require 'name_of_file_with_class'
nella parte superiore. Ad esempio, se ho definito la classe Foo
in foo.rb
, in bar.rb
avrei la riga require 'foo'
.
Se si utilizza Rails, questo includono spesso avviene in automatico
Edit: chiarimento del layout di file
#file: foo.rb
class Foo
def initialize
puts "foo"
end
end
...
#file: bar.rb
require 'foo'
Foo.new
Se siete in Rails, ha messo questi classi in lib/
e utilizzare la convenzione di denominazione per i file di versione minuscola sottolineata del nome della classe, ad esempio Foo
->foo.rb
, FooBar
->foo_bar.rb
, ecc
Come di Ruby versione 1.9 è possibile utilizzare require_relative
, per richiedere i file relativamente al file che si sta modificando.
fonte
2009-06-26 19:20:25
Questo post chiarisce l'espressione require_relative in caso di problemi con l'esempio precedente quando su Ruby> = 1.9.2 [Ruby require_relative example] (http://stackoverflow.com/questions/3672586/what-is -require-relative-in-ruby) – Dirk