Thanks Driven Life

日々是感謝

Mark-It-now を動かしてみた

経緯

2年前に @ さんの Mark-It-now を見て、試してみたいなーと思いつつも

インストールとデプロイ

Ruby 1.9.3 と groonga に依存しています。詳細は後で書く。

とあり、なかなか手を出せずにいて結局諦めてしまいました。

そして昨年末の ssig33.com - コミックマーケット 85 に出ます のを読んだところ

頒布方法としては PDF だか HTML だかとすぐに pig と Mark It Now を使える Vagrant box を入れた CD-ROM を頒布する形を考えています。

コミケ不参加者で残念ながらゲットできないな」と残念がっていましたが、今の僕ならできるのではないか、と思い再挑戦してみました。 2年前と違って Vagrant とか Puppet といったツールが使えるようになっていたというのも大きな理由。

Mark-It-now 動作環境構築する Vagrantfile

gongo/vagrant-Mark-It-now を作ってみました。

local$ git clone https://github.com/gongo/vagrant-Mark-It-now
local$ cd vagrant-Mark-It-now
local$ vagrant up

Vagrantfile を見ればわかると思いますが、今回は Ubuntu 13.10 を使用しました。 あと、Ruby は 1.9.3 で動くと書いてありましたが、なんとなく 2.0 でも動いたのでそんな感じに。

vagrant up が完了したら仮想マシンにログインしてあれこれします

local$ vagrant ssh
vagrant$ cd Mark-It-now
vagrant$ bundle install --path vendor/bundle --without test
vagrant$ RAILS_ENV="production" bundle exec rake db:setup
vagrant$ RAILS_ENV="production" bundle exec rake assets:precompile
vagrant$ bundle exec unicorn_rails -E production

unicorn_rails を起動したあとはホストマシンから http://localhost:8080 にアクセスすると、ログイン画面が出ると思うので

項目
username 任意
password "password"

でログインできると思います。

読みたい Zip ファイルの準備

もちろん、このままでは読みたいファイルはまだシステムに登録されていないので、その準備をします。

vagrant$ cd Mark-It-now/
vagrant$ mkdir data

としたのち、この data ディレクトリの中に zip ファイルを放り込んでください。 上述の通り vagrant で起動しているのであれば、ホストマシンの vagrant-Mark-It-now/data とかにファイルを準備しておいて

vagrant$ ln -s /vagrant/data /home/vagrant/Mark-It-now/data

とかするのも良いでしょう。

zip ファイルの準備ができたら以下のコマンドを実行してください

vagrant$ RAILS_ENV="production" bundle exec ruby crawl.rb

こうすると data/ 以下に置かれたファイルをスキャンしていってシステムに登録されます。

vagrant$ ls /home/vagrant/Mark-It-now/data
curry.zip  karaage.zip

f:id:gongoZ:20140105234528p:plain

補足: いろいろ弄ったところ

manifests/default.pp を見ればわかると思いますが、補足

config/database.yml

見たまんまです

cnofig/config.yml

ログイン画面で使うパスワードと salt 値。ユーザ名は認証で使わずにセッションでのみ使うらしい?

provision 時には password となっているが、もし自分で決めたい場合は

vagrant$ bundle exec ruby password.rb

とかして使いたいパスワードを入力すると、config/config.yml が更新されます。

パッチあてたところ

crawl.rb 実行時にエラーになってたところを、とりあえず動くようにした感じです。

ちなみに app/controllers/page_controller.rbscan メソッドから Comic.scan を呼び出す分には問題ないやつです。 (こいつの呼び出し方わからなかった。もしかしたらブラウザ上から更新できる?)

その他

Mark-It-now で定義されている settings テーブルでは cache_prefix_pathcache_prefix_url ってカラムがあります。 こいつを使うと crawl.rb 実行時に、DB にだけでなく cache_prefix_path で指定したディレクトリ以下に スキャンした画像ファイルをそのまま展開する感じになります。

その為にはまたいろいろ修正する必要があったのですが、今回は必要ない感じでしたので放置しました。

まとめ

今後本家リポジトリが更新されたら、パッチやらあててる部分は無くなると思います。

とりあえず予想以上に動作早くて便利だった。