8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ruby+sinatraでお試しRSSアンテナサイト

Last updated at Posted at 2016-12-10

 高知工科大 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  

#ソースコード

main.rb
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
index.erb
<ul>
  <% @rss.contents.each do |entry| %>
    <li><a href="<%= entry.url %>"><%= entry.title %></a></li>
  <% end %>
</ul>

layout.erb
<!DOCTYPE html>
<html lang="ja">
<head>
  <mata charset="utf-8">
  <title>RSSアンテナ</title>
</head>
<body>
  <h1>RSSペルソナアンテナ</h1>
  <%= yield %>
</body>
</html>

#実行

console
$ruby main.rb

スクリーンショット 2016-12-10 13.00.00.png

上記のようなものが表示されればローカルサーバーが立ち上がっています。
そのままブラウザで http://localhost:4567と打ち込んでアクセスしてみましょう。
すると下記のようなサイトに飛んでるはずです。
スクリーンショット 2016-12-10 10.35.20.png

#終わりに
とりあえず表示するまでなら割と簡単にできました。ただ、現状はRSSの情報を一つのサイトからしか取得できていないので改良したいなぁと思いました。
あと間違ってる点があったら教えていただければ幸いです。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?