0

Я пытаюсь добавить задачу грабли из драгоценного камня (геокодер https://github.com/alexreisner/geocoder) из задачи грабли моего приложения, так как я бы хотел, чтобы он запускался сразу после создания базы данных.Выполнение задач грабли из задач грабли приложений

Так я этот код внутри rakefile

task :geolocal do 
    spec = Gem::Specification.find_by_name 'geocoder' 
    load "#{spec.gem_dir}/lib/tasks/geocoder.rake" 
    puts '##################GEOCODING##############' 
    Rake::Task["geocode:all CLASS=ProposedAccomodation"].execute 
end 

только после этого вопроса Ruby Rake load tasks from a gem , но я получаю ту же ошибку

Don't know how to build task 'geocode:all CLASS=ProposedAccomodation' 

любой невдомек, что я делаю неправильно?

+0

Возможный дубликат [Rake Execute With Multiple Arguments] (http://stackoverflow.com/questions/8033303/rake-execute-with-multiple-arguments) – phoet

+0

вам необходимо передать класс в качестве аргумента для выполнения. – phoet

+0

@phoet Я пытаюсь с одного часа указать аргумент, по-разному, в вопросе, который вы связали, а также с этими http://stackoverflow.com/questions/825748/how-do-i-pass -command-line-arguments-to-a-rake-task, но я продолжаю получать «Пожалуйста, укажите ошибку CLASS (model)». stuff_args = {"CLASS" => "ProposedTodo"} Это то, что я пробую в прошлом: «Rake :: Task [" geocode: all "]. Execute (Rake :: TaskArguments.new (stuff_args.keys, stuff_args .values)) 'любой ключ? – sissy

ответ

0

, поэтому здесь необходимо принять во внимание несколько вещей.

для записи, это то, как вы называете задачу с аргументами

Rake::Task["taskname"].execute(args) 

в вашем случае, я не понимал, во-первых, что он на самом деле использует переменные окружения вместо аргументов задачи, которые гласят ENV['CLASS'].

, который ответит на ваш вопрос, поэтому вы можете либо установить его ENV['CLASS'] = 'ClassName', либо передать его на ваш вызов рейк-задаче rake geolocal CLASS=ProposedAccomodation.

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

+0

Я вижу. Это действительно работает, чтобы установить аргумент внутри задачи, такой как ENV ['CLASS'] = 'Class', и это то, что я искал. Преимущество этого в одной команде - это то, что у меня есть несколько вызовов одной и той же задачи, которую я хотел сгруппировать, и таким образом она работает. Спасибо – sissy

Смежные вопросы