Где определены задачи рейка?
в недавно созданном проекте Rails (сгенерированном rails someName), можно запустить некоторые "по умолчанию" грабли задачи, такие как:
rake testrake db:migrate- etc
вопрос в том, где эти задачи описываются? Значение по умолчанию Rakefile не имеет всех этих задач.
кроме того, я проверил некоторые проекты, которые используют rspec и я могу запустить rake spec для выполнения всех тестов. Где же это spec цель определились?
7 ответов:
Rake задачи автоматически загружаются из структуры папок
lib/tasks/*.rakeкогда мы говорим о задаче db: migrate например, она находится внутри rails gem в
lib/tasks/databases.rake
Если под описанным вы подразумеваете определенный, rake-W-ваш друг. Пример:
$ rake -W db:create=>
rake db:create /path/to/ruby/gems/1.9.1/gems/activerecord-3.1.11/lib/active_record/railties/databases.rake:39:in `block in <top (required)>'только что узнал сегодня :)
чтобы найти конкретные файлы и номера строк, в которых определена и/или изменена задача, выполните следующие действия:
запустите консоль rails:
rails cзатем выполните следующие команды:
require 'rake' Rake::TaskManager.record_task_metadata=true Rake.application.load 'Rakefile' tsk = Rake.application.tasks.each.find {|t| t.name =='my_task_name'} tsk.locationsграбли в основном могут отслеживать местоположения внутри и имеет отличный метод, чтобы показать их по запросу. Приведенный выше код в основном загружает rake, сообщает Rake отслеживать местоположения файлов, загружает Rakefile (и все другие включенные), находит рассматриваемую задачу и вызывает метод расположения на нем.
из комментария sameers, для rake v 10.1.0 и, возможно, более старых версий rake вам, возможно, придется позвонить: ООО "ТСК".действия вместо ООО "ТСК".локации
вы не указали, какую версию rails вы используете, но в 3.0.7
dbзадачи находятся в драгоценном камне ActiveRecord вlib/active_record/railties/databases.rakeобновление:
начиная с версии rails 3.2.7, задачи по-прежнему находятся там, где я указал выше.
в рельсы 3 в
railtiesgem определяет множество задач рейка.railties-3.2.5/lib/rails/tasks/annotations.rake railties-3.2.5/lib/rails/tasks/documentation.rake railties-3.2.5/lib/rails/tasks/engine.rake railties-3.2.5/lib/rails/tasks/framework.rake railties-3.2.5/lib/rails/tasks/log.rake railties-3.2.5/lib/rails/tasks/middleware.rake railties-3.2.5/lib/rails/tasks/misc.rake railties-3.2.5/lib/rails/tasks/routes.rake railties-3.2.5/lib/rails/tasks/statistics.rake railties-3.2.5/lib/rails/tasks/tmp.rake railties-3.2.5/lib/rails/test_unit/testing.rakeесли
$EDITORнастроен, вы можете легко увидеть их самостоятельно сopen_gemgem:gem install open_gem gem open railties
чтобы перечислить все задачи:
rake -PТак как многие задачи исходят от драгоценных камней, которые вы устанавливаете, трудно узнать, какие из них добавлены...
проект, который вы проверили, вероятно, использует rspec-rails камень. Этот камень определяет
specзадач. Вы можете увидеть исходный код здесь:https://github.com/rspec/rspec-rails/blob/master/lib/rspec/rails/tasks/rspec.rake
Comments