動かざることバグの如し

近づきたいよ 君の理想に

Rubyのインストールめも

ダウンロード&インストール

今回はRVMで管理する

  • --rubyをつけることでRVMのインストールのついでに最新版のRubyも同時にインスコ
  • 途中依存パッケージのインストールのためにユーザーのパスワード聞いてくるかも
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.erbindex.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>