[英]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.