Как исключить некоторые классы из генерации rdoc и ri при установке гемов в ruby? - PullRequest
3 голосов
/ 11 января 2011

Я написал этот драгоценный камень, который имеет более 10000 сгенерированных классов.При установке этого гема установка ri и rdoc занимает целую вечность.

Я знаю, что могу отключить установку ri и rdoc, передавая --no-ri и --no-rdoc команде gem install, но янужно как-то в процессе сборки gem указать список файлов rb, а затем исключить остальные.

Я хочу, чтобы команда gem install автоматически генерировала ri и rdoc только для этих файлов.

Я попытался

Rake::RDocTask.new do |rdoc|
  files =['README.rdoc', 'LICENSE', 'lib/myclass.rb']
  rdoc.rdoc_files.add(files)
  rdoc.main = "README.rdoc" # page to start on
  rdoc.title = "mobilesrepo Docs"
  rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
  rdoc.options << '--line-numbers'
end

включить myclass.rb только для генерации rdoc и ri, но команда gem install пытается сгенерировать rdoc и ri для всех моих файлов * .rb.

Anyбыла бы признательна за помощь.

1 Ответ

3 голосов
/ 15 февраля 2011

Задача Rake::RDocTask не имеет ничего общего с рубинами.Ваш код просто сгенерирует html с помощью команды

% rake rdoc

в каталоге проекта doc / rdoc.

Чтобы ограничить область действия rdoc во время процесса установки гема, отредактируйте спецификацию для своего гема:

require 'rake/gempackagetask'
spec = Gem::Specification.new {|i|
  ...
  i.rdoc_options += ['-m', 'README.rdoc', '-x', 'lib/(?!myclass.rb).*',
                     'lib/myclass.rb', 'LICENSE', 'README.rdoc']
  i.extra_rdoc_files = []
  ...
}

Rake::GemPackageTask.new(spec).define

Требуется странное регулярное выражение lib/(?!myclass.rb).*, потому что rubygems автоматически добавляет lib путь для rdoc, и нам нужно

  1. исключить его (опция -x);
  2. позволяет lib/myclass.rb файлу выжить.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...