【问题标题】:How to exclude some classes from rdoc and ri generation during a gem installation in ruby?如何在 ruby​​ 中安装 gem 期间从 rdoc 和 ri 生成中排除某些类?
【发布时间】:2011-02-16 02:26:44
【问题描述】:

我编写了这个包含 10,000 多个生成类的 gem。 在安装这个 gem 时,安装 ri 和 rdoc 需要很长时间。

我知道我可以通过将 --no-ri 和 --no-rdoc 传递给 gem install 命令来禁用 ri 和 rdoc 安装,但我需要做的是在 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

只包含用于 rdoc 和 ri 生成的 myclass.rb,但 gem install 命令仍会尝试为我的所有 *.rb 文件生成 rdoc 和 ri。

任何帮助将不胜感激。

【问题讨论】:

  • 不幸的是 :nodoc: all 命令在这里也没有帮助

标签: ruby-on-rails ruby rubygems


【解决方案1】:

Rake::RDocTask 任务与 ruby​​gems 无关。您的代码只会生成 html

% 耙 rdoc

doc/rdoc 项目目录中的命令。

要在 gem 安装过程中限制 rdoc 的范围,请编辑 gem 的规范:

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会自动为rdoc添加lib路径,我们需要

  1. 排除它(-x 选项);
  2. 允许lib/myclass.rb 文件继续存在。

希望这会有所帮助。

【讨论】:

  • 我稍后会测试这个。谢谢
猜你喜欢
  • 2011-02-25
  • 2010-11-25
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多