Generate /index.html
dynamically
Generate the contents of the site’s /index.html
page based on the
contents of the project’s README.md
.
To do so, this commit adds a dependency on the ruby-git
gem, which introspects into the project to read the contents
of the latest version of the file.
Since the contents of the README.md
are are dynamic, and
won’t be declared statically in the source/
directory, this commit
transitions the routing for the /index.html
page into a Middleman
proxy
declaration, rendering the
source/README.html.md.erb
template as
the /index.html
page.
Once again, the sequencing of the template file’s extensions are crucial, as they hint to the pre-processor to first render ERB, then yield those contents as static Markdown to be translated to HTML.
Set the page’s <title>
element to the first line of the
project’s README.md
.
Testing this behavior
The order that the directory, repository, and application are declared and instantiated is also crucial.
Once the Capybara.app = Middleman.server
line is invoked, a call to
require
the application’s config.rb
file is made, and
ruby-git
‘s configuration is finalized.
To better control this, the test harness creates a temporary directory
with Dir.mktmpdir
from Ruby’s Standard Library, which it
then passes to a Git.init
call to prepare it as a Git directory.
Then, the new with_git_repository
ensures that the Middleman.server
call is made after the environment has been configured to point the
application-side Git
repository instance to the newly initialized
temporary Git
-ready directory.
To coordinate this sequence, this commit introduces a dependency on
minitest-around
gem for atomic test setup and
teardown, and the climate_control
gem for atomic
ENV
modifications and roll-back.