2014/01/18(土)Rubyでtwitterライブラリを動かすまでのあれこれ

環境はWindows7(64bit)。

各所にやり方はまとまっているのだが、ここしばらくのTwitterの仕様変更やRuby特有のwinケアの甘さでちょいハマリしたのでメモ。

なお、gem installの項でmswin32版(ActiveScriptRuby 1.8~2.1全て)は環境構築できなかったので、minGW版 2.0.0の話になる。

gem install twitter周り

gem install twitterが通らない。依存で入ってくる"atomic-1.1.14"パッケージが鬼門の模様。
atomic_reference.c(75) : fatal error C1189: #error :  No CAS operation available for this platform
このエラーで止まる。

mswin32版では結局打開できず。

minGW版で打開できた。
どうやらコンパイラ=gccかつgcc4.8.1以降でないとソース変更なしではコンパイルできないらしい。以下参照。
failed compile with atomic-1.1.14.gem · Issue #32 · headius/ruby-atomic · GitHub

バイナリを集める。

RubyInstaller for Windows
minGW版Ruby最新の2.0.0-p353+DevKit-mingw64-32-4.7.2-20130224-1151を取ってくる。

MinGW | Minimalist GNU for Windows
gccはDevkitの4.7.2では×。MinGWを別に入れてgcc 4.8.1を取ってくる。

以下2箇所にパスを通す。
MinGW\bin
MinGW\msys\1.0\bin

dk.rb init, dk.rb installを終えた後に、
Ruby200\lib\ruby\site_ruby\devkit.rb
を書き換える。
$ diff devkit.rb.orig devkit.rb
10d9
<   ENV['PATH'] = 'C:\\online\\Ruby200\\devkit\\bin;C:\\online\\Ruby200\\devkit\\mingw\\bin;' + ENV['PATH']
devkit内のPATH追加を削っただけ。

これでgem install twitterが通るようになった。

token取得

RubyでTwitterのapiを使ってみる - D-ramu blog
twitter側にアプリを登録するまでは上記参照。

自分の環境ではget-twitter-oauth-tokenは上手く動かなかったので、tokenは以下のやり方で取得した。
RubyでTwitterのOAuth認証のアクセストークンを得る手順 - Qiita [キータ]

ssl周り

いざアクセスしようとすると、sslでエラー。
c:/online/Ruby200/lib/ruby/gems/2.0.0/gems/twitter-5.5.1/lib/twitter/rest/client.rb:143:in `rescue in request': SSL_connect returned=1 errno=0 state=SSLv3 read
server certificate B: certificate verify failed (Twitter::Error)
証明書がRubyから見えてないですね。
以下を参考に設置。
igaiga diary(2013-06-17)

api周り

twitterライブラリの仕様もちょくちょく変わってるので注意。

3分でスッキリ! Oauth 1.0図解とRuby Twitter bot開発 | KumanBlog

よく見かけるドキュメントと、configへのアクセスやconfig内のkey名が変わってる。

RTFM。
File: README ― Documentation for twitter (5.5.1)

2014/01/16(木)clは環境変数PATHからインクルードファイルを探さない

メモだけ。

環境はWindows7(64bit), mswin32版Ruby 1.8(ActiveScriptRuby)。

gemで要コンパイルのライブラリ入れるときにコンパイルに失敗する。
c:\online\ruby\lib\ruby\1.8\i386-mswin32\win32/win32.h(31) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x2' Stop.
原因。mswin32版RubyはMS VC++をコンパイルに使用する。コンパイラCL.exeは環境変数"PATH"にINCLUDEファイルのディレクトリを記述していても見に行かない。

初歩的な話だが、ここんとこMS VC++コンパイラ触ってなかったのですっかり仕様を忘れていた。

対策は、環境変数INCLUDEに記述するか、/Iオプションで明記してやる。

gemの中いじるのめんどくさいので、eveで環境変数INCLUDEにディレクトリを追加した。

[参考]
/I (追加インクルード ディレクトリ)

そろそろbundler周りも覚えた方が良さそうだ。
OK キャンセル 確認 その他