У меня есть грабли с довольно длинным определением. Я попытался взять довольно длинный набор инструкций и разделить их на функции следующим образом:
#lib/tasks/helpme.rake
require 'rake'
require 'rest-client'
require 'warbler'
task :helpme => :environment do
# some stuff
some_function("a","b")
end
# (MyCoolModel < ActiveRecord:Base is defined in app/models/my_cool_model.rb)
def some_function (p1,p2)
m=MyCoolModel.new
m.p1=p1
m.p2=p2
# 20 more lines of very cool code
end
Это не сработало, когда я запустил "rake helpme". Он жаловался, что MyCoolModel не был доступен.
Затем я попробовал следующее, зная, как в Ruby можно делать разные странные вещи:
#lib/tasks/helpme.rake
require 'rake'
require 'rest-client'
require 'warbler'
task :helpme => :environment do
# some stuff
# (MyCoolModel < ActiveRecord:Base is defined in app/models/my_cool_model.rb)
def some_function (p1,p2)
m=MyCoolModel.new
m.p1=p1
m.p2=p2
# 20 more lines of very cool code
end
some_function("a","b")
end
Когда я запускал "rake helpme", он работал просто отлично.
Мой вопрос: как я могу получить доступ к модельным классам в функции, вызываемой пользовательской задачей rake, без записи функции в коде кода задачи?