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 ?
 
     
     
    