Rake: Как передать параметры дочерним вызовам Rake?

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

Моя команда 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, и он должен добавить трассировку ко всем этим командам rake.

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


person DerNalia    schedule 01.09.2011    source источник


Ответы (1)


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

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"]

person Geo    schedule 01.09.2011