【问题标题】:Call methods from a task in Rake files从 Rake 文件中的任务调用方法
【发布时间】:2013-09-15 13:05:57
【问题描述】:

可以调用与任务在同一个 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

【问题讨论】:

    标签: ruby-on-rails ruby methods rake


    【解决方案1】:

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

    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
    

    【讨论】:

      【解决方案2】:

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

      更好的做法是在单独的模块中定义方法,然后将该模块包含在您的 rake 文件中。 请参阅https://kevinjalbert.com/defined_methods-in-rake-tasks-you-re-gonna-have-a-bad-time/(解决方案 #3)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-28
        • 2012-06-04
        • 1970-01-01
        • 2015-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        相关资源
        最近更新 更多