From 7a5aa720c417a0a9beb843a41561e26f69f79c99 Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Fri, 29 Mar 2013 21:16:12 +0100 Subject: encapsulates API generation in Rails::API::Task --- railties/lib/rails/api/task.rb | 122 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 railties/lib/rails/api/task.rb (limited to 'railties/lib/rails/api/task.rb') diff --git a/railties/lib/rails/api/task.rb b/railties/lib/rails/api/task.rb new file mode 100644 index 0000000000..92bd192468 --- /dev/null +++ b/railties/lib/rails/api/task.rb @@ -0,0 +1,122 @@ +require 'rdoc/task' + +module Rails + module API + class Task < RDoc::Task + RDOC_FILES = { + 'activesupport' => { + :include => %w( + README.rdoc + CHANGELOG.md + lib/active_support/**/*.rb + ), + :exclude => 'lib/active_support/vendor/*' + }, + + 'activerecord' => { + :include => %w( + README.rdoc + CHANGELOG.md + lib/active_record/**/*.rb + ), + :exclude => 'lib/active_record/vendor/*' + }, + + 'activemodel' => { + :include => %w( + README.rdoc + CHANGELOG.md + lib/active_model/**/*.rb + ) + }, + + 'actionpack' => { + :include => %w( + README.rdoc + CHANGELOG.md + lib/abstract_controller/**/*.rb + lib/action_controller/**/*.rb + lib/action_dispatch/**/*.rb + lib/action_view/**/*.rb + ), + :exclude => 'lib/action_controller/vendor/*' + }, + + 'actionmailer' => { + :include => %w( + README.rdoc + CHANGELOG.md + lib/action_mailer/**/*.rb + ), + :exclude => 'ib/action_mailer/vendor/*' + }, + + 'railties' => { + :include => %w( + README.rdoc + CHANGELOG.md + MIT-LICENSE + lib/**/*.rb + ) + } + } + + def initialize(name) + super + + self.title = 'Ruby on Rails API' + self.rdoc_dir = api_dir + + options << '-m' << api_main + options << '-e' << 'UTF-8' + options << '-f' << 'sdoc' + options << '-T' << 'rails' + options << '-g' # link to GitHub, SDoc flag + + configure_rdoc_files + + before_running_rdoc do + setup_horo_variables + end + end + + # Hack, ignore the desc calls performed by the original initializer. + def desc(description) + # no-op + end + + def configure_rdoc_files + rdoc_files.include(api_main) + + RDOC_FILES.each do |component, cfg| + cdr = component_root_dir(component) + + Array(cfg[:include]).each do |pattern| + rdoc_files.include("#{cdr}/#{pattern}") + end + + Array(cfg[:exclude]).each do |pattern| + rdoc_files.exclude("#{cdr}/#{pattern}") + end + end + end + + def api_main + 'RDOC_MAIN.rdoc' + end + + def api_dir + 'doc/rdoc' + end + + def component_root_dir(component) + component + end + + def setup_horo_variables + ENV['HORO_PROJECT_NAME'] = 'Ruby on Rails' + ENV['HORO_PROJECT_VERSION'] = "master@#{`git rev-parse HEAD`[0, 7]}" + end + end + end +end -- cgit v1.2.3 From 323553703072b31a0c0139dc5fc4207279093cd5 Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Fri, 29 Mar 2013 21:29:52 +0100 Subject: moves RDOC_MAIN.rdoc to railties The goal of these refactors is to have the same code generating edge and doc:rails APIs, and the rails gem is not available in LOAD_PATHS because it has no lib directory. --- railties/lib/rails/api/task.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails/api/task.rb') diff --git a/railties/lib/rails/api/task.rb b/railties/lib/rails/api/task.rb index 92bd192468..f5aa56806b 100644 --- a/railties/lib/rails/api/task.rb +++ b/railties/lib/rails/api/task.rb @@ -102,7 +102,7 @@ module Rails end def api_main - 'RDOC_MAIN.rdoc' + 'railties/RDOC_MAIN.rdoc' end def api_dir -- cgit v1.2.3 From 84c0ac3b56e1e3d8dd6401e5cf49a4019acc1b32 Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Fri, 29 Mar 2013 23:40:48 +0100 Subject: unifies API generation --- railties/lib/rails/api/task.rb | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'railties/lib/rails/api/task.rb') diff --git a/railties/lib/rails/api/task.rb b/railties/lib/rails/api/task.rb index f5aa56806b..ed0e38eca3 100644 --- a/railties/lib/rails/api/task.rb +++ b/railties/lib/rails/api/task.rb @@ -71,7 +71,6 @@ module Rails options << '-e' << 'UTF-8' options << '-f' << 'sdoc' options << '-T' << 'rails' - options << '-g' # link to GitHub, SDoc flag configure_rdoc_files @@ -101,21 +100,47 @@ module Rails end end + def setup_horo_variables + ENV['HORO_PROJECT_NAME'] = 'Ruby on Rails' + ENV['HORO_PROJECT_VERSION'] = rails_version + end + def api_main - 'railties/RDOC_MAIN.rdoc' + component_root_dir('railties') + '/RDOC_MAIN.rdoc' end + end - def api_dir - 'doc/rdoc' + class RepoTask < Task + def initialize(name) + super + + options << '-g' # link to GitHub, SDoc flag end def component_root_dir(component) component end - def setup_horo_variables - ENV['HORO_PROJECT_NAME'] = 'Ruby on Rails' - ENV['HORO_PROJECT_VERSION'] = "master@#{`git rev-parse HEAD`[0, 7]}" + def api_dir + 'doc/rdoc' + end + + def rails_version + "master@#{`git rev-parse HEAD`[0, 7]}" + end + end + + class AppTask < Task + def component_root_dir(gem_name) + $:.grep(%r{#{gem_name}[\w.-]*/lib\z}).first[0..-5] + end + + def api_dir + 'doc/api' + end + + def rails_version + Rails::VERSION::STRING end end end -- cgit v1.2.3 From 4ecf1f8724fcfbb0d8e016c08785eaf73c5c0e9b Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Sat, 30 Mar 2013 00:38:59 +0100 Subject: typo --- railties/lib/rails/api/task.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/rails/api/task.rb') diff --git a/railties/lib/rails/api/task.rb b/railties/lib/rails/api/task.rb index ed0e38eca3..3e7223f075 100644 --- a/railties/lib/rails/api/task.rb +++ b/railties/lib/rails/api/task.rb @@ -48,7 +48,7 @@ module Rails CHANGELOG.md lib/action_mailer/**/*.rb ), - :exclude => 'ib/action_mailer/vendor/*' + :exclude => 'lib/action_mailer/vendor/*' }, 'railties' => { -- cgit v1.2.3