Ruby on rails 轨道不';我不知道如何构建任务

Ruby on rails 轨道不';我不知道如何构建任务,ruby-on-rails,ruby,rakefile,Ruby On Rails,Ruby,Rakefile,我正试图从网站上搜集数据。我正在从index.html.erb运行rake <% Article.run_rake("fetch_games") %> <% @games.each do |game| %> <% if !game.at_css("caption").nil? %> <%= game.at_css("caption").text %> <% else %>

我正试图从网站上搜集数据。我正在从index.html.erb运行rake

 <% Article.run_rake("fetch_games") %>
<% @games.each do |game| %>
        <% if !game.at_css("caption").nil? %>
          <%= game.at_css("caption").text %>
        <% else %>
          <%= 'No Games Sheduled' %>
          <% end %>
        <% end %>
当我从终端运行时,它会提取我所需要的。但当我试图通过rails服务器运行它时,它会给我以下错误:


我做错了什么?ruby/rails新手,顺便说一句,我们需要在运行它之前加载\u任务。你把那句话注释掉-

 load './lib/tasks/article_task.rake'
这样做-

  require 'rake'
  require 'rubygems'
  load './lib/tasks/article_task.rake'

  class Article < ActiveRecord::Base

    def self.run_rake(fetch_games)
      Rake::Task["fetch_games"].invoke
    end
  end
require'rake'
需要“rubygems”
加载“./lib/tasks/article_task.rake”
类文章
在运行之前,我们需要加载任务。你把那句话注释掉-

 load './lib/tasks/article_task.rake'
这样做-

  require 'rake'
  require 'rubygems'
  load './lib/tasks/article_task.rake'

  class Article < ActiveRecord::Base

    def self.run_rake(fetch_games)
      Rake::Task["fetch_games"].invoke
    end
  end
require'rake'
需要“rubygems”
加载“./lib/tasks/article_task.rake”
类文章
我认为此线程可以帮助:

显然,在调用任务之前,您必须调用类似的东西:

NameOfYourApp::Application.load_tasks

我认为这条线索可以帮助:

显然,在调用任务之前,您必须调用类似的东西:

NameOfYourApp::Application.load_tasks

您可以将代码移动到一个单独的单元中,并将其加载到模型中(如果需要,还可以加载Rake任务),而不必经历加载invoke或Rake任务所需的扭曲

modulegamefetcher
def提取
...
结束
结束
类文章

这也使得为
fetch
逻辑编写单元测试变得更容易。

您可以将代码移动到一个单独的单元中,并将其加载到模型中(如果需要,还可以加载Rake任务),而不是进行加载调用Rake任务所需的扭曲

modulegamefetcher
def提取
...
结束
结束
类文章

这也使得为
fetch
逻辑编写单元测试变得更容易。

我从rake文件转到了另一个方向。我在articles controller中定义了它,并在
index.html.erb
中调用了它。它现在显示在rails服务器中

文章\u controller.rb

require 'nokogiri'
require 'open-uri'

def index
    url = "http://espn.go.com/nba/schedule"
    data = Nokogiri::HTML(open(url))
    @games = data.css('.responsive-table-wrap')
end
index.html.erb

 <% Article.run_rake("fetch_games") %>
<% @games.each do |game| %>
        <% if !game.at_css("caption").nil? %>
          <%= game.at_css("caption").text %>
        <% else %>
          <%= 'No Games Sheduled' %>
          <% end %>
        <% end %>

我从rake文件转到了另一个方向。我在articles controller中定义了它,并在
index.html.erb
中调用了它。它现在显示在rails服务器中

文章\u controller.rb

require 'nokogiri'
require 'open-uri'

def index
    url = "http://espn.go.com/nba/schedule"
    data = Nokogiri::HTML(open(url))
    @games = data.css('.responsive-table-wrap')
end
index.html.erb

 <% Article.run_rake("fetch_games") %>
<% @games.each do |game| %>
        <% if !game.at_css("caption").nil? %>
          <%= game.at_css("caption").text %>
        <% else %>
          <%= 'No Games Sheduled' %>
          <% end %>
        <% end %>


先尝试了这个。新错误是,如果环境不可用,则不知道如何加载“环境”
@Lilspree。在force任务的任务文件中删除
环境
>>>>>任务:fetch_games doI这样做了,我甚至尝试加载环境,尽管它应该已经加载了。当我运行上面的答案时,我没有得到任何错误。我相信它正在运行,但只是没有显示。可能是因为我试图从
.html.erb
文件中显示它吗?请执行
而不是
以在视图文件中显示。请先尝试此操作。新错误是,如果环境不可用,则不知道如何加载“环境”
@Lilspree。在force任务的任务文件中删除
环境
>>>>>任务:fetch_games doI这样做了,我甚至尝试加载环境,尽管它应该已经加载了。当我运行上面的答案时,我没有得到任何错误。我相信它正在运行,但只是没有显示。这可能是因为我试图从
.html.erb
文件中显示它吗?请执行
而不是
以在视图文件中显示。这样会加载每个任务,我只想加载一个特定的任务,加载每个任务的
load./lib/tasks/article\u task.rake'
,我只想用
load./lib/tasks/article\u task.rake'