Sinatra使って、はてなブログのRSSを取得してみる
前から気になっていたSinatraを使ってみました。
2日間触ってみた感想ですが、かなりの容易さを感じました。
もちろん躓くところは多々あったのですが、全く手に負えないと言う程ではなく、なんとか一人でも解決していけました。
参考にしたサイト
とりあえず色々なサイトを参考にさせてもらいながらRSSを取得して表示させるところまでやってみます。
– sinatra入門
– [Ruby] Sinatra超入門
環境
- MacOS Sierra 10.12.3
- Ruby 2.3.3p222
GEMS
設定開始
まずはSinatraなどのインストール
[shell]
$ bundle init
[/shell]
Gemfileの編集
[shell]
$ emacs Gemfile
gem “sinatra”
gem ‘sinatra-contrib’
gem ‘thin’
[/shell]
thinはwebrickの代わりに使います。thinを入れるとこっち優先で使ってくれるらしい。
[shell]
$ bundle install –path vendor/bundle
[/shell]
処理を書いていきます
myapp.rb 名前は適当に・・・
$ emacs myapp.rb
[shell]
require ‘sinatra’
require ‘sinatra/reloader’
require ‘rss’
before do
@title = “おいどんブログまとめ”
end
get ‘/’ do
feeds = []
feeds.push(“https://blog.tstylestudio.com/feed/”)
feeds.each { |feed|
@rss = RSS::Parser.parse(feed)
}
erb :index
end
[/shell]
before do〜endはget ‘/’ doの実行前に呼ばれる。
feedsは将来的に複数のサイトからrssを取得したいと思ってるので、配列で宣言しておく。
erb :indexでviews/index.erbの内容を表示する。
またviews/layout.erbがあれば、これが一番最初に読み込まれる。
通常、layout.erbをベースにして、このファイルからindex.erbなどを読み込む処理を追加する。
$ emacs views/layout.erb
[shell]
<%= yield %>
[/shell]
$ emacs views/index.erb
[shell]
-
<% @rss.items.each do |entry| %>
-
<%
en = {"Jan"=>1, “Feb”=>2, “Mar”=>3, “Apr”=>4, “May”=>5, “Jun”=>6, “Jul”=>7, “Aug”=>8, “Sep”=>9, “Oct”=>10, “Nov”=>11, “Dec”=>12}
dt = entry.pubDate.to_s.split(‘ ‘)
entry_day = sprintf(“%s年%s月%s日”, dt[3],en[dt[2]],dt[1])
%><% if entry.enclosure.nil? %>
<% else %>
<%= entry_day %>起動
[shell]
$ bundle exec runy myapp.rb
[/shell]ブラウザでhttp://localhost:4567にアクセスする。
上手くいけばRSSが取得できてるはず。