Sinatraで簡易アンテナサイト作った
Sinatraって何ですか?って状態で適当になんか作ってみまた
【初心者向け】RubyとSinatra、アンテナサイトの作り方 - 文系学生のプログラミング入門
こちらのサイトを参考にしたのですが、ただの丸写しだと面白くないので、以下を変更しました
環境
ファイルの構成
main.rb public style.css views layout.erb index.erb
layout.erb
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>簡易アンテナサイト</title> <link href="style.css" type="text/css" rel="stylesheet" /> </head> <body> <h1>簡易アンテナ</h1> <%= yield %> </body> </html>
index.html
<ul> <% articles = [] %> <% while not @que.empty? %> <% url = @que.pop(true) %> <% rss = SimpleRSS.parse open(url) %> <% rss.items.each do |entry| %> <% article = [entry.title.force_encoding('utf-8'),entry.link] %> <% articles += [article] %> <% end %> <% end %> <% articles.each do |title,link| %> <li><a href="<%= link %>"><%= title %></li> <% end %> </ul>
index.htmlは参考サイトのようにしてもいいのですが、今後弄れるように配列に入れました
style.css
ul { list-style-type:none; } li { font-size:20px; margin:0 0 5px 0; border-bottom: 2px #000 solid; }
main.rb
require 'sinatra' require 'sinatra/reloader' require 'simple-rss' require 'open-uri' get '/' do urls = %w( http://mizchi.hatenablog.com/rss http://d.hatena.ne.jp/gamella/rss ) @que = Queue.new urls.map{|url| @que << url} erb :index end get '/it' do urls = %w( http://blog.livedoor.jp/itsoku/index.rdf http://jsksokuhou.com/feed/ ) @que = Queue.new urls.map{|url| @que << url} erb :index end
こんなんでこんなんができます
すごく簡単に作れました。記事の投稿時間は:pubDate辺りで取れるんですがRSSによって多少違うのでそこを処理してサイト数増やせばそれらしいアンテナサイトになると思います。phpでアンテナサイトを作ったことがあるのですがそれより少ない手順で作れると思います