Update April 21, 2008: Delynn Berry now has a new CHM file up for Rails version 2.0.2 with a much better index and fewer broken links than what I was able to create. Get it here.
CHM (compiled HTML Help) is arguably one of the better Microsoft inventions and generating these files from Ruby on Rails documentation is should be easy using Rdoc.
A general article on the different ways of generating Rails offline documentation is here.
The Rdoc approach is described in this article:
http://wiki.rubyonrails.org/rails/pages/HowToGenerateChmForRails
Older (and possibly newer in the future) CHM files created using this technique are here: http://delynnberry.com/projects/rails-chm-documentation
These are the basic rdoc instructions:
The core command is:
rdoc -f chm -o chm_folder action* rails-*
which you have to run in
C:\ruby\lib\ruby\gems\1.8\gems\
(assuming c:\ruby is your ruby directory).
You might (or will likely) get this error:
rails-2.0.1/lib/rails_generator/generators/components/controller/templates/controller.rb:3:15: Expected class name or ‘<
<’. Got RubyToken::TkLT: “<”
This is the offending file:
C:\ruby\lib\ruby\gems\1.8\gems\rails-2.0.2\lib\rails_generator\generators\components\controller\templates\controller.rb
You can exclude this file by altering the command like so:
rdoc -f chm -o chm_folder action* rails-* -x controller.rb
It should then run up to this point.
Generating CHM…
C:/ruby/lib/ruby/1.8/rdoc/generators/html_generator.rb:1293:in `initialize’: Invalid argument - classes/<.html (Errno::EINVAL)
from C:/ruby/lib/ruby/1.8/rdoc/generators/html_generator.rb:1293:in `open’
from C:/ruby/lib/ruby/1.8/rdoc/generators/html_generator.rb:1293:in `gen_into’
from C:/ruby/lib/ruby/1.8/rdoc/generators/html_generator.rb:1289:in `each’
from C:/ruby/lib/ruby/1.8/rdoc/generators/html_generator.rb:1289:in `gen_into’
from C:/ruby/lib/ruby/1.8/rdoc/generators/html_generator.rb:1277:in `generate_html’
from C:/ruby/lib/ruby/1.8/rdoc/generators/html_generator.rb:1197:in `generate’
from C:/ruby/lib/ruby/1.8/rdoc/generators/chm_generator.rb:38:in `generate’
from C:/ruby/lib/ruby/1.8/rdoc/rdoc.rb:284:in `document’
from C:/ruby/bin/rdoc:62
This is quite hard to work around and some suggest you should just compile help for the action* packages:
rdoc -f chm -o chm_folder action*
which contain enough documentation to get by with most daily tasks.
Update March 2, 2008: The technique described by Michael in the comments using the command
rdoc -f chm -o chm_folder action* rails-* -x template/*
works fine to create a chm file. However, I use this technique only to create the index.hhk file which I then use in the following HTML Help “manual” process, which IMHO leads to a better linked document and nicely inlined source code:
- Download the Rails Project files from here: http://rubyforge.org/frs/?group_id=307 and unzip to your hard drive.
- Download HTML Help Workshop and install (which you need for the above rdoc technique as well).
- Start HTML Help Workshop and create a new project:
Give it a descriptive name (damn, is that a real wizard on the left?!; I guess those were the good old days):
In the Existing Files step, select just HTML files:
Click add:
Navigate to the <folder you unzipped rails to>\rails\doc\api:
Select only the index.html file:
The project is created.
Go to the Contents tab:
Give it a name and save:
Optionally do the same for index (I haven’t had any luck generating an index file).
Update March 2, 2008: Simply navigate to the index.hhk file generated using the
rdoc -f chm -o chm_folder action* rails-* -x template/*
command. This index will work only partly and many links will be dead but many work, so…
Set the project options as follows:
Make sure the Default file is set to “index.html”, not the full path:
Select “Automatically create content file (.hhc) when compiling”:
I was so far unable to create an index, so checking “Include keywords from HTML files” has no effect for me.
Set “Compile full-text search information”:
Fire “Save all and compile”. You should get a searchable CHM file with the Rails documentation.
Here is the resulting CHM file, now with (rudimentary and flaky) index. Enjoy.
Update March 2, 2008: I’ve uploaded a new version of the CHM file, now with an index I generated with the technique described by Michael (see comments below). However, the index works only party, many links are broken. But it’s better than nothing I guess.
And finally, some non-Windows CHM readers (thanks to Delynn Berry):
-
Chamonix - OS X
-
Chmox - OS X
-
GnoCHM - Linux
-
KchmViewer - Linux
Happy New Year Everyone!
February 3rd, 2008 at 7:08 pm
I think I solved your problem with getting an index into the Windows CHM help file.
I downloaded and installed HTML Help Workshop.
I used your wiki.rubyonrails.org link and followed its instructions to append -x template/* to the rdoc command.
In the gem folder:
cd \ruby\lib\ruby\gems\1.8\gems
I type the command:
rdoc -f chm -o chm_folder action* rails-* -x template/*
That automatically produced the desired CHM help file with the index tab.
I did this on 2 systems with Windows XP Professional. One with 32-bit and one with 64-bit. The 64-bit produced an empty chm_folder. Apparently, RDOC is looking in the Program Files folder for the HTML Help Workshop folder. On XP 64-bit, the HTML Help Workshop folder in located in Program Files (x86) folder. That’s where the HTML Help Workshop installer places it. I copied the HTML Help Workshop folder to the Program Files folder and tried again. Success!
Thanks for your tips and hard work.
Michael Carlyon
February 18th, 2008 at 8:06 pm
Thank you very much for the latest version of CHM file.
March 2nd, 2008 at 2:47 am
@Michael, many thanks. I now feed the index.hhk created using your technique into the HTML Help project. Many links are dead but some work, so it’s better than nothing I guess.
March 18th, 2008 at 11:53 am
[...] Generate Ruby on Rails CHM Documentation - Notes on how to do it, together with a handy pre-built 2.0.2 CHM so you don’t have to go messing around on Windows yourself. Yeah, the real developers use an API site online. I find local searchability trumps that for usability. [...]
March 22nd, 2008 at 10:10 am
Here is my build of Rails 2.0.2 CHM documentation:
http://show.samesystem.dk/public/rails-2-0-2.chm
It is similar in structure to the delynnberry’s version.
April 21st, 2008 at 12:12 am
Dirk,
After playing with my homemade copy of Rails 2.0.2 CHM documentation, I found many dead links, too. It appears to be a pathing problem. I didn’t pursue it to a satisfactory resolution. Like you, I was happy to have documentation I could use, even if it was incomplete.
Perhaps a ruby script could be designed to deal with the dead links by searching the path tree to add all of the links to the index. I don’t know. I’m pretty green in Ruby and Rails.
I’m glad I was a small help to you.