Ruby on rails 轨道不';我不知道如何构建任务
我正试图从网站上搜集数据。我正在从index.html.erb运行rakeRuby 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 %>
<% 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'