Page Viewer, a Simple Markdown Viewer
For various projects including Mastering Modern Payments I've found it really useful to be able to view the Markdown source rendered as HTML but I don't really care about editing it online. I put together a little gem named page_viewer which renders Markdown files like this:
page_viewer
has some convenience features. First, it dynamically renders the markdown files for each request. This means that if the files change underneath there's no cache to refresh or anything. Second, code blocks are highlighted with Pygments. You'll need a working python installation but that's it. Third, it integrates with Docverter for on-the-fly PDF conversion.
It's also easy to subclass to do what you want. For example, the site where I'm developing my guide subclasses PageViewer::App
to add some routes that render the whole guide as one page with a table of contents, and another one that renders the whole thing as a PDF.
I use an instance page_viewer
to view my personal wiki nicely rendered on a web page. My wiki repo is hosted on my private gitolite instance with a local clone. Each time I push changes, which happens pretty frequently with Sparkleshare, gitolite clones the repo to a directory somewhere else on the machine. This happens to be the same directory that page_viewer
is pointing at.
Installation is pretty simple. Create a new project and include the page_viewer
gem in the Gemfile:
source :rubygems
gem 'page_viewer'
Configure and run PageViewer::App
inside config.ru
:
require 'page_viewer'
PageViewer::App.set :page_root, '/path/to/some/markdown/files'
use Rack::Auth::Basic, "Restricted Area" do |username, password|
username == ENV['USERNAME'] && password == ENV['PASSWORD']
end
run PageViewer::App
:page_root
needs to contain the path to the markdown files you want to render and is required. Every file in that path ending in .md
will be renderable.
Is this going to be useful for other people? Probably not, since it's really specific to my own needs. If you have a dynamically changing set of markdown documents you want rendered fresh all the time, though, this may be the ticket.