ダウンロード&インストール
今回はRVMで管理する
curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm list
で現在インストールされているRubyのバージョンが確認できるので使うRubyのバージョンを指定
rvm use ruby-2.1.2
Hello Worldを表示させる
プロジェクトごとにライブラリを独立させるべく、bundlerを使うのが吉とのこと。
適当なディレクトリ上でbundle init
するとGemfileがインストールされるので以下のようにする
# A sample Gemfile source "https://rubygems.org" gem 'sinatra' #←これを追記
そしてインストール
bundle install --path vendor/bundle
適当にapp.rbでも作って
require 'sinatra' get '/' do "Hello World!" end
で以下を実行
bundle exec ruby app.rb -o 0.0.0.0
そのままhttp://example.com:4567にアクセスするとHello World!が表示される
bundle exec時に-o 0.0.0.0
つける理由はhttp://qiita.com/u1_fukui/items/b86b21f6ed39f4c10d5d参照
Sinatra自動リロード
上記のままだとapp.rbを更新したら逐一bundleコマンドを叩かなくてはならない 面倒なので自動化しよう
以下をGemfileに追記
gem 'sinatra-contrib'
その後bundle install
を実行
app.rbを以下に書き換え
require 'sinatra' require "sinatra/reloader" if development? get '/' do "Hello World!" end
ビューを使ってみる
テンプレートエンジン:ERBの例
Gemfileと同じディレクトリにviewsフォルダを作成し、その中に layout.erbとindex.erbを作成
layout.erb
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title></title> </head> <body> <%= yield %> </body> </html>
index.erb
<h1><%= @hello %></h1>
そしてapp.rbのgetの部分は以下に変更
get '/' do @hello = "Hello" erb :index end
超簡易RSSあんてなサイトを作成
Simple RSSを利用する
gem 'simple-rss'をGemfileに追記 もちろんbundle install
も忘れずに
app.rb
require 'sinatra' require "sinatra/reloader" if development? require 'simple-rss' require 'open-uri' get '/' do @rss = SimpleRSS.parse open('http://rss.dailynews.yahoo.co.jp/fc/rss.xml') erb :index end
index.erb
<ul> <% @rss.items.each do |entry| %> <li><a href="<%= entry.link %>"><%= entry.title %></a></li> <% end %> </ul>