2016.6.23
ろんぐさんのRuby入門#2【twitter bot#2】
テストの前に
そもそもRubyが動かせなきゃ意味がねえよなということに気づきました。
ローカルであればコマンドプロンプトから・・・・・・
でいいんですけど、以前にもハマりましたが
ローカルからtwitter側に干渉できないというセキュリティ上の問題がありましてね。
まぁ、抜け道はありそうなのですが、調べてもなんだかめんどくさそうなので諦めてサーバー上で実行させることにします。
ただ、サーバー上ではコマンドプロンプトなんて使えるわけないですね。まぁ使えるところもありますが一般的なレンタルサーバーだとたぶんないです。
それに、常識的に考えて直アクセスでrbファイルが実行できるわけがありません。じゃあどうやって実行させるかですね。
もちろん、cronを使うという手もありますが、これは定期実行に使うものでテストとして使うものじゃないです。
やっぱり理想は、アクセスしてテストできる形がいいわけですね。
で、結局具体的にどーすんねん、って話ですね。だいたい以下の流れです。
1.cgiとして実行させる(Rubyのパスを入れればRubyとして動く)
2.htaccessで.rbを.cgiとして認識させる
そういや、よくフリーCGIとかでPerlへのパスとか書かされましたけど、ああいうことをやるわけですね。
そもそもCGIってのは仕組みであり言語じゃないので。
今まであんま意識したことなかったんで知りませんでした。
htaccessの編集は、動かすだけなら要らないんですがいちいちアップロードの度に拡張子変えるとかめんどくささの極みでしかないのでこっちで弄っちゃいましょう、っていう。
この2つのステップをこなせば
ブラウザアクセスでrbファイルが実行できるということになりますね。
ということで
このページとかを参照してやってみましょう。
とりあえず、テストコードをばばん。
#!/usr/bin/ruby2.0.0
print "Content-Type: text/html\n\n"
print "Hello";
これをアップロードすれば動きます。
大事なのは
フォルダとファイルのパーミッションを755にすることぐらいですね。あと、三行目のヘッダがないといかんそうです。
では、.htaccessを書き換えてみましょ。
AddHandler cgi-script .rb
AddType "text/html; charset=UTF-8" .rb
|
これで拡張子.rbのままでもプログラムが動かせるようになりました。めでたしめでたし。
ということで、twitterに関する部分だけコメントアウトでもしてローカルテストをして、twitterでの動作確認ではコメントを外してサーバーでテストする・・・・・・ということがこれでできるようになったわけです。
あと更に
サーバーにどうやってgem入れんねんっていう課題がありましたね。ちょっとめんどくさそうなのでこれは次回に・・・・・・(笑)