Convert Webby to Jekyll
I'm going to blog more. When I think of the countless times other people sharing information helps me every day, I feel bad I don't share more.
One thing that has been acting as a block to more sharing was my old blog software. It was using Webby. Webby is a nice static site generator, but one that hasn't been touched since 2009. Every time I wanted to post, I had to reinstall Ruby 1.8.7, patch together the old gems and hope everything still somehow held together.
That's too high a bar for me - most of the stuff I want to share isn't really enough to warrant that effort. It's not that I want to share total rubbish (I hope!), just that taking 45 minutes before I can even start a post really puts the pressure on.
So I'm finally switching to Github pages and Jekyll. With that combination I can write up some HTML, commit, then push. Hopefully that's convenient enough that I can push up scripts, hacks, random thoughts and ideas that might help others.
A decent way to start seems to be to post the script I used to convert
my old posts from Webby to Jekyll. Not fancy, but it'll do the trick.
require "yaml"
root = "[local path to old blog]"
posts = "[local path to new blog]/_posts"
Dir.glob("#{root}**/*.txt").each do |f|
next if File.basename(f) == "index.txt"
_junk, header, body = File.read(f).split("---")
name = File.basename(f)
date = f.gsub(root, "").gsub("/#{name}", "").gsub("/", "-")
metadata = YAML.load(header)
destination = "#{posts}/#{date}-#{name.gsub('.txt', '.html')}"
File.open(destination, "w") do |out|
out.puts("---")
out.puts("layout: post")
out.puts("title: \"#{metadata['title']}\"")
out.puts("date: #{metadata['created_at']}")
out.puts("---")
out.puts(body.gsub("\r\n", "\n"))
end
puts(f)
puts(destination)
puts("==============================")
end