rcmdnk's blog

20130520_preview_200_200

Octopressで作った記事をチェックするときのプレビュー方法は通常は rake previewとしてlocalhost:4000で確認出来る様な設定になっていますが、 いくつかそれ以外の確認方法についてもまとめておきたいと思います。

rake preview

最初の設定ではWEBrick 1 というフレームワークを使ったWebサーバーが立ち上がります。

通常ポート番号4000番を指定していますが、この番号はRakefile内にある server_port(~30行目)を変更すれば好きな番号変更できます。

rake previewではOctopressディレクトリを監視しながら変更があった場合 随時アップデートして表示してくれます。

また、YAMLブロックでpublished: falseとしてある記事についても 表示されるので、そのような下書き段階のままでも確認出来ます。

単独でWEBrickを動かす

rake previewだと常にディレクトリ変更を監視するので、 CPUを結構食います。

もし、既に出来上がったものを見るだけで良ければ、Octopressの トップディレクトリ(config.ruがあるディレクトリ)で

$ rackup --port 4000

とすると、単独で走らせる事が出来ます。 (portを指定しなければ9292番に立ち上がります。)

Powを使う

Macの場合、 rake previewの他に最初からサポートされていると公式に書かれている方法として Powを使う方法があります。

この場合はPowは別途インストールする必要があります。 公式ページのまま従うと

$ curl get.pow.cx|sh
*** Installing Pow 0.4.1...
*** Installing local configuration files...

/Users/user/Library/Application Support/Pow/Versions/0.4.1/lib/command.js:78
            throw err;
                              ^
                              Error: EACCES, open '/Users/user/Library/LaunchAgents/cx.pow.powd.plist'

と怒られる場合があるので、その場合は /Users/user/Library/LaunchAgentsがrootの所有物になっていると思うので、sudo して下さい。 (自分の所ではvirtualvoxのインストール時にこのディレクトリがroot権限で造られていました。)

$ curl get.pow.cx| sudo sh

としてインストールして下さい。

さらに、iTerm嬢やtmux内でインストールを行おうとすると

$ curl get.pow.cx| sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6887  100  6887    0     0  13603      0 --:--:-- --:--:-- --:--:-- 23748
*** Installing Pow 0.4.1...
*** Installing local configuration files...
/Users/user/Library/LaunchAgents/cx.pow.powd.plist
*** Installing system configuration files as root...
/etc/resolver/dev
/Library/LaunchDaemons/cx.pow.firewall.plist
*** Starting the Pow server...
*** Performing self-test...
!!! Couldn't find a running Pow server on port 20559

For troubleshooting instructions, please see the Pow wiki:
https://github.com/37signals/pow/wiki/Troubleshooting

To uninstall Pow, `curl get.pow.cx/uninstall.sh | sh`

こんな風に怒られますが、取り敢えずの回避策として ターミナル.appから行う様に 2 、とのことです。

Powがインストール出来たら、今度はOctopressの公式に従って

$ cd ~/.pow
$ ln -s /path/to/octporess octopress
$ cd -

これで以降、http://octopress.dev へとアクセスするだけでpublic内の様子を見ることが出来ます。

rake previewの様にディレクトリの監視をしながらpublishされてないものも 含めて見たい場合は

$ rake watch

を実行すると同様に監視状態に入るので、 http://octopress.devで見るページもアップデート される様になります。

Thinの導入

OctopressとPreviewで検索するとthinを代わりに使ったら高速になるよ という記事が結構ひっかかりますので、例に漏れずに試してみました。

まず、Gemfile

$ gem 'thin'

を追加し、bundle installしてthinを導入します。

この段階でOctopressのトップディレクトリで

$ thin start

とするとhttp://localhost:3000で プレビューにアクセス出来ます。

また、thinがGemfileに書いてあると、通常のrake previewもthinを使う 様になります。

thinの導入についてはこちら

Ref: ctopressのRake Previewにthinを利用してプレビューを高速化する

でpull requestされていて次のversion 2.1ではthinを使う様になるようです。 こちらのリクエストと 共にブランチにマージされています。

正直な所、Webサーバー自体はそれ程負荷がかかるものでもないので、 あまりWEBrickとthinの違いは感じませんでした。 (それ以上にpreviewで監視に使われるリソースのが大変。)

SimpleHTTPServer

SimpleHTTPServerは簡単にWebサーバーを立てる事が出来るpythonのモジュールです。 rubyから一歩離れたいときに…

コマンドを打ったディレクトリをルートとしてサーバーを立ち上げるので、 rake generateした後にpublicディレクトリへ行き

python -m SimpleHTTPServer

とします(勿論pythonが導入済みな事を前提で)。 この場合にはポート8000http://localhost:8000がデフォルトで使われます。(違う番号にしたい時はコマンドの最後に番号を与えてれば変更出来ます。)

この場合でもrake watchと併用すれば自動アップデートが出来ます。

# まとめ rake preview/rake watchは自動で変更を取り入れてアップデートしてくれるので 便利なのですが、 結構負荷がかかるのであまり長い間動かしておけるものではないと思います。 (全然問題無い様なマシンなら別として…)

また、previwwatchによる自動生成だと、たまに1回エラーを出してしまった時に 回復できずに結局generateなりし直す必要があることもあります。 (変なファイルが残ってしまうこともあるのでどうしても駄目ならrake cleanも試すとエラーが消える事があります。)

その辺も含めて、普段使う方法としてはMacでは

  1. rake generateでpublicフォルダを生成
  2. Powを使ってhttp://octopress.devを開いて確認
  3. 変更が必要なら変更する。
    • もし頻繁にチェックしたい場合はrake watchと併用してPowで。

と言った感じが一番楽でマシンにも優しいかな、と。

Windowsの場合でも1つのターミナルでrackup --port 4000/thin start動かしておいて Powの様にして、必要に応じてgenerateなりrake watch した方が普通にpreviewするよりは軽く使えるかな、と。 (ずっとpreviewしっぱなしでも良いくらいのスペックを持っていれば良いだけなんですが…)

Ref:

Sponsored Links
  1. 公式ページ http://www.webrick.org/が見つからないけど、 wikiにも無いページがあるのでしょうか…?(もうrubyの一部としてのドキュメントだけ?)

  2. Troubleshooting

Sponsored Links

« 初めてのpull request @ GitHub OctopressのIndexページの変更 »

}