aboutsummaryrefslogtreecommitdiffstats
path: root/guides/rails_guides.rb
diff options
context:
space:
mode:
Diffstat (limited to 'guides/rails_guides.rb')
-rw-r--r--guides/rails_guides.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/guides/rails_guides.rb b/guides/rails_guides.rb
new file mode 100644
index 0000000000..9d1d5567f6
--- /dev/null
+++ b/guides/rails_guides.rb
@@ -0,0 +1,63 @@
+pwd = File.dirname(__FILE__)
+$:.unshift pwd
+
+# This is a predicate useful for the doc:guides task of applications.
+def bundler?
+ # Note that rake sets the cwd to the one that contains the Rakefile
+ # being executed.
+ File.exist?('Gemfile')
+end
+
+begin
+ # Guides generation in the Rails repo.
+ as_lib = File.join(pwd, "../activesupport/lib")
+ ap_lib = File.join(pwd, "../actionpack/lib")
+
+ $:.unshift as_lib if File.directory?(as_lib)
+ $:.unshift ap_lib if File.directory?(ap_lib)
+rescue LoadError
+ # Guides generation from gems.
+ gem "actionpack", '>= 3.0'
+end
+
+begin
+ require 'redcarpet'
+rescue LoadError
+ # This can happen if doc:guides is executed in an application.
+ $stderr.puts('Generating guides requires Redcarpet 3.1.2+.')
+ $stderr.puts(<<ERROR) if bundler?
+Please add
+
+ gem 'redcarpet', '~> 3.1.2'
+
+to the Gemfile, run
+
+ bundle install
+
+and try again.
+ERROR
+ exit 1
+end
+
+begin
+ require 'nokogiri'
+rescue LoadError
+ # This can happen if doc:guides is executed in an application.
+ $stderr.puts('Generating guides requires Nokogiri.')
+ $stderr.puts(<<ERROR) if bundler?
+Please add
+
+ gem 'nokogiri'
+
+to the Gemfile, run
+
+ bundle install
+
+and try again.
+ERROR
+ exit 1
+end
+
+require 'rails_guides/markdown'
+require "rails_guides/generator"
+RailsGuides::Generator.new.generate