昨日、RPi Model B+にRuby 2.1.2をインストールするところまで終わったので、
今日は東京メトロから提供されているサンプルをRPi上で動かしてみます
(このサンプルへのリンクは開発者登録しないと見えないかも)
1. ホームディレクトリにSample1ディレクトリを作成
mkdir sample1
2. sample1ディレクトリ内へ移動し、bundleを初期化してGemfileのテンプレ生成
cd Sample1
bundle init
3. sample1ディレクトリ内に出来たGemfileをnanoで開いて編集(...というかサンプルのページからコピペ)、
これでは動かないがそれは後述
nano Gemfile
4. Gemfileに基づき、Gem(s)をvendor/bundle以下にインストール
bundle install --path=vendor/bundle
5. sample1ディレクトリ内にnanoでstationList.yamlを作成、内容は取り敢えずサンプルページからコピペ
nano stationList.yaml
6. Sample1ディレクトリ内にviewsディレクトリ作成
mkdir views
7. sample1/viewsディレクトリ内にindex.erbとshow.erbをnanoで作成、内容はサンプルページからコピペ
nano index.erb
nano show.erb
8. ようやくプログラム本体app.rbをSample1ディレクトリ内にnanoで作成、内容はサンプルページからコピペ
nano app.rb
9. app.rbを起動し、Web serverでポート4567(追記 デフォルト?、変更はapp.rb内で set :port, xxxx)を監視させる
bundle exec ruby app.rb
ところがこの段階で、app.rbの1行目でコケる^^;、"httpclient"が無いからload出来ないとのこと...
Rubyとbundleについては、これまで全く触ったことは無いですが、
ここまでの流れでいうと上記3.で指定したGemにこの"httpclient"が入っていなかったはず...、
取り敢えず足してみようか^^;
10. 上記3.で編集したGemfileを再度nanoで開き、一番下に1行追記
nano Gemfile
「gem 'httpclient'」を追記(「」は不要^^;)
11. 上記4.のステップを繰り返し、httpclientがvendor/bundle以下にインストールされるのを確認する
bundle install --path=vendor/bundle
下ではhttpclient以外は3.でインストール済となっている
12. おもむろにapp.rbを実行
bundle exec ruby app.rb
Thin web serverが起動した!(Back to the Future!!!)
13. ここでxstartして(実際はWindow7からXmingで窓を開いた)、Browserからhttp://127.0.0.1:4567/を開く、
検索画面が出る^^
14. stationList.yamlには大手町と東京しか記述されていないので、例題通り大手町でトライ、すると...
同じ路線が2個ずつあるのは「上り/下り(都内ではどう判別?)」なのだが、
行先が表示されていない(=東京メトロのサンプルページと表示が異なる)、ん?
あとWindows機からこのRPiのIPアドレス叩いてもつながらない(?)、
これはSinatraがデフォルトでlocalhostしか見に行かない設定になっているとのことで、
app.rbの最初の方(必要なGemをloadした後)に、set :bind, '0.0.0.0'を追記したところ、
Windows機のFireFoxからきっちり表示されました^^
IP直叩き
hostnameでも(念のため^^;)
ここまで全くコードを読まずに(Ruby経験ゼロなので)進めてきましたが、
「行先」が表示されない件は納得がいかないのでこれから調べてみます...
追記: stationList.yamlに無い駅は表示されない!、自分でポチポチ駅を追加します^^;
取り敢えずここで出来たことは、
- RPiにRuby2.1.2を入れた
- 東京メトロの開発者登録をした(アクセストークンが無いとAPIを使えない?)
- sample1をRPi上で再現した
- Sinatra/Thinで宅内LANにWebserverを公開出来た
駄目だったのは
- httpclientを取り敢えずGemfileに追記したが、これでいいのか?
- stationList.yamlが寂しい^^;、ポチポチ足さねば...
- そもそも、Rubyの使い方を覚えねば...
- サンプルのままなのに、照会結果で「行先」表示が出来てない
---> stationList.yamlを埋める(下は荻窪だけ足してみた状態、表示出来てる、当たり前^^;)