Ruby on rails 从Rake文件中的任务调用方法

Ruby on rails 从Rake文件中的任务调用方法,ruby-on-rails,ruby,methods,rake,Ruby On Rails,Ruby,Methods,Rake,是否可以调用与任务位于同一rake文件中的方法?在下面的代码中,您可以看到我有一个方法调用get_search_url,它将被分配给url namespace :populate do desc "ETC" task :db => :environment do Report.where(link: "").each do |word| url = get_search_url(word.name) doc = Nokogiri::HTML(ope

是否可以调用与任务位于同一rake文件中的方法?在下面的代码中,您可以看到我有一个方法调用get_search_url,它将被分配给url

namespace :populate do
desc "ETC"
task :db => :environment do

    Report.where(link: "").each do |word|
        url = get_search_url(word.name)
        doc = Nokogiri::HTML(open(url))
        word.update_columns(link: link)
    end
end

def get_search_url(keyword)
    return "URL/keyword"
end

end

是的,这是绝对可能的。只需在名称空间之后定义这些方法;)


但是,如果在两个不同的rake任务中定义相同的方法,则在运行rake时,它们都将被全局加载,并且其中一个方法定义将被另一个重新定义/覆盖

更好的做法是在单独的模块中定义方法,然后将该模块包括在rake文件中。 见(解决方案3)

namespace :populate do
desc "ETC"
task :db => :environment do

    Report.where(link: "").each do |word|
        url = get_search_url(word.name)
        doc = Nokogiri::HTML(open(url))
        word.update_columns(link: link)
    end
end

end

def get_search_url(keyword)
    return "URL/keyword"
end