2016-06-13 2 views
0

Это первый раз, когда я использую rake, и я вижу проблему с зависимостями файлов.Ruby Rake FILE метод не работает

Чтобы сделать тест, в Rakefile.rb я ставлю этот код:

task :ffile do 

    f1 = "config.yaml" 
    f2 = "Rakefile.rb" 

    if File.file? f1 then puts "## test file task on #{f1}" end 
    if File.file? f2 then puts "## test file task on #{f2}" end 

    file "#{f1}" => "#{f2}" do 
     puts "lol" 
    end 

    file "#{f2}" => "#{f1}" do 
     puts "lul" 
    end 

    file "#{f1}" do 
     puts "lil" 
    end 

    file "#{f2}" do 
     puts "lal" 
    end 

end 

Я на Windows 10, и при запуске

rake ffile 

результат

Starting rake operations... 
## test file task on config.yaml 
## test file task on Rakefile.rb 

то есть файл способ ничего не делать во всех четырех случаях. Я также попытался удалить цитату (т. Е. f1 вместо "#{f1}" и т. Д. Во всех file), но получить тот же результат. Ясно каждый раз, когда я сохраняю Rakefile.rb во время тестирования, поэтому я уверен, что это должно быть триггером одного из файлов мето.

Ошибка синтаксиса? Устранение неполадок с Windows 10?

Благодаря

+0

Что означает 'файл'? Можете ли вы опубликовать код? – floum

ответ

1

file метод на самом деле DSL для определения файла задачи https://github.com/ruby/rake/blob/b63f7d33d72782f646ef95da10300d273c9b8006/lib/rake/dsl_definition.rb#L75, который должен быть вызван вручную.

Rake::Task[f1].invoke 
Rake::Task[f2].invoke 

Поскольку ваши определения Dsl имеет циклическую зависимость: TOP => config.yaml => Rakefile.rb => config.yaml, добавив приведенный выше код вызовет ошибку.

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

0

Спасибо larrylv, я понял!

У меня есть две ошибки:

  1. циркуляр, так как larrylv сказал
  2. и не вызвать задачу файла! (Larrylv сказал)

Так я сообщаю простой пример, который работает

f1 = "config.yaml" 
f2 = "Rakefile.rb" 

task :ffile => ["#{f1}"] 

file "#{f1}" => ["#{f2}"] do 
    puts "lul" 
end 

с этим, команда rake ffile работает как аспектированы.

Спасибо!

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