【问题标题】:rails rake runs lib/tasks/scrape.rake when running rake db:migraterails rake 在运行 rake db:migrate 时运行 lib/tasks/scrape.rake
【发布时间】:2011-07-14 14:19:09
【问题描述】:

我有一个简单的 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 任务?我有什么选择?

【问题讨论】:

    标签: ruby-on-rails rake


    【解决方案1】:

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

    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 编写的!)

    所以,检查一下,如果我离基地很远,请告诉我。

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2012-11-23
      • 2013-03-08
      相关资源
      最近更新 更多