aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/api/task.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/api/task.rb')
-rw-r--r--railties/lib/rails/api/task.rb34
1 files changed, 22 insertions, 12 deletions
diff --git a/railties/lib/rails/api/task.rb b/railties/lib/rails/api/task.rb
index 3e7223f075..1e6458cf93 100644
--- a/railties/lib/rails/api/task.rb
+++ b/railties/lib/rails/api/task.rb
@@ -64,17 +64,12 @@ module Rails
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'
-
- configure_rdoc_files
-
+ # Every time rake runs this task is instantiated as all the rest.
+ # Be lazy computing stuff to have as light impact as possible to
+ # the rest of tasks.
before_running_rdoc do
+ load_and_configure_sdoc
+ configure_rdoc_files
setup_horo_variables
end
end
@@ -84,6 +79,22 @@ module Rails
# no-op
end
+ def load_and_configure_sdoc
+ require 'sdoc'
+
+ 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'
+ rescue LoadError
+ $stderr.puts %(Unable to load SDoc, please add\n\n gem 'sdoc', require: false\n\nto the Gemfile.)
+ exit 1
+ end
+
def configure_rdoc_files
rdoc_files.include(api_main)
@@ -111,9 +122,8 @@ module Rails
end
class RepoTask < Task
- def initialize(name)
+ def load_and_configure_sdoc
super
-
options << '-g' # link to GitHub, SDoc flag
end