How to fix the GitHub aside in Octopress 2.0

If you've added the GitHub aside to your Octopress 2.0 blog, you probably noticed that it's been been displaying Status updating...instead of your repos. That's because Octopress 2.0 uses v2 of the GitHub API, which has been retired in favor of v3. For some reason, the fix was only incorporated in Octopress 2.1, which has not yet been officially released.

If you want to fix your GitHub aside in Octopress 2.0, go to .themes/classic/source/javascripts/github.js and replace the contents with the following code:

var github = (function(){
  function render(target, repos){
    var i = 0, fragment = '', t = $(target)[0];

    for(i = 0; i < repos.length; i++) {
      fragment += '<li><a href="'+repos[i].html_url+'">'+repos[i].name+'</a><p>'+repos[i].description+'</p></li>';
    }
    t.innerHTML = fragment;
  }
  return {
    showRepos: function(options){
      $.ajax({
          url: "https://api.github.com/users/"+options.user+"/repos?callback=?"
        , type: 'jsonp'
        , error: function (err) { $(options.target + ' li.loading').addClass('error').text("Error loading feed"); }
        , success: function(data) {
          var repos = [];
          if (!data.data) { return; }
          for (var i = 0; i < data.data.length; i++) {
            if (options.skip_forks && data.data[i].fork) { continue; }
            repos.push(data.data[i]);
          }
          repos.sort(function(a, b) {
            var aDate = new Date(a.pushed_at).valueOf(),
                bDate = new Date(b.pushed_at).valueOf();

            if (aDate === bDate) { return 0; }
            return aDate > bDate ? -1 : 1;
          });

          if (options.count) { repos.splice(options.count); }
          render(options.target, repos);
        }
      });
    }
  };
})();

Save the file, then run this command from your Octopress directory:

$ rake update_source

Verify that everything works locally by running rake watch (if using POW) or rake preview. Once satisfied with the changes, you can push them to your public directory with rake generate.