2015-06-16 2 views
0

Вот main.rb:Как запустить `require_relative` в цикле?

(1..10).each{|x| 
    require_relative 'script.rb' 
} 

Вот script.rb, который находится в том же каталоге:

p "HELLO WORLD" 

Когда я бегу main.rb, он печатает "привет мир" только один раз.

Почему? И как мне его распечатать один раз для цикла passthru?

+2

Не эксперт рубин, но я подозреваю, 'require_relative' предотвращает загрузку и тот же файл несколько раз. – neverendingqs

+0

@neverendingqs Похоже на это. Как это обойти? – Username

+2

Это кажется плохой идеей - что вы пытаетесь сделать? – neverendingqs

ответ

3

load позволяет повторно загрузку, require и require_relative не делают:

(1..10).each{|x| 
    load 'script.rb' 
} 
3

Переместить код, который вы хотите запустить в main.rb или определить метод внутри script.rb, так что вы можете вызвать его из main.rb.

Подробнее: How to reference a method in another Ruby code file?

Причина не использовать load в этом сценарии: When to use `require`, `load` or `autoload` in Ruby?

+0

Разумная вещь. – steenslag

Смежные вопросы