class Doc::Configurator::Rails
Public Instance Methods
configure(update)
click to toggle source
# File lib/doc/configurator/rails.rb, line 8 def configure(update) config.check_options!([], [:version, :prerelease]) search_versions = Array(config[:version] || [nil]) @versions = search_versions.map do |search_version| requirement = Gem::Requirement.new(search_version.is_a?(Integer) ? "~> #{search_version}" : search_version) versions = Gem::Specification.find_all_by_name('rails', requirement).map(&:version) versions.reject!(&:prerelease?) unless config[:prerelease] unless version = versions.sort.last raise ConfigError.new(self, "can't find rails version matching: #{search_version}") end version end end
tasks()
click to toggle source
# File lib/doc/configurator/rails.rb, line 23 def tasks @versions.map do |version| builder({ :title => "rails-#{version}", :dir_name => "rails-#{version}", :paths => paths_to_document_for_version(version), }) end end
Private Instance Methods
paths_to_document_for_version(version)
click to toggle source
# File lib/doc/configurator/rails.rb, line 35 def paths_to_document_for_version(version) code = case version.segments.first when 2 <<-RUBY gem 'rails', ARGV.first require 'rdoc/task' Rake::FileList.class_eval do alias_method :original_include, :include def include(*paths, &block) original_include(*fix_paths(*paths), &block) end alias_method :original_exclude, :exclude def exclude(*paths, &block) original_exclude(*fix_paths(*paths), &block) end def fix_paths(*paths) paths.map do |path| if path.is_a?(String) path.sub(%r{^vendor\/rails\/([^\/]+)(?=\/)}) do name = {'railties' => 'rails'}[$1] || $1 Gem.loaded_specs[name].full_gem_path end else path end end end end Rake::RDocTask.class_eval do def define puts rdoc_files if name == 'rails' end end load 'tasks/documentation.rake' RUBY when 3 <<-RUBY gem 'rails', ARGV.first require 'rdoc/task' class RDocTaskWithoutDescriptions < Rake::RDocTask def initialize(name = :rdoc) super puts rdoc_files if name == 'rails' end end load 'rails/tasks/documentation.rake' RUBY else <<-RUBY gem 'rails', ARGV.first require 'rdoc/task' require 'rails/api/task' module Rails module API class InstalledTask < StableTask def component_root_dir(component) Gem::Specification.find_by_name(component).gem_dir end end end end task = Rails::API::InstalledTask.new('rdoc') task.configure_rdoc_files puts task.rdoc_files RUBY end args = %W[ruby -r rubygems -e #{code} -- #{version}] IO.popen(args.shelljoin, &:readlines).map(&:strip) end