5分でわかる Ruby を知らない人が Ruby の便利さを学べる記事をかいたよ

Ruby

Ruby を知らない人に Ruby の話をして欲しいと言われてないけど、ブログを書きました。(*1)

難しい話は抜きにしたいんだけど、抜きにしちゃうとまったく訳わかんないから簡単に説明する。

今回は Ruby の erb ってのを使って元ネタ同様のことを実現する。

mod_ruby が動くサーバなんて自分でつくらないとないだろうけど、

その辺はどうにかしてもらう。

erubyが導入されていれば、ファイルの1行目に #!/usr/bin/eruby -McKuCutf-8 とする。(*2)

そんなこんなで、どうにかしてもらったら、 <%= と %> で囲めば動きます。

どうにかしてもらったサーバで example.html というファイルの拡張子を example.rhtml すれば良いだけです。

<%= Rubyスクリプト %>

拡張子を変えずに動かすこともできます。 .html ファイルでも Ruby を使いたい場合は .htaccess ファイルに以下のように書けば良いだけ。サーバーによってはこれを禁止してたり、少しやり方が違う場合がありますが、大体動くので、どうにかしてもらった人に言ってください。

AddType application/x-httpd-eruby .rhtml .html

フレームの代わりに Ruby を使うってのがないので、参考になるのはありません。

致し方ないので、フレームの代わりにPHPを使うを参考にしてください。

ついでに Ruby を少しでも使えるようになれば、こんなことができるという一例を紹介します。

スポンサーリンク

コピーライトの西暦を自動更新

Ruby を使えばページフッタの西暦も自動更新します。

Copyright (c) 20010-<%= Time.now.strftime("%Y") %> Weble inc. All Rights Reserved.

自分の年齢を自動更新

Ruby を使えば自分の年齢を自動更新して表示できます。

<%= (Time.now.strftime("%Y%m%d").to_i - 19900605) / 10000 %>歳

ページの部品を読み込む

Ruby を使えばページ内に部品を読み込むことができます。

<%= require 'footer.html' %>

これを応用すれば以下のようにしてフッタとヘッダを同期できますよ。

<%= require 'header.html' %>
<div id="contents">
テキストテキストテキスト
</div>
<%= require 'footer.html' %>

他人のサイトの内容を読み込む

<%=
require 'open-uri'
open("http://google.com/") do |f|
  f.each do |line|
    puts line
  end
end
%>

複数のメッセージをランダムに表示

<%=
    if RUBY_VERSION < '1.9.0'
        class Array
            def choice
                at( rand( size ) )
            end
        end
    end
    message = ["メッセージA", "メッセージB", "メッセージC", "メッセージD", "メッセージE"]
    message.choice
%>

指定した月のカレンダーを出力

少し長いですが、2010年12月のカレンダーを出力します。(*3)

<%=
require 'date'
def calendar(year, month)
    jpweek = ['日', '月', '火', '水', '木', '金', '土']
    date = DateTime::new(year, month, 1)
    date = (date >> 1) - 1
    days = date.day
    one = Date::new(year,month,1)
    week = one.wday
    day = Array.new(42)
    days.times{|i|
        day[week + i] = i + 1
    }
    calendar = '<table><tr>'
    jpweek.each{ |i|
        calendar << '<th>' + i.to_s + '</th>'
    }
    calendar << '</tr>'
    key = 0
    day.each{|i|
        if key.to_i % 7 == 0 then
            calendar << '<tr>'
        end
        calendar << '<td>'
        if i != nil
            calendar << i.to_s
        else
            calendar << '&nbsp'
        end
        if key.to_i % 7 == 6
            calendar << '</tr>'
        end
        key += 1
    }
    calendar << '</table>'
    return calendar;
end
print calendar(2010, 12)
%>

以上のように結構便利なものがあります。コピーして貼りつけても大体のサーバーで動きますのでどうぞ。

本当はサーバーで動かす前に自分のパソコンでテストした方が良いんですけど、興味のある方はぜひ以下の記事をご覧ください。

できる限り、PHP っぽく Ruby を書いてみました… orz

この記事の原因になった下記の記事もよろしくお願いします。

Rubyに興味を持った方はこちらがおすすめです。ほんとにたのしめる内容です。

高橋 征義¥ 2,730

Amazonで詳細を見る by AmaGrea

追記:この記事をもっと Ruby っぽく書いていただけました。そしていろいろ間違っていたところを指摘していただけました。ありがとうございます。

5分でわかる Ruby を知らない人が Ruby の便利さを学べる記事をかいたよ を勝手に改造 – yayuguのにっき

*1: 本当は元ネタと同じ頃に前のエントリーを書いて、はてブがぶっちぎられたが悔しく、未だに人気エントリーになってないからノリで書きました。ごめんなさい。

*2: @otnxさん情報ありがとうございます。

*3: バグっていたので修正

タイトルとURLをコピーしました