rails rake запускает lib / tasks / scrape.rake при запуске rake db: migrate - PullRequest
2 голосов
/ 13 марта 2011

У меня есть тривиальный скрипт рейка, который очищает веб-страницу. Это путь 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? Какие варианты у меня есть?

1 Ответ

4 голосов
/ 13 марта 2011

Не видя содержимого вашей scrape.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!)

Итак, проверьте это и дайте мне знать, если я далеко от базы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...