I am using Ruby 2.0 and I have two files: hello.rb
& assets/display.rb
.
hello.rb:
class Hello
def self.run_it(name)
ui = Display.new(name)
ui.say_hi
end
end
require_relative "assets/display"
Hello.run_it("Someone")
assets/display.rb:
class Hello::Display
def initialize(name = "World")
@name = name
end
def say_hi
puts "Hello #{@name}"
end
end
If in hello.rb I move require_relative "assets/display"
before class Hello
(1st line), ruby hello.rb
outputs an uninitialized constant
error. Why is that? What is the best practice when requiring external files and is require_relative
the correct method (vs require
and require "./some_file"
) in this short example ?