リクエスト結果を絞る
read_bodyから1行1行読むことができたので、
次は必要な情報は何かを判断。
これは、ソース書く前に、1例でも結果を見てそうするかを考える。
某テニスサイトは、結構法則的に、エントリを出しているので
法則を決めて、結果を絞れそうなところまで分かってきました。
read_bodyの続き
ライブラリにも書いてある、サンプル的なソース
ーーーー
http.request_get(url.path) {|res|
res.read_body do |segment|
print segment
end
}
-----
ここでいじってみて分かったのは、read_bodyで読み込む
segmentは、1行じゃなかった。。。。
resを1行1行みて、情報を絞りたい場合はもっと条件が必要。
https.request_get(url.path) {|res|
res.read_body do |segment|
segment.each_line do |line|
#
# ここで、情報を絞ったりなんかしたり。。。。
#
print line
end
end
}
ググッ手もこんな例は出てこない。
まぁたいてい、APIたたいてJSON形式でレスポンスがあって
そこから処理っていう例が多い。
自分みたいなことをしたいってのは、レアなのかな。。。
called twiceが解決
NGなソース
ーーーーーーー
url = URI.parse('http://www.sample.com/')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
res.read_body do |segment|
print segment
end
ーーーーーーー
OKなソース
ーーーーーーー
url = URI.parse('http://www.asahi.com/')
http = Net::HTTP.new(url.host)
http.request_get(url.path) {|res|
res.read_body do |segment|
print segment
end
}
ーーーーーーー
駄目なソースで、http.request()をした時点でbodyを読むcallをしてい
たのかなという想像。その後に、read_bodyで再度callしているので、
called twiceといわれて、ioerrorみたいですね。。。
どこかちゃんとドキュメントを読むと、記述されてるのかな。
ruby の http read_body
read_bodyを見つけて、http get したものを全部見て
必要なものだけ表示したいと思った。
しかし、read_bodyがそもそもうまく動いていない。
called twice (IOError)とかいわれて、エラーとなる。
methodが古いのか、、、深追いするか、別の方法を考えるか。。。
rubyとhttp get
virtualbox と centos6 と ruby on rails
本日の作業メモ
自分の趣味のテニスで、某有名なオフサービスが、痒いところに手が
届かないので、自分でできるところをやってみようと作業を始めました。
まずは、railsのサーバで自分が見たいところのみを表示するようにして
ゆくゆくはスマホで簡単にアクセスできるようにしたいなと思ってるが、
どこまでできるかは、自分のスキルと時間次第かな....
自分的なメモを記録していくところです。
windows7にvirtualboxをインストール
[Downloads]-> [VirtualBox 5.0.16 for Windows hosts] でダウンロード
してインストール
●centos6.7
virtualboxに、centos6.7をインストール
日本のミラーサイトからisoイメージをダウンロード
http://ftp.riken.jp/Linux/centos/6.7/
その後、ぐぐって、インストール。
sshで接続できないなと、windows7のfirewallの設定や自分で
インストールしているzonealarmの設定を確認。
結局、デフォルトではsshdが起動していないというオチに。。。。
/etc/init.d/sshdを指定してstartさせれば、すんなり接続できた。
(puttyでの接続を確認)
余談だが、インストールしたcentos6.7はrunlevelが5だったが、不要なので
3にしてサーバ用にメモリを節約。
NetworkManagerが結構慣れない動きをするので、offにして
/etc/sysconfig/network-scripts/ifcfg-eth0
を編集。デフォルトではこのファイルがないので、自分で編集。
また、resolve.confを編集してもDNSの名前解決ができないので
こちらにDNS1=hogehogeとして、設定を追加。
GATEWAYもこちらに追加。
rubyは、ぐぐって出てきた所を参考にインストール。
http://qiita.com/murachi1208/items/f3f15b41d6651cc57368
gemやrailsもググッて出てきたようにインストール。
rails serverとすると、エラーしたので対処したのは以下。
vi Gemfile
これで、以下のコメントアウトをはずす。
# gem 'therubyracer', platforms: :ruby
そして、"bundle install"を実施。
その後、rails s -b xxx.xxx.xxx.xxxでアクセスできることが
確認できた。