2015-02-02 3 views
0

Я пытаюсь сделать что-то очень похожее на rspec's describe.Сделать доступным метод модуля без видимости

Скажем, у меня есть модуль в my_mod.rb

module MyMod 
    def say_hello(name) 
    puts "hello #{name}" 
    end 
end 

И я использую его в другой файл foo.rb

include MyMod # without the include it cannot find say_hello 

say_hello "world" 

Мой вопрос - как я могу получить эту работу, как RSpec, т.е. require - модуль должен сделать доступными методы, без необходимости делать MyMod.say_hello.

+0

Вы не можете. Rspec делает все 'include'ing для вас, но это все равно должно произойти. Если вы хотите сделать то, что делает Rspec, напишите специальную внешнюю программу. Вы заметите, что вы запускаете свои тесты с помощью 'rspec ', а не 'ruby . – meagar

ответ

0

Смените оригинал foo.rb, заменив include на extend. Таким образом, вы можете использовать say_hello "world"

Но, если вы действительно хотите использовать require, определить метод без модуля:

my_mod.rb:

def say_hello(name) 
    puts "hello #{name}" 
    end 

затем, в foo.rb:

require 'my_mod' 

say_hello "world" 
Смежные вопросы