devdocs/lib/docs.rb
Glandos 77e76d06c9 Fix require usage for active_support
As described in rails/rails#14664 use require 'active_support' before core_ext
2014-05-12 13:53:58 +02:00

72 lines
1.5 KiB
Ruby

require 'bundler/setup'
Bundler.require :docs
require 'active_support'
require 'active_support/core_ext'
I18n.enforce_available_locales = true
module Docs
require 'docs/core/autoload_helper'
extend AutoloadHelper
mattr_reader :root_path
@@root_path = File.expand_path '..', __FILE__
autoload :URL, 'docs/core/url'
autoload_all 'docs/core'
autoload_all 'docs/filters/core', 'filter'
autoload_all 'docs/scrapers'
autoload_all 'docs/storage'
autoload_all 'docs/subscribers'
mattr_accessor :store_class
self.store_class = FileStore
mattr_accessor :store_path
self.store_path = File.expand_path '../public/docs', @@root_path
class DocNotFound < NameError; end
def self.all
Dir["#{root_path}/docs/scrapers/**/*.rb"].
map { |file| File.basename(file, '.rb') }.
sort!.
map(&method(:find)).
reject(&:abstract)
end
def self.find(name)
const = name.camelize
const_get(const)
rescue NameError => error
if error.name.to_s == const
raise DocNotFound.new("failed to locate doc class '#{name}'", name)
else
raise error
end
end
def self.generate_page(name, page_id)
find(name).store_page(store, page_id)
end
def self.generate(name)
find(name).store_pages(store)
end
def self.generate_manifest
Manifest.new(store, all).store
end
def self.store
store_class.new(store_path)
end
extend Instrumentable
def self.install_report(*names)
names.each do |name|
const_get("#{name}_subscriber".camelize).subscribe_to(self)
end
end
end