Так что я возился с этим последние полтора часа или около того и просто не могу понять, как это сделать.
В моем файле Ruby test.rake, который вызывается из другогопроект после создания Snapshot Gem, мне нужно проверить, существует ли зависимость для Capybara в Rakefile для другого проекта, так как с тех пор мы отказались от Capybara и заменили его чем-то другим.
Итак,Я включил простую проверку, чтобы увидеть, содержит ли проект тесты Feature / Capybara, и, если да, просканировать каждый тест спецификации и посмотреть, есть ли в нем зависимость для Capybara, и, если да, записать предупреждение, чтобы сообщить пользователю, что Capybara имеетустарела.
Моя проблема в том, что я не могу заставить это работать вообще. Когда я присоединяю это к заданию Jenkins и запускаю его, я продолжаю получать неожиданный оператор Print в предложении else.
Я что-то здесь упускаю? Из того, что я понимаю, мой код выполняет следующие действия:
- Проверка наличия каталога spec / features
- Использование glob для выбора всех файлов в каталоге, заканчивающихся на.rb (Spec tests), каждый экземпляр файла назначается file
- Возьмите текущий экземпляр file , прочитайте каждую его строку и используйте grep длянайдите в них любые экземпляры слова «капибара» и распечатайте правильное сообщение, если оно найдено.
- В противном случае, если слово НЕ найдено, выведите сообщение об ошибке в предложении else.
Я немного новичок в Ruby, поэтому я чувствую, что, возможно, я что-то упустил из-за синтаксиса, но кроме этого я в тупике! Любая помощь будет принята с благодарностью! Вот как выглядит код и Rake-файл, который я пытаюсь проанализировать:
test.rake:
if Dir.exist?('spec/features')
path = 'spec/features/'
Dir.glob(path + '*.rb') {|file|
if File.readlines(file).grep(/capybara/).any?
print "The capybara dependency has been found!"
else
print "SOMETHING WENT WRONG"
end
}
end
Rakefile :
#!/usr/bin/env rake
# frozen_string_literal: true
require 'roll_out/rake_tasks'
require 'roll_out/security'
require 'roll_out/jira'
require 'REDACTED/philter/lint_results'
require 'roll_out/capybara'
load 'REDACTED/tasks/REDACTED.rake'