loading...

GitHub Pages Migration Part 2

jeikabu profile image jeikabu Originally published at rendered-obsolete.github.io on ・4 min read

This is a follow-up to my previous post about migrating to Github Pages

On Bundle and Gemfiles

As is so often the case, I figured out my problem with bundle a few hours later. While looking into something else I came across The github-pages gem- which I evidentally missed the first time I set this up- and was reminded that the Gemfile was in my own repo. When executed in the right place sudo bundle update works as expected.

Working with new tech is always a humbling experience.

On Repositories

Anyway, upgrade to Jekyll 3.7.3 and…

  Liquid Exception: No repo name found. Specify using PAGES_REPO_NWO environment variables, 'repository' in your configuration, or set up an 'origin' git remote pointing to your github.com repository. in /_layouts/default.html

ERROR: YOUR SITE COULD NOT BE BUILT:
       ------------------------------------
       No repo name found. Specify using PAGES_REPO_NWO environment variables, 'repository' in your configuration, or set up an 'origin' git remote pointing to your github.com repository.

This Jekyll issue and the PR it referenced clarifies what is going on.

To move to github I’d added another remote git repository github (my previous bitbucket repo was origin). Like the helpful ERROR message states, I either need to set repository in _config.yml or the git remote named origin needs to point to github.com.

Simple enough.

Either seems to work. But, I need to use two github accounts, so I set repository.

Theming

Now looking at a GitHub doc on Jekyll theming.

In _config.yml switching theme: minima for theme: jekyll-theme-midnight results in lots of:

Build Warning: Layout 'post' requested in _drafts/2018/2018-08-12-github-pages-migration.md does not exist.
Build Warning: Layout 'page' requested in about.md does not exist.
Build Warning: Layout 'home' requested in index.md does not exist.

And a blank site.

The line about index.md is straight-foward. I removed layout: home from the YAML front matter and now had an empty index page.

There’s several issues about non-existant layouts and from the Jekyll doc of overriding themes I find my minima theme has:

$ ls `bundle show minima`/_layouts
default.html    home.html   page.html   post.html

While midnight has:

$ ls `bundle show jekyll-theme-midnight`/_layouts 
default.html

Fine:

cp `bundle show minima`/_layouts/home.html _layouts/
cp `bundle show minima`/_layouts/post.html _layouts/
cp `bundle show minima`/_layouts/page.html _layouts/

And everything is working.

Pagination

Having one long index with every post is starting to look a bit silly. There’s the Jekyll doc on pagination. It recommends jekyll-paginate which states that it is deprecated in favor of jekyll-paginate-v2 (which is not yet supported by GitHub Pages).

In _config.yml:

plugins:
  - jekyll-paginate
paginate: 6

jekyll serve complains:

Pagination: Pagination is enabled, but I couldn't find an index.html page to use as the pagination template. Skipping pagination.

Since my index.md just contains layout: home, I move _layouts\home.html to index.html (in the root of the repo). And adding the pagination templating they recommend.

Works, but now all the posts are paginated inline on the index page. Not sure that’s what I want so I’m backing that out. I’m trying to avoid fiddling with visual layout as much as possible, but I’m finding it harder and harder to retain this policy.

Comments

Despite not expecting anyone to comment (I rarely leave comments myself), I was a bit curious how they could be added.

Turns out Disqus (NB: from within China you’ll need to use VPN) is the Github Pages “way” to do this.

I setup an account and see I need to add some template magic. Figuring _layouts/post.html (which I copied from the minima template) was the place for this, I opened it and find this blurb:

{%- if site.disqus.shortname -%}
    {%- -%}
  {%- endif -%}

Turns out the minima template has an html helper file for Disqus that includes the “universal code” and deals with the “configuration variables”. Stole that:

cp `bundle show minima`/_includes/disqus_comments.html _includes/

And, so it points at my Disqus site, https://rendered-obsolete.disqus.com, as per this issue to _config.yml add:

disqus:
  shortname: rendered-obsolete

Something else to watch out for is the and jekyll.environment == "production" at the top of disqus_comments.html. Jekyll defaults to a development environment, so you either need to comment that bit out or run things with:

JEKYLL_ENV=production bundle exec jekyll serve

Discussion

pic
Editor guide
Collapse
Sloan, the sloth mascot
Comment deleted