読者です 読者をやめる 読者になる 読者になる

uoz 作業日記

様々な作業の記録を共有するブログです。

railsでツイートを集めまくるアプリ mongodbもつかう

ここに公開する。
https://github.com/uozias2/twcrawler-open

基本はここのサンプルの通りだが、
http://qiita.com/mosa_siru/items/ea2c5f7faec66347a10f
streaming apiを使ってみたりいろいろいじった

使ってるもの、使い方

・deviseとomniauthでtwitterにログイン
twitter gemでtwitter apiにアクセス
・mongoidを使ってmongodbに収集したツイートとかユーザのデータを入れる
・resqueを使って非同期処理

できること

・streaming apiからユーザidを収集する
・収集したユーザ自身とそのフォロワー、フレンドの一ヶ月以内のツイートを収集する(3200件制限があるけど)
・レートリミットに達したらちゃんと待つ

ちょっと変なところ

dataがdatumの複数形だということを知らないでscaffoldで作っちゃったので、
コントローラとかモデルの名前が変な感じになってるかもしれない



以下は環境を整える手順のメモ

必要なもの

rbenv
ruby 1.9.448
rails 3.2.15
mongodb 2.4.8
redis 2.6.17

準備

yum

sudo yum -y install yum-priorities

git

yum install git

rbenv

本体

http://tsuchikazu.net/linux_ruby_on_rails_install/
mkdir src
cd src
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

ruby-build

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv install
rbenv install 1.9.3-p484
rbenv global 1.9.3-p484

mongodb 2.4.8

yumレポジトリの追加

http://kzy52.com/entry/2013/07/15/225402

# /etc/yum.repos.d/10gen.repo
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=0

インストール

$ sudo yum install mongo-10gen mongo-10gen-server —enablerepo=10gen
$ sudo service mongod start
$ sudo chkconfig mongod on

redis 2.6.17

インストール

http://9ensan.com/blog/server/sakura-vps-redis/

wget http://download.redis.io/releases/redis-2.6.17.tar.gz
tar zxvf redis-2.6.17.tar.gz
cd redis-2.6.17
make
sudo make install

デーモン化

http://www.dollpaper.com/info/513.html

$ mkdir /etc/redis
$ mkdir -p /var/redis/6379
$ cp utils/redis_init_script /etc/init.d/redis_6379
$ cp redis.conf /etc/redis/6379.conf


$ vi /etc/redis/6379.conf


#daemonize no
daemonize yes
#pidfile /var/run/redis.pid
pidfile /var/run/redis_6379.pid
#logfile stdout
logfile /var/log/redis_6379.log
#dir ./
dir /var/redis/6379


$ vi /etc/init.d/redis_6379


# chkconfig: - 58 74
# description: redis_6379 is the redis daemon.


$ chkconfig --add redis_6379
$ chkconfig redis_6379 on
$ /etc/init.d/redis_6379 start
$ netstat -an | grep 6379


後は、こんな感じでアプリを落として起動

git clone https://github.com/uozias2/twcrawler-open.git
cd twcrawler
bundle install
bundle exec rails s -d
QUEUE=get_tweets nohup rake environment resque:work >> result.log & 

!ただし、app/models/client.rbとconfig/initializers/devise.rbにtwitter developersのページからもらったシークレットキーとトークンをいれないとダメです。