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 ?