ここが元ブログのページ
以前
で色々と頑張ってみたけど、運用してると、記事のアップと画像のアップがやっぱり面倒。
これを自動化するのって結構大変(多分自分でhttpのリクエストとか出すようなスクリプトか何か書かない といけないし)だなと考えてましたが、たまたまvimのMarkdownスクリプト探しに行った際にoctopressというのが あるのを知ったので、試してみた。
導入
などを参考にして導入。
但し書いてあるとおりbundle install
とすると、システムのgem領域にrubyライブラリがインストールされてしまう
ので、
cd octopress
bundle install --path=vendor/bundle
とかするとvendor/bundle
内にライブラリがインストールされて、複数のrubyプロジェクトがある場合にライブラリの
バージョン違いとかで嵌まらなくて済むかも。
gem領域を再構築したい場合は
gem list --local | cut -d" " -f1 | xargs gem uninstall
として、システムのgem領域に入ってるライブラリを全部アンインストールした後で必要なライブラリ(bundler
等)をgem install
すればいい。
見た目のカスタマイズ
デフォルトのテーマは文字がでかくてイマイチ気に入らなかったので頑張って修正。
octopress/sass
内のファイルを編集すればいいみたい。
レイアウト自体はいじらずに専ら色や間隔、フォントなどをグチャグチャと調整してみた。
やってるうちに気付いたが、octopress/sass/custom
内のファイルのみ変更するべきだったような気がする。
見た目はかなり希望に近づいたが、コードはなんか機能が分離し切れてないというか構造化がイマイチのような 感じ。まあ拘ってもしょうがないので暇なときに気が向けば修正しようかな?
Octopress本家の更新かけたり、間違えてrake install
とかしたときに消えたりしたら悲しいので
cd octopress
cp -ar .themes/classic/ .themes/nukino
cp -arf sass/ .themes/nukino/
として新しいテーマを作ってバックアップしておいた。
運用
以前の記事にちらっと書いたけど、Windows上で運用すると変な警告出るし、ファイル内に日本語入ってると文 字コードを何にしてもきちんと動かないし・・・で、諦めた(rubyのデフォルト外部エンコーディングをUTF-8に 設定できれば動くかも)
今のところ自PCにcoLinux+Ubuntu 10.04入れてサービス化して、SSH経由で動かしてる(octopressフォルダ自体 はWindows側のファイルをsamba経由でアクセスしてる)
別PCにUbuntu 11.10を入れてSSH経由で動かした場合、previewとかしたときサーバの応答がめっちゃ遅い。
調べてみると、Octopress(正確にはJekyll)が使ってるWEBrickというのが遅いらしいUbuntuネットワーク(ssh接続,
webrickサーバー)が遅いに対策が書いてあったの
で、/etc/nsswitch.conf
のhosts:
行のmdns4
を削除したら結構ましになった。
ユーザーページの管理
を参考に
- Bitbucketのアカウントを作成(こんなのあるんだ。遅れてるな>俺)
- アカウントのページのSSH Keysに
~/.ssh/id_rsa.pub
の内容を貼付 &Add Key - Create new repositryでoctopressを作成(Repositry typeをgitに する)
- 以下のコマンドを打つ
cd octopress
git add .
git commit -m '<message>'
git remote add bitbucket git@bitbucket.org:<username>/octopress.git
git push -u bitbucket source
<message>は適当に。<username>はBitbucketのアカウント名。
なお、bundle install
時にvendor以外のパスを指定した場合は.gitignore
にそのパスを入れておかないと
rubyライブラリごとpushされると思う(試してないけど)。
rubyライブラリのアップデート
bundle update
Bundler 1.1を使ってる&bundle install
時にパスを指定した場合、古くて使ってないライブラリを削除して
くれる。
挙動が変わって嵌まるかもしれないのでバックアップしといた方がいいかも。
記事作成
rake new_post['title']
なのだが、SSH経由で運用してるため、いちいち打つのが面倒(‘title’に日本語入れたら問題ありそうだし)
別にこのコマンドを打たなくてもoctopress/source/_posts
にファイルを作ったら検出してくれるみたいなので、
以下のようなvimスクリプトを作って運用してみる。
$VIMRUNTIME/autoload/myvimrc.vim
に以下(12/01/12修正。詳しくはこちら)
_vimrc
に以下を追加
1 2 3 |
|
使い方は
:OctNewPost [title]
みたいにして使う。titleを省略した場合、入力を求めるように作ってみた。
vimのキーに割り振るなり、ランチャーにコマンド実行オプション付けてvim起動するように登録するなりすればいい(私は後者)
titleには日本語入れても大丈夫。またファイルの文字コードはUTF-8になるように細工してる。
ファイル名は”yyyy-mm-dd-title.ext”みたいになる。ファイル名に全角文字入れたら不味そうな気がする ので、titleの全角文字は省いたファイル名を作るようにしてみた。
但し、match_character
はKaoriya-vimに入ってるhz_ja.vim
から頂いたが、イマイチ意味が分かってない。
myvimrc.vim
は文字コード(または内部エンコーディング)をshift-jis(cp932)とかにしないと思った通りに
動かなかったりするのかも。
Markdown記法のパーサはデフォルトではrdiscount
が使われている。Jekyllのソースコードを見てみると
kramdownも対応してるみたいなので、_config.yml
を
markdown: kramdown
に変更して運用。多分他にもmaruku、redcarpetというパーサに対応してるぽい(癖が分からないので試してない)
Vimで拡張子krd
の時kramdown用のシンタックスファイル(自作)が有効になるようにしてるので、新規作成時の
拡張子をkrd
にしてるが、そうするとJekyllがMarkdown形式ファイルだと認識してくれないので_config.yml
に
markdown_ext: "markdown,mkd,mkdn,md,krd"
を追加してrake generate
記事のプレビュー
cd octopress
rake generate #必要なとき
rake preview
ウチの環境ではSSHクライアントから上記コマンドを打つ。ちょっと面倒。
ブラウザで
http://server-ip-address:4000/
を見ると、プレビュー出来る。記事などを更新して、ブラウザを再読込すると自動的に更新してくれる。 素晴らしい。
記事の投稿
cd octopress
rake generate #必要なとき
rake deploy
ウチの環境ではSSHクライアントから上記コマンドを打つ。ちょっと面倒。
rake gen_deploy
とするとgenerateとdeploy両方してくれるみたい。
キャッシュの削除
rake clean
.pygments-cache
、.gist-cache
、.sass-cache
内のファイルとsource/stylesheets/screen.css
を削除。
作業してると溜まってくるので定期的に実行するといい・・・のかな?
Octopressの更新
git fetch octopress
git pull octopress master
最後に
環境の構築に手間取ったが、ローカルで色々テスト出来るし、拡張性は無限大だし、運用も快適に出来そうだ し、でかなり良い感じかも。
ということで、たぶん今後はOctopressに乗り換えると思う