Не удается вызвать метод модуля ruby - PullRequest
1 голос
/ 25 июля 2011

cat module1.rb =>

module Module1

    def add(a,b)
        return a+b
    end

    def subtract(a,b)
        return a-b
    end

end

cat call.rb =>

#!/home/user1/.rvm/rubies/ruby-1.9.2-p180/bin/ruby

include './Module1.rb

temp = add(5,2)
print temp
print "\n"

ruby ​​call.rb =>

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- Module1 (LoadError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from call.rb:3:in `<main>'

Кто-нибудь может это исправить?

Ответы [ 4 ]

4 голосов
/ 25 июля 2011

Поместите два файла в один каталог.Вызовите первый module1.rb и сделайте так, чтобы он выглядел точно так:

module Module1
  def add(a, b)
    return a + b
  end
  def subtract(a, b)
    return a - b
  end
end

Вызовите второй вызов call.rb и сделайте так, чтобы он выглядел именно так

require './module1.rb'
include Module1

temp = add(5,2)
print temp
print "\n"

В командной строкезапустить ruby call.rb.Вы должны увидеть результат 7.

2 голосов
/ 25 июля 2011

require загружает файл из $LOAD_PATH Руби. Если вы хотите загрузить файл относительно текущего файла, вам нужно использовать require_relative.

2 голосов
/ 25 июля 2011

Я предполагаю, что вы используете Ruby 1.9?

Тогда попробуйте

require_relative 'module1'
include Module1

temp = add(5,2)
puts temp

Это должно сделать это.

0 голосов
/ 25 июля 2011

Вы должны запросить файл перед включением.

require 'module1.rb'
include Module1

И убедитесь, что два файла находятся в одном каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...