Есть ли в YARD неявные зависимости?

avatar
Raphael
8 апреля 2018 в 10:31
97
0
1

Короче говоря, у меня следующая проблема с мой проект 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 может неявно зависеть от какого-то другого драгоценного камня. Если не рассматривать их один за другим, затем два за двумя и т. д., есть ли способ диагностировать эту проблему? Есть ли какие-нибудь канонические ошибки, в которые я мог попасть?

Источник
Aleksei Matiushkin
8 апреля 2018 в 10:36
0

Похоже, ваш код зависит от чего-то, что не поддерживается YARD, но поддерживается каким-то другим гемом в вашей общесистемной установке (rails?). Попробуйте перезапустить задачу с --trace, пожалуйста.

Raphael
8 апреля 2018 в 10:53
0

@mudasobwa Насколько мне известно, нигде нет Rails. См. здесь для полного gem list и вывода bundle exec race doc --trace. Я не вижу там никакого своего кода (он не должен запускаться или нет?). Есть ли у YARD функции, которые он сам не предоставляет? Это звучит не так.

Raphael
8 апреля 2018 в 10:55
0

Единственные «особые» функции, о которых я знаю, это те, что даны t.options. Удаление этой строки не помогает.

Raphael
8 апреля 2018 в 14:36
0

Через несколько коммитов документации все снова работает. Так что, очевидно, что-то в самих документах вызвало плохой код в YARD?

Aleksei Matiushkin
9 апреля 2018 в 05:06
1

К сожалению, я не гадалка и не знаю :) Хорошо, что в итоге все обошлось.

Raphael
9 апреля 2018 в 05:30
0

@mudasobwa Конечно! Просто хотел оставить этот комментарий для дальнейшего использования. Я посмотрю, найду ли я время, чтобы попытаться разделить набор изменений пополам, чтобы выяснить, что вызвало такое поведение. Спасибо за ваше время!

Ответы (0)