高知工科大 Advent Calendar 2016 の10日担当のstmnです。
最初はpython画像処理しようと思っていたのですが、無性にrubyを書きたくなったのでrubyで何かしようと考えてました。あと、せっかくrubyで書くのなら「rubyならではのことしたい」ということで、以前少しだけ触ったことのあったSinatraで遊んでみることにしました。
#Sinatra
Sinatraはrubyで作成されたwebアプリケーションフレームワークです。有名なRuby on Railsと比べて手間がかからず気軽に制作に取り組めます。しかしその反面、最低限の機能しかないので自分で拡張していくことが必要になります。
#やりたいこと
とりあえず、RSS情報をとってきてブラウザ上に記事のURLなんかも表示させるってのが目的です。
RSS情報をとってくるサイトは自分が好きなペルソナのまとめからにしました。
#制作
んじゃ、作っていきます。
まずはディレクトリやファイルの配置についてこんな感じです。
今回、自分が作業をする親のディレクトリ名はsinatraにしてます。
sinatra
├ main.rb
└ views
├ layout.erb
└ index.erb
#ソースコード
require "rubygems"
require "bundler/setup"
require "sinatra"
require 'rss_custom'
get '/' do
# RSS情報取得
parser = RssCustom::Parser.new("http://p5jouhoukyoku.jp/?xml")
parser.parse
@rss = parser
erb :index
end
<ul>
<% @rss.contents.each do |entry| %>
<li><a href="<%= entry.url %>"><%= entry.title %></a></li>
<% end %>
</ul>
<!DOCTYPE html>
<html lang="ja">
<head>
<mata charset="utf-8">
<title>RSSアンテナ</title>
</head>
<body>
<h1>RSSペルソナアンテナ</h1>
<%= yield %>
</body>
</html>
#実行
$ruby main.rb
上記のようなものが表示されればローカルサーバーが立ち上がっています。
そのままブラウザで http://localhost:4567と打ち込んでアクセスしてみましょう。
すると下記のようなサイトに飛んでるはずです。
#終わりに
とりあえず表示するまでなら割と簡単にできました。ただ、現状はRSSの情報を一つのサイトからしか取得できていないので改良したいなぁと思いました。
あと間違ってる点があったら教えていただければ幸いです。