Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Object
Gem::RDoc provides methods to generate RDoc and ri data for installed gems upon gem installation.
This file is automatically required by RubyGems 1.9 and newer.
Post installs hook that generates documentation for each specification in
specs
# File rdoc/rubygems_hook.rb, line 47 def self.generation_hook installer, specs types = installer.document generate_rdoc = types.include? 'rdoc' generate_ri = types.include? 'ri' specs.each do |spec| new(spec, generate_rdoc, generate_ri).generate end end
Loads the RDoc generator
# File rdoc/rubygems_hook.rb, line 61 def self.load_rdoc return if @rdoc_version require 'rdoc/rdoc' @rdoc_version = Gem::Version.new ::RDoc::VERSION end
Creates a new documentation generator for spec
. RDoc and ri data generation can be disabled through
generate_rdoc
and generate_ri
respectively.
# File rdoc/rubygems_hook.rb, line 74 def initialize spec, generate_rdoc = true, generate_ri = true @doc_dir = spec.doc_dir @file_info = nil @force = false @rdoc = nil @spec = spec @generate_rdoc = generate_rdoc @generate_ri = generate_ri @rdoc_dir = spec.doc_dir 'rdoc' @ri_dir = spec.doc_dir 'ri' end
Removes legacy rdoc arguments from args
# File rdoc/rubygems_hook.rb, line 93 def delete_legacy_args args args.delete '--inline-source' args.delete '--promiscuous' args.delete '-p' args.delete '--one-file' end
Generates documentation using the named generator
(“darkfish”
or “ri”) and following the given options
.
Documentation will be generated into destination
# File rdoc/rubygems_hook.rb, line 106 def document generator, options, destination options = options.dup options.exclude ||= [] # TODO maybe move to RDoc::Options#finish options.setup_generator generator options.op_dir = destination options.finish @rdoc.options = options @rdoc.generator = options.generator.new options say "Installing #{generator} documentation for #{@spec.full_name}" FileUtils.mkdir_p options.op_dir Dir.chdir options.op_dir do begin @rdoc.class.current = @rdoc @rdoc.generator.generate @file_info ensure @rdoc.class.current = nil end end end
Generates RDoc and ri data
# File rdoc/rubygems_hook.rb, line 133 def generate return unless @generate_ri or @generate_rdoc setup ::RDoc::RDoc.reset options = ::RDoc::Options.new options.default_title = "#{@spec.full_name} Documentation" options.files = [] options.files.push(*@spec.require_paths) options.files.push(*@spec.extra_rdoc_files) args = @spec.rdoc_options case config_args = Gem.configuration[:rdoc] when String then args = args.concat config_args.split when Array then args = args.concat config_args end delete_legacy_args args options.parse args options.quiet = !Gem.configuration.really_verbose @rdoc = new_rdoc @rdoc.options = options Dir.chdir @spec.full_gem_path do @file_info = @rdoc.parse_files options.files end document 'ri', options, @ri_dir if @generate_ri and (@force or not File.exist? @ri_dir) document 'darkfish', options, @rdoc_dir if @generate_rdoc and (@force or not File.exist? @rdoc_dir) end
Is rdoc documentation installed?
# File rdoc/rubygems_hook.rb, line 184 def rdoc_installed? File.exist? @rdoc_dir end
Removes generated RDoc and ri data
# File rdoc/rubygems_hook.rb, line 191 def remove base_dir = @spec.base_dir raise Gem::FilePermissionError, base_dir unless File.writable? base_dir FileUtils.rm_rf @rdoc_dir FileUtils.rm_rf @ri_dir end
Is ri data installed?
# File rdoc/rubygems_hook.rb, line 203 def ri_installed? File.exist? @ri_dir end
Prepares the spec for documentation generation
# File rdoc/rubygems_hook.rb, line 210 def setup self.class.load_rdoc raise Gem::FilePermissionError, @doc_dir if File.exist?(@doc_dir) and not File.writable?(@doc_dir) FileUtils.mkdir_p @doc_dir unless File.exist? @doc_dir end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.