75 件ほどあった tech.portalshit.net の記事を取り込んだ。実家に住んでいた 10 年前に始めた技術ブログで、最初は Rails 製の Mephisto 、その次に Jekyll で構築した。まだ GitHub Pages の仕組みが存在する前で、自前で用意したさくら VPS に git push
すると自動でビルドして記事が公開されるような仕組みを作ったりしてた。
職業プログラマーになろうとしてもがいてた頃にやってたブログで、いま読み返すと「頑張ってたんだな」感があっていなたい記事が多い。
だいぶ放置していて、いまは S3 で静的サイトとして公開していたのでそのまま放置でもよかったが、 10 年前と違って何でも一カ所にまとめて書いておきたいという気持ちが強くなって取り込むことにした。ブログはトピックを混ぜずに一つのトピックにフォーカスした方がよいと 10 年前は考えていたのだけど、最近の世の中のブログ記事の読まれ方は変わってきていて、一人の人のブログをフィードリーダーに登録して読むというより、 SNS をだら見していて流れてきた記事を適当に消費するというスタイルに変わってきているので、一つのブログに一つのテーマという書き分けは不要になったと感じる。
tech.portalshit.net を取り込んだおかげで Archive ページのグラフに占める技術記事の割合が増えた。
ちなみに取り込みは以下のようなコードを書いて SQL の INSERT 文に変換した。
require 'yaml'
require 'pathname'
files = Dir.glob(File.join(__dir__, '_posts', '*.markdown'))
files.each do |file|
content = File.read(file)
_, header, body = content.split('---')
header_yml = YAML.load(header)
title = header_yml['title']
tags = header_yml['category']
tags = tags.is_a?(Array) ? tags.map(&:downcase) : [tags&.downcase]
slug = Pathname.new(file).basename.to_s.sub(/\d{4}\-\d{2}\-\d{2}\-(.+?)\.markdown/, '\1').gsub('_', '-')
body = body.strip.gsub(/\n/, "\\n").gsub('\'', '\'\'')
created_at = File.birthtime(file).to_s.sub(' +0900', '')
updated_at = File.mtime(file).to_s.sub(' +0900', '')
puts <<~EOS
INSERT INTO entries(title, user_id, category_id, slug, markup, type, draft, body, frozen_tag_list, created_at, updated_at) VALUES('#{title}', 1, 6, '#{slug}', 'redcarpet', 'Post', 0, '#{body}', '#{tags.join(',')}', '#{created_at}', '#{updated_at}');
EOS
end