繁体   English   中英

在运行rake db:migrate时,rails rake运行lib / tasks / scrape.rake

[英]rails rake runs lib/tasks/scrape.rake when running rake db:migrate

我有一个琐碎的rake脚本,可以抓取一个网页。 它的路径是lib / tasks / scrape.rake。

dan@snowcrash:~/snowcrash$ ls lib/tasks/
scrape.rake

我在db / migrate中也有一些数据库迁移脚本:

dan@snowcrash:~/snowcrash$ ls db/migrate/
20110307213515_create_questions.rb
20110310010000_create_answers.rb
20110313191820_add_question_id_to_answers.rb

问题是当我运行rake db:migrate时。 它似乎也运行了我的lib / tasks / scrape.rake任务:

dan@snowcrash:~/snowcrash$ rake db:migrate
(in /home/dan/snowcrash)
Fetched document: http://www.baidu.com/s?wd=love+me
\t Content Type: text/html\n
\t Charset: gbk\n
\t Content-Encoding: \n
\t Last Modified: \n\n
==  AddQuestionIdToAnswers: migrating =========================================
-- add_column("questions", "answer_id", :integer)
   -> 0.4923s
-- add_index("questions", "answer_id")
   -> 0.4954s
==  AddQuestionIdToAnswers: migrated (0.9881s) ================================

我进行了一些谷歌搜索,并找到了此文档: http : //jasonseifer.com/2010/04/06/rake-tutorial 他说:

Rails将自动在lib / tasks中拾取任务。

如何使“ rake db:migrate”不运行其他rake任务? 我有什么选择?

如果没有看到您scrape.rake任务的内容,就很难确定发生了什么,但是我猜测是您的scrape任务的功能实际上并没有包含在一个任务中。 例如,这是一个适当的耙任务:

desc "Output something on the command line"
task :output_stuff do
  puts "I'm outputting stuff!"
end

相反,如果您的.rake文件的内容仅仅是:

puts "I'm outputting stuff!"

然后,当Rails加载您的rake任务时,代码将立即执行(Rake任务毕竟是用Ruby编写的!)

因此,请检查一下,并让我知道我是否偏离标准。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM