ブログを全面リニューアル。RailsでWordpressを再構築してみた。
今までWordpressを使ってブログを書いてましたが、いろいろと不満があったのでRailsで作り直しました。といってもWordpressの機能をそっくりそのまま持ってきたのではなく、必要最低限だけ実現させてます。結構楽勝だろーと思ってたんだけど、いろいろあったので書き留める。
Wordpressへの不満
- 多機能過ぎ。そんなに色々いらない。
- プラグインとか入れる度にいろんなjavascriptファイルやCSS読み込んでどんどん重くなる。→プリコンパイルできるけど面倒だから結局やらない。
- バックアップめんどくさい。
- なんか遅い。
- WYSIWYGエディタ要らない。タグも書きたくない。Markdownでだけでいい。
必要な機能
- ブログ新規作成、下書き、編集、削除
- カテゴリー作成、編集、削除
- タグ付け
- スラッグを指定してURLを変更できる
- 画像アップロード
- シンプルなテキストボックスにMarkdownが書ける。
- レスポンシブルなデザインでモバイル対応
- それなりにSEO対策
予想できる壁
- 移行するデータの選別
- MySQLからPostgresqlへの移行
- 今までのURLを活かしたい
- サイトマップを自動でつくりたい
環境や使用したGem
- Rails4
- heroku
- Amazon S3
- Twitter Bootstrap
- Gem
- タグ付け ActsAsTaggableOn
- サイトマップ sitemap_generator
- Markdown redcarpet
- 画像UP jquery-fileupload-rails
- 画像UP Carrierwave
- スラッグ friendly_id
Carrierwaveについての記事
herokuでCarrierwaveを使う時にいろいろハマった
Railsの画像アップロードを倍速にする方法
Rails 超お手軽な画像アップローダー CarrierWave の使い方
出来上がったブログがこれ
シンプルな編集画面。マークダウンが書ける。
なんと編集メニューはこれだけ。
Wordpress的な画像アップロード。ドラッグ&ドロップにも対応。
レスポンシブルデザインでモバイルに対応。
持ってきたデータ
Wordpressのデータベース(MySQL)
- wp_posts
- wp_terms
- wp_term_relationships
以上。これだけ引き継ぐことにした。
MySQLからPostgresqlへの移行で気をつけること
ダンプはInsertを一行ずつ出力した方がエスケープ漏れとかの間違いに気がつきやすいのでおすすめ。
1
mysqldump -c --order-by-primary --skip-extended-insert -u root -p -t DATABASE TABLE > DUMP.sql
ダンプファイルの中の文字列を置換する。
いろいろ試行錯誤でこんな結果。
- バッククォート(`) -> ダブルクォート(")。
- シングルクォートエスケープ(\')をダブルシングルクォート('')に。
- ダブルクォートエスケープ(\")をダブルダブルクォート("")に。
- \r\n の改行をどうするかは考えもの。今回はマークダウンなので全て削除した。
エスケープの比較表はこのサイトが分かりやすい。
http://en.wikibooks.org/wiki/Converting_MySQL_to_PostgreSQL
パフォーマンス
assets precompileのおかげでリクエスト数は半分以下になったし、Turbolinksの威力で体感速度もグンとあがりました。いまのところ満足。
Githubへ?
ブログが書ければいいよっていう人が他にもいそうな気がするのでGithubにいずれソースをアップしようかなと。でもWordpressほどお手軽にできないので、そんなに需要はないかもしれない。