2013-06-04 12 views
6

Ho la seguente struttura dei file:Come correggere questo errore: kernel_require.rb: 45: in `require ': impossibile caricare tale file?

  • execute.rb
  • lib
    • my_class.rb

Nel execute.rb Ho il codice sotto:

#!/usr/bin/ruby 

require 'lib/my_class' 

my_object= MyClass.new 

my_object.some_method 

E questo è il codice di my_class.rb:

class MyClass 
    def some_method 
     puts 'OK' 
    end 
end 

Così, ho provato eseguito l'execute.rb:

ruby execute.rb 

Ma ricevo questo errore:

/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 qualcuno mi aiuta? Apprezzerò qualsiasi aiuto. Grazie mille.

+4

Utilizzare 'require_relative' invece di' require'. Questo è stato cambiato in Ruby 1.9. – Dogbert

+0

@Dogbert grazie, questa correzione ha funzionato per me. – monteirobrena

+0

Ruby 2.1.7 ha funzionato per me –

risposta

7

Ho risolto il problema seguendo il suggerimento di @Dogbert.

Al codice execute.rb è necessario sostituire:

require 'lib/my_class' 

per:

require_relative 'lib/my_class' 
1

Ho avuto lo stesso problema. Puoi anche utilizzare load 'lib/my_class.rb' require_relative presuppone il suffisso .rb e quindi non devi scriverlo. il caricamento richiede l'intero nome completo del file.

Problemi correlati