ユウの小屋

PCの更新内容やSLPでの活動、開発したもの等をupしていきます

RubyプログラムからTwitterに呟く

Rubyで簡単なTwitterアプリを作成し、呟くところまでやりました。

手順は以下の通り

① Gem で 'twitter' をインストール

② アプリをTwitterに登録

③ Consumer key や access token を取得

Ruby プログラムを作成して実行

 

◯ Gem で 'twitter' をインストール

まず、Gem で 'twitter' をインストールするために以下のコマンドを実行。

すると、UTF-8が何たらというエラーメッセージが。

<< gem install twitter
ERROR: While executing gem ... (ArgumentError)
invalid byte sequence in UTF-8

ググってみると、Gem や Ruby に関する問題のようなので、まず rbenv を調べてみることにした。

ところが、rbenv のバージョンを調べようとしても、コマンドが not found で弾かれる。 どうやら、bash から zsh に乗り換えた際に、必要な操作を忘れていた様子。

.zshrc に下記の2文を記述してから、一番のコマンドを実行する。

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

<< $SHELL --login

その後、もう一度 gem install すると、うまくいった。

 

◯ アプリを Twitter に登録

まず、http://dev.twitter.com/apps/new を開く。

そこで、アプリ名(via の部分に表示される)や概要を入力して、Create app を押す。

登録の詳細は、下記のサイトを参照した。

http://route477.net/w/RubyTwitterJa.html

 

◯ Consumer key や access token を取得

アプリ登録後、Keys and Access Token タブの Consumer key や Consumer secret を控える。

そして、Permissions タブから権限を Read, Write and Access direct messagesに変更して、種々の操作ができるように設定。

さらに、自分のTwitterアカウントに、作成するアプリがアクセスできるように、Access Token を作成する。Keys and Access Token タブに移動して作成後、Access Token や Access Token Secret を同じように控える。

 

◯ Ruby プログラムを作成

いよいよ、Twitter アプリの作成に移る。

サンプルコードをググって、下記のように記述。

require 'rubygems'
require 'twitter'

CONSUMER_KEY = " <控えておいた Consumer Key> "
CONSUMER_SECRET = " <控えておいた Consumer Key Secret> "
ACCESS_TOKEN_KEY = " <控えておいた Access Token> "
ACCESS_TOKEN_SECRET = " <控えておいた Access Token Secret> "

Twitter.configure do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.access_token = ACCESS_TOKEN_KEY
config.access_token_secret = ACCESS_TOKEN_SECRET
end

Twitter.update("rubytest")

ところが、とてつもない量のエラーを吐かれてしまった。

もう一度ググってみると、上記のコードはバージョンアップ以前の古い書き方であった。これに関しては、以下のページを参照した。


Ruby - Twitter Gem 不具合! - mk-mode BLOG

最新の書き方に直して以下のように記述、実行するとうまくツイートできた。


require 'rubygems'
require 'twitter'
require 'pp'

YOUR_CONSUMER_KEY = " <控えておいた Consumer Key> "
YOUR_CONSUMER_SECRET = " <控えておいた Consumer Secret Key> "
ACCESS_TOKEN_KEY = " <控えておいた Access Token> "
ACCESS_SECRET = " <控えておいた Access Token Secret> "

client = Twitter::REST::Client.new do |config|
config.consumer_key = YOUR_CONSUMER_KEY
config.consumer_secret = YOUR_CONSUMER_SECRET
config.access_token = ACCESS_TOKEN_KEY
config.access_token_secret = ACCESS_SECRET
end

client.update("kusonemi")

 

◯ 補足

作成したRubyプログラムを実行するたびに、以下の様な警告が出るので、対策をして出ないようにした(環境はWindows8)。

cygwin warning:
MS-DOS style path detected: C:/Users/takuya/Desktop/test.rb
Preferred POSIX equivalent is: /home/takuya/Desktop/test.rb
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

まず、デスクトップ→設定→コントロールパネル→システムとセキュリティ→システム→システムの詳細設定 と移動。

次に、詳細設定タブの環境変数ボタンを押す。

ここで、環境変数 CYGWIN を追加、または編集し、tty nodosfilewarning と記述。

設定を保存して再度Rubyプログラムを実行すると、警告が出なくなった。

この作業は、以下のページを参考にして行った。


cygwin がMS-DOS形式のパスをWarningするので消した - それマグで!