Я не могу понять, что требуется в рубине - PullRequest
0 голосов
/ 24 ноября 2010

Я новичок в Ruby

MakModule.rb

module Display
  class Multiply
    def Multiply.mul(first, second)
      return first * second
    end
  end
end

MakRequire1.rb

require "Display"
puts Multiply.mul 5,6

MakRequire2.rb

require "MakModule.rb"
puts Multiply.mul 5,6

оба файла дают мне ошибку ниже

ruby: No such file or directory -- makRequire (LoadError)

Как мне исправить мой код?

Ответы [ 5 ]

4 голосов
/ 24 ноября 2010

Просто невозможно, чтобы код, который вы разместили здесь, генерировал это сообщение об ошибке. В сообщении об ошибке говорится, что вы пытались require файл с именем makRequire, но это имя файла нигде не отображается в коде, который вы опубликовали.

Без фактического кода, который генерирует фактическую ошибку, невозможно ответить на ваш вопрос. Однако вот несколько общих советов:

Всякий раз, когда компьютер говорит вам, что он не может что-то найти, в 99% случаев проблема заключается в том, что то, что компьютер сообщает, что не может найти, на самом деле не существует.

Итак, в этом случае компьютер сообщает вам, что не может найти файл с именем makRequire.rb, и наиболее вероятное объяснение этого заключается в том, что makRequire.rb на самом деле не существует. Итак, первое, что вам нужно проверить: существует ли makRequire.rb (обратите внимание на заглавные буквы и расширение файла) на самом деле? Потому что, если он не существует, причина, по которой компьютер не может его найти, должна быть достаточно очевидной.

В 99% остальных случаев проблема заключается в том, что то, что ищет компьютер , существует , но компьютер ищет в неправильном месте. Итак, после того, как вы убедились, что makRequire.rb на самом деле действительно существует, вы должны убедиться, что каталог, в котором находится файл, находится в $LOAD_PATH в Ruby, а если нет, вам нужно добавьте этот каталог в Ruby's $LOAD_PATH. В качестве альтернативы, если вы хотите require файл относительно пути к файлу, который требует, вам нужно использовать require_relative вместо require.

В-третьих, нужно проверить, имеет ли пользователь, владеющий процессом ruby, достаточные права доступа к файлу makRequire.rb, каталог, в котором он находится, и все его родительские каталоги.

4 голосов
/ 24 ноября 2010

Попробуйте это,

require File.join(File.dirname(__FILE__),'MarkModule')
1 голос
/ 18 июля 2011

Попробуйте require './MakModule', потому что . является текущим каталогом.

0 голосов
/ 24 ноября 2010

Вам может потребоваться файл, который находится в том же каталоге. Чтобы использовать модуль, вы обычно include модуль внутри определения класса. Поэтому вам никогда не потребуется Display, вам потребуется файл, содержащий Display (обычно без расширения .rb).

0 голосов
/ 24 ноября 2010
require 'MakModule'
...