Подтвердить что ты не робот

Где определены задачи рейка?

В недавно созданном проекте Rails (сгенерированном rails someName) можно выполнить некоторые "дефолтные" задачи рейка, например:

  • rake test
  • rake db:migrate
  • и т.д.

Вопрос в том, где описываются эти задачи? По умолчанию Rakefile не все эти задачи.

Кроме того, я проверил некоторый проект, который использует rspec, и я могу запустить rake spec для запуска всех тестов. Где определена цель spec?

4b9b3361

Ответ 1

Задачи рейка автоматически загружаются из структуры папок lib/tasks/*.rake

Когда мы говорим о задаче db: например, migrate, она находится в пределах rails gem в lib/tasks/databases.rake

Итак, для конкретного проекта вы всегда будете иметь задачи в структуре папок проекта, а также все задачи в указанных драгоценных камнях.

Ответ 2

Если по описанию вы имеете в виду определенный, 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)>'

Просто нашел это сегодня:)

Ответ 3

Чтобы найти конкретные файлы и номера строк, где задана и/или изменена задача, сделайте следующее:

Запустите консоль рельсов:

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 (и все остальные включенные), находит нужную задачу и вызывает метод местоположений на нем.

Из комментариев одинакового пользователя, для rake v 10.1.0 и, возможно, более старых версий рейка вам может потребоваться:   tsk.actions вместо   tsk.locations

Ответ 4

Вы не указали, какую версию рельсов вы используете, но в 3.0.7 задачи db находятся в драгоценности Gem в Active Directory,

lib/active_record/railties/databases.rake

Обновление:

Как и у рельсов версии 3.2.7, задачи все еще существуют, о чем я говорил выше.

Ответ 5

В Rails 3 камень railties определяет множество задач рейка.

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_gem:

gem install open_gem
gem open railties

Ответ 7

Чтобы перечислить все задачи:

rake -P

Поскольку многие задачи исходят от камней, вы устанавливаете их трудно, чтобы узнать, какие из них добавлены...