Ruby on Rails5超入門を第6章までを終えてみての感想
「Ruby on Rails5超入門」という書籍が優れていたという記事をエントリしました。書籍の第6章までは進めました。だいぶ躓いたのでシェアの意味も込めてエントリします。
Ruby on Rails5超入門を第6章までを終えてみての感想
「Ruby on Rails 5 超入門」
第6章までを終えて つまづいたところ
p433付近、Yahoo!ニュースのヘッドライン表示システムのところ。
本のとおりに進めるとエラーが出て進めません。
秀和システムのサポートページにも特に言及していませんし、どうなっているのだろうと二日ほど思い悩んでおりました。
[blogcard url="https://qiita.com/laineek/items/871a0b93b4cbd82c8e2a"]
RSSパースエラーでしたがつまづきやすい部分をまとめてくれているページも、解決策としては「https通信ではないページを使いましょう」と言ってしまう始末。
でもRSSで情報を取得したら色々できることも増えるしなーということで修正しました。
修正前
def data
url = URI('http://news.yahoo.co.jp/pickup/rss.xml')
http = Net::HTTP.new(url.host)
response = http.get(url)
@data = Hash.from_xml(response.body).to_json.html_safe
end
修正後
class AjaxController < ApplicationController
layout 'ajax'
require 'net/https'
def index
end
def data
url = URI('https://news.yahoo.co.jp/pickup/sports/rss.xml')
https = Net::HTTP.new(url.host,443)
https.use_ssl = true
https.ca_file = 'GTE_CyberTrust_Global_Root.pem'
https.verify_mode=OpenSSL::SSL::VERIFY_NONE
https.verify_depth = 5
response = https.get(url)
@data = Hash.from_xml(response.body).to_json.html_safe
logger.info @data
end
end
これでyahooニュースを取得できるはずです。
所感
6章まで終えてみて、上記のエラーで悩みました。でも検索して、自分で考えて、コードを変えて・・・。こういった地道な作業が大切ですよね。
さて、RSSも使えるようになって、自分のやりたいことが実現できるだけのコードは手元に揃ったように思います。
ここからは本で学んだことを少しずつ応用していこうと思います。
以上です。
ありがとうございました。
[adsense]