top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_727

Ruby:◇ERBライブラリ ・・・ 【Ruby:25歩目】

 2009-02-18
第25歩
 ◇ERBライブラリ

  ※Rubyスクリプトから、eRubyスクリプトを処理するための
   ライブラリ
   ・(前回はこちら

 おぉなんてこった。
 この連載を始めて、
 なんと、9ヶ月もかかってしまった。
   ・(初回はこちら
 恐ろしく、亀さんベース。

 まぁ、とにかく本日これで、「実践編」が終了

 次回は、ついに「応用編」
 「応用編」の題材は
  ・ブログシステムを作る ・・・ だ。
 楽しみ、楽しみ。

  追記に ▼

※この連載は、はじめて「Ruby」に取り組んだmetaboyが、
 PHPなどとの違いを考慮しつつ、ゆっくりと
 良書「はじめてのRubyプログラミング」を基に
 学んでゆく、詳細な記録です。
                      (本日の参照:242頁


FC2ブログランキングにほんブログ村 IT技術ブログ Webサイト構築へブログ王ランキング人気ブログランキング人気ホームページランキングへ


more  ◇ERBライブラリ
  【ポイント】
 ・ERBライブラリのロード
 ・基本的な利用方法


 ◆ERBライブラリのロード
  
require 'erb' # erbライブラリのロード

 このあたりは、PHPなんかのほかの言語と同じだね。
 include はあるのかな? と思い少し調べた。

 まず、
 ◎Ruby では、
   ・load
   ・require
   ってのがあって
  ●load・・・指定したファイルを
        Ruby プログラムとして読み込むのに利用
load "./myapl/myapl.rb"

   ・同じファイルでも何度も組み込む
   ・拡張子 .rb や .so を自動的に補完は行わない
   ・ファイルの読込に主に利用
  ●require・・・ライブラリのロードなどに利用
require "myapllib"

   ・同じファイルは一度だけしかロードしない
   ・拡張子 .rb や .so を自動的に補完(拡張子なくていい)

 次に
 ◎Ruby では、さらに
   ・include
   ・extend
   ってのがあって(ただし、これらはメソッドなんだ!?)
   クラスやモジュール定数に追加変更
   ができるようなのだ。

  ※こちらは、随分前の記事だけど、
   ・Rubyにおけるrequireとincludeとextend
    (by yamaz のRails日記)
    を読ませていただいた。(今でも、同じなのだろうか?)

 また、require に関しては、
   ・Rubyのrequireにディレクトリ名が必要な理由
    (by ’(rubikitch wanna be (a . lisper)))
    を読ませていただき、とても参考になった。

  さて、今回はその require で、ERBライブラリを読み込んだ
  ・・・として

 ◆ERBオブジェクトの生成と実行
  ・eRubyスクリプトを実行するために、
   ERBオブジェクトを生成する
   (例)
require 'erb' # erbライブラリのロード
erb = ERB.new("おぉ、こんな感じで今年は<%= Time.new.year %>年か、なんて表現できるわけだ。")
erb.run # 走らせるわけね
 > 確認した

   このあたりの、
    ・new(メソッド)で、オブジェクトを生成するのは
   他の言語とも同じですね。
   この引数に
    ・eRubyスクリプトそのものを書き込んだ文字列を
     渡すわけだ
   実行は
     runメソッド
     (結果を直接表示する)

  ・これに対し
   直接表示ではなく、文字列として受け取りたいときは
require 'erb' # erbライブラリのロード
erb = ERB.new("おぉ、こんな感じで来年は<%= (Time.new.year + 1) %>年か、なんてのも表現できるわけだ。")
puts erb.result # 結果はresult
 > 確認した

 ◆eRubyスクリプトでの変数の参照
  ・run や resultメソッドを実行した場合に
   ・ERBを呼び出す、Rubyスクリプトで設定した変数を
   ・>eRUbyスクリプト内で、参照できる
   (例)
require 'erb' # erbライブラリのロード
y = Time.new.year
erb = ERB.new("おぉ、こんな感じでも今年は<%= y %>年か、なんて表現できるわけだ。")
puts erb.result # 結果はresult
 > 確認した

  ・ただし、注意すべきスコープの問題があるぞ、と
   ・ERBオブジェクトの run や resultメソッドは
    ・eRubyスクリプトで、トップレベルの変数を参照するので
   (例)
require 'erb' # erbライブラリのロード
def foo
y = Time.new.year
erb = ERB.new("おぉ、この場合は今年は<%= y %>年なんていう、間違いが起こってしまう。")
puts erb.result # 結果はresult
end
y = 1999
foo
 > 確認した

  ・そういう場合
   ・run や resultメソッドに、引数として binding という値を渡すと
    ・実行している場所の変数を参照できる
   (例)
require 'erb' # erbライブラリのロード
def foo
y = Time.new.year
erb = ERB.new("おぉ、この場合は正しく、今年は<%= y %>年と表示されるぞ。")
puts erb.result(binding) # 結果はresult
end
y = 1999
foo
 > 確認した

おぉ、参考書籍での「実践編」はここまでだ。
次回から、いよいよ「応用編」
・3つ目のブログ作成だ!
 (あとの2つは、現在止まっている
  ・WordPress
  ・MovableType
  での 構築試作ですが、ね)
commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/727-ebb7496d
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。