Объединение множества рейк-задач в одну рейк-задачу

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
24
задан Amir 11 December 2009 в 20:33
поделиться

3 ответа

Вы хотите вызывать , а не выполнять . Небольшой отрывок из моего собственного кода, показывающий, как передавать переменные:

namespace :clients do

  task :create, [:client] => ["clients:creation:checks"] do |t, args|
    Rake::Task["clients:creation:git"].invoke(client, password)
    Rake::Task["server:virtualhost:create"].invoke(client)
    Rake::Task["server:virtualhost:enable"].invoke(client)
    Rake::Task["server:reload"].invoke
    Rake::Task["db:roles:create"].invoke(client, password)
    Rake::Task["db:create"].invoke(client, client)
    Rake::Task["db:migrate"].invoke(client)
  end

end

В качестве альтернативы, вы можете сделать задачу зависимой от другой задачи, как я сделал выше с помощью : create в зависимости от клиентов: создание: проверяет .

Чтобы уточнить, пространство имен предназначено для группировки задач, поэтому вы должны фактически определить задачи в пространстве имен, как я сделал выше. Вы не можете просто вызывать задачи из пространства имен.

Итак, ваш код выше должен быть:

desc 'This rebuilds development db'
task :rebuild_dev do
  Rake::Task["db:drop"].invoke
  Rake::Task["db:create"].invoke
  Rake::Task["db:migrate"].invoke
  Rake::Task["db:load"].invoke
end
23
ответ дан 28 November 2019 в 22:13
поделиться

Вы можете сделать это с зависимостями от задачи без тела.

desc 'This rebuilds development db'
task :rebuild_dev => ["db:drop", "db:create", "db:migrate", "db:load"]
67
ответ дан 28 November 2019 в 22:13
поделиться
namespace :rebuild_dev do
 desc 'This rebuilds development db'
  task :clean_slate => :environment do 
    Rake::Task["db:drop"].invoke
    Rake::Task["db:create"].invoke
    Rake::Task["db:migrate"].invoke
    Rake::Task["db:load"].invoke
  end
end
3
ответ дан 28 November 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: