Ruby on Rails5超入門を第6章までを終えてみての感想

技術Ruby

「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]

技術Ruby

Posted by sensiki