2013-06-04 15 views
6

Mam następującą strukturę plików:Jak naprawić ten błąd: kernel_require.rb: 45: w `require ': nie można załadować takiego pliku?

  • execute.rb
  • lib
    • my_class.rb

W execute.rb Mam kodu poniżej:

#!/usr/bin/ruby 

require 'lib/my_class' 

my_object= MyClass.new 

my_object.some_method 

I to jest kod my_class.rb:

class MyClass 
    def some_method 
     puts 'OK' 
    end 
end 

Tak, próbowałem uruchomić execute.rb:

ruby execute.rb 

Ale otrzymuję ten błąd:

/home/vagrant/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- lib/my_class (LoadError) 
    from /home/vagrant/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
    from execute.rb:3:in `<main>' 

Can ktoś mi pomoże? Docenię każdą pomoc. Wielkie dzięki.

+4

Wykorzystanie 'require_relative' zamiast' require'. Zostało to zmienione w Rubim 1.9. – Dogbert

+0

@Dogbert dzięki, ta poprawka działała dla mnie. – monteirobrena

+0

Ruby 2.1.7 pracował dla mnie –

Odpowiedz

7

to naprawić po nutą @Dogbert.

W kodzie execute.rb trzeba wymienić:

require 'lib/my_class' 

dla:

require_relative 'lib/my_class' 
1

miałem ten sam problem. Możesz także użyć polecenia load 'lib/my_class.rb' require_relative, które zakłada przyrostek .rb, więc nie musisz go zapisywać. load wymaga pełnej pełnej nazwy pliku.

Powiązane problemy