Короче говоря, у меня следующая проблема с мой проект Ruby Gem:
-
rake doc
работает локально без проблем. (Рубин 2.3.1) -
Ошибка
rake doc
в агенте CI. (Рубин 2.5) -
bundle exec rake doc
локально выдает ту же ошибку. (Рубин 2.3.1)
Как такое может быть?
А теперь подробности. Соответствующая часть моего
gemspec
это:
s.add_development_dependency 'github-markup', '~> 2.0'
s.add_development_dependency 'rake', '~> 12.3'
s.add_development_dependency 'redcarpet', '~> 3.4'
s.add_development_dependency 'yard', '~> 0.9'
s.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
Я устанавливаю зависимости с помощью bundle install
, как обычно.
И мой
Rakefile
:
require 'yard'
desc 'Build documentation'
YARD::Rake::YardocTask.new do |t|
t.name = 'doc'
t.options = %w(--markup-provider=redcarpet --markup=markdown --main=README.md)
end
я получаю ошибки являются:
rake aborted!
ArgumentError: wrong number of arguments (given 1, expected 0)
/usr/local/bundle/gems/yard-0.9.12/lib/yard/logging.rb:44:in `initialize'
<snip>
/usr/local/bundle/gems/yard-0.9.12/lib/yard/rake/yardoc_task.rb:74:in `block in define'
/usr/local/bundle/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
/usr/local/bundle/bin/bundle:104:in `load'
/usr/local/bundle/bin/bundle:104:in `<main>'
Caused by:
NameError: undefined method `<<' for class `YARD::Logger'
Did you mean? <
/usr/local/bundle/gems/yard-0.9.12/lib/yard/logging.rb:136:in `<class:Logger>'
<snip>
/usr/local/bundle/gems/yard-0.9.12/lib/yard/cli/yardoc.rb:245:in `run'
/usr/local/bundle/gems/yard-0.9.12/lib/yard/rake/yardoc_task.rb:74:in `block in define'
/usr/local/bundle/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
/usr/local/bundle/bin/bundle:104:in `load'
/usr/local/bundle/bin/bundle:104:in `<main>'
Найти полный вывод bundle exec rake doc --trace
здесь.
Мне это кажется ужасно глючным.
Локально у меня есть установлено гораздо больше драгоценных камней чем те, которые требуются для этого проекта, поэтому я подозреваю, что эта комбинация / конфигурация Rake с YARD может неявно зависеть от какого-то другого драгоценного камня. Если не рассматривать их один за другим, затем два за двумя и т. д., есть ли способ диагностировать эту проблему? Есть ли какие-нибудь канонические ошибки, в которые я мог попасть?
Похоже, ваш код зависит от чего-то, что не поддерживается YARD, но поддерживается каким-то другим гемом в вашей общесистемной установке (rails?). Попробуйте перезапустить задачу с
--trace
, пожалуйста.@mudasobwa Насколько мне известно, нигде нет Rails. См. здесь для полного
gem list
и выводаbundle exec race doc --trace
. Я не вижу там никакого своего кода (он не должен запускаться или нет?). Есть ли у YARD функции, которые он сам не предоставляет? Это звучит не так.Единственные «особые» функции, о которых я знаю, это те, что даны
t.options
. Удаление этой строки не помогает.Через несколько коммитов документации все снова работает. Так что, очевидно, что-то в самих документах вызвало плохой код в YARD?
К сожалению, я не гадалка и не знаю :) Хорошо, что в итоге все обошлось.
@mudasobwa Конечно! Просто хотел оставить этот комментарий для дальнейшего использования. Я посмотрю, найду ли я время, чтобы попытаться разделить набор изменений пополам, чтобы выяснить, что вызвало такое поведение. Спасибо за ваше время!