2013-05-08 2 views
0

У меня есть кусок кода с командами. Я хочу сохранить больше команд в отдельном файле и вытащить их в основной. Таким образом, мой основной файл может быть обновлен без потери каких-либо пользовательских команд. Как я могу это сделать?Включая команды из отдельного файла Ruby

{ 
class myClass() 

#commands 
listen_for /what is your name/i do 

    say "my name is mud" 

end 

## Insert Custom.rb here ## 
# Everything in the custom rb file is just ike the "listen_for" command above 

end 
} 

ответ

2

answe выше, не будет работать в этом случае, потому что нет ни одного метода listen_for, определенные в файле custom.rb

обертка, что вы имеете в custom.rb в модуле, как

module Foo 
    # commands 
end 

введите ваш файл custom.rb в верхней части вашего скрипта и включите его в свой класс:

require_relative './custom.rb' 

class myClass() 
    include Foo 
    # code here 
end 

Это новая попытка

Удалите module обертку в listen_for команд, и вместо того, чтобы просто перечислить их в custom.rb, как вы могли бы сделать внутри основного определения класса. И в вашем основном классе, прочитайте и оцените его, как это:

class myClass() 
    eval(File.read('./custom.rb')) 
    # code here 
end 
+0

0 0 0 так как я включаю больше команд listen_for в файл custom.rb, я получаю ошибку undefined method "listen_for" – SeeleyBoothe

+1

Что вы подразумеваете под командами "include more listen_for"? Можете ли вы изменить свой вопрос и указать, как выглядят ваши файлы и какова ошибка? – fotanus

+0

мой класс в точности как выше. Я работаю с siri proxy. listen_for - это команда, которую он принимает. Это главный файл siriproxy.rb. Что я хочу сделать, это kkep пользователь от редактирования этого файла. Поэтому я хочу, чтобы пользователь поместил все команды «listen_for» в отдельный файл и включил его. Я включил его в предложение fontanus. Но теперь я сталкиваюсь с неопределенным методом «listen_for», когда его втягивают. – SeeleyBoothe

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