MongoDBの翻訳全般については、 こちら参照。
前々回、前回に引き続き、もうちょっとResqueの練習。試しに、このブログの更新情報をTwitterに流す仕組を作ってみた。twitterfeed的なことをする感じで、ブログに投稿したら、Twitterにリンクをポスト、またN時間後にポスト、という感じで。うざそうなので実際には使わないかも。
追記: resque-schdulerのcron的な使い方について別のエントリで書いた。
このN時間後に投稿の部分にresque-schedulerを使ってみた。
Twitterへ投稿するライブラリは、grackleを使ってみた。特に深い理由はない。単純にポストするだけだから何でもいいかな、という感じで、簡単そうに使えそうなのを選んだ。
とりあえずインストール。
gem install grackle
gem install resque
gem install resque-scheduler
Twitterにポストするためのクラスを作成する。このクラスは、 performメソッドを実装する。その中でtwitterに投稿するコードを書く。performの引数としてPostしたい文字列を渡すことにする。
class MyTwitter
@queue = :normal
def self.perform(status)
options = Sinatra::Application.options
client = Grackle::Client.new(:auth=>
{:type=>:basic,
:username=>options.twitter_username,
:password=>options.twitter_password})
client.statuses.update! :status=>status
end
end
Rakefileにschedulerのタスクを追加:
require 'resque/tasks'
require 'resque_scheduler/tasks'
これで、準備完了。
scheulderを起動する。
rake resque:scheduler
後はTwitterに投稿したいところで、
# すぐに投稿したい場合 (resque標準)
Resque.enqueue(MyTwitter, "post post post")
# 10時間後に (resuque-scheduler)
Resque.enqueue_in(10.hours, MyTwitter, "post post post")
# 投稿したい日付が決まっている (resuque-scheduler)
Resque.enqueue_at(Time.local(2010, 1, 31, 10, 30), MyTwitter, "post post post")
と言った感じ。とても簡単。
正確には、実行される時間ではなくて、Queueに入る時間なので実際には少し後に実行される。
このブログのバックアップ取らないとなー、と思って、バックアップのところを読みながら訳した。
いくつか方法はあるようだが、とりあえずmongodumpで自分は問題なさそうだ。
こんなスクリプト作ってcronに入れた。1週間ローテーションなので、壊れたまま一週間経つと全部消えるけど、ここならその程度で十分。
#!/bin/sh
dir_dump=${HOME}/backup/dump_`date +%u`
rm -rf ${dir_dump}
/usr/local/bin/mongodump -o ${dir_dump}
MongoDBの翻訳については、 こちら参照。
Gentoo Linuxのパッケージ管理システムPortageを他のOSでも動くようにしているプロジェクトがある。Mac OS X版もそのプロジェクトによってメンテされている。
何がいいか、
- 好きな場所にインストールできる。root権限がいらない
- Gentoo Linux本体のすばらしいパッケージ群が使える
- Gentoo Linux本体のすばらしい管理コマンドが使える
任意の場所にインストールできるので、当然MacPortsとかとの併用もできる。
インストールが若干かっこ悪いのがあれだけど、 Gentoo Prefix Bootstrap Process for Mac OS X 参照。特に読まなくてもコマンドのところだけ追っていけばだいたいいけるはず。
もし、途中でやめたくなっても、 export EPREFIX="$HOME/Gentoo" で指定したディレクトリを削除すれば、すべてきれいさっぱりなくなるのでご安心を。これもまたGentoo Prefixのすぐれているところ。
Portage自体についての説明は、 http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=2 とか参照。
おまけ:
これを書こうと思ったのは、 このエントリを見たから。 Gentoo Prefixで入れたrubyなら、eselect というコマンドでRubyのバージョンを簡単に切り替えられるのになー、と。Mac OS X上のGentoo Preixならroot権限もいらずにお手軽。