経緯
2年前に @ssig33 さんの 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
補足: いろいろ弄ったところ
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.rb
の scan
メソッドから Comic.scan
を呼び出す分には問題ないやつです。
(こいつの呼び出し方わからなかった。もしかしたらブラウザ上から更新できる?)
その他
Mark-It-now で定義されている settings
テーブルでは cache_prefix_path
と cache_prefix_url
ってカラムがあります。
こいつを使うと crawl.rb
実行時に、DB にだけでなく cache_prefix_path
で指定したディレクトリ以下に
スキャンした画像ファイルをそのまま展開する感じになります。
その為にはまたいろいろ修正する必要があったのですが、今回は必要ない感じでしたので放置しました。
まとめ
今後本家リポジトリが更新されたら、パッチやらあててる部分は無くなると思います。
とりあえず予想以上に動作早くて便利だった。