Rake: Как переслать параметры на вызовы Rake для детей? - PullRequest
0 голосов
/ 01 сентября 2011

Итак, в моей команде rake, когда я делаю --trace, она делает это только для команды, которую я выполняю вручную, и ни одна из команд rake, которые выполняет пользовательский rake.

Команда My Rake:

namespace :db do
  task :regenesis do
    #because of how devestating this command could be, it's going 
    # to be forced to use the Test Environment
    puts "Re-Generating the Database"
    Rake::Task["db:drop RAILS_ENV=test --trace"].invoke
    Rake::Task["db:create RAILS_ENV=test"].invoke
    Rake::Task["db:create RAILS_ENV=test"].invoke
    Rake::Task["db:bootstrap RAILS_ENV=test"].invoke
  end
end

Было бы идеально, если бы не нужно было жестко кодировать --trace там = D

Итак, я должен быть в состоянии выполнить rake db: regenesis --trace, и он должен добавить trace ко всем этим командам rake.

Как мне это сделать?

1 Ответ

1 голос
/ 01 сентября 2011

Пожалуйста, отметьте этот вопрос . Если вы не можете изменить свои задачи для добавления параметров (по какой-то причине), то вы можете использовать переменные среды, например:

namespace :db do
  task :regenesis do
    #because of how devestating this command could be, it's going 
    # to be forced to use the Test Environment
    puts "Re-Generating the Database"
    ENV["extra_option"] = "--trace"
    Rake::Task["db:drop RAILS_ENV=test"].invoke
    Rake::Task["db:create RAILS_ENV=test"].invoke
    Rake::Task["db:create RAILS_ENV=test"].invoke
    Rake::Task["db:bootstrap RAILS_ENV=test"].invoke
  end
end

И в ваших задачах вам придется искать ENV["extra_option"]

...