top


総投稿数 本 
no_

スポンサーサイト

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

Ruby:◇ブログシステムを創る:ブログ用HTML作成 ・・・ 【Ruby:30歩目】

 2009-04-09
 さて、「Ruby」だ。

 前回の作業は
 ・Ruby:◇ブログシステムを創る:基本のシステム ・・・ 【Ruby:29歩目】

 出力されたものは、あくまでも
 「テキストファイル」で、HTMLファイルの体裁をとっていなかった。
 今日はその、体裁を整えることに挑戦。
 (ま、それほどのことではないけど)

  追記に ▼

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


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


more  ◇ブログシステムを創る:ブログ用HTML作成
  方法として
   ・レイアウトテンプレート を利用する
   ・原稿に関しては、HikiDoc という
    テキスト→ HTML 変換ツールを利用する
    RubyForge: HikiDoc: Project Info
    RubyForge: HikiDoc: Project Info 最新ファイルは、本日現在
 hikidoc 0.0.3 August 25, 2008



   ・views ・・・ テンプレートとなる、eRubyスクリプト を格納
 ◆テンプレートファイル◆
 ・list.html.erb  ・・・  日記全文を生成するテンプレート
               トップページ と 月単位のページ生成で利用
 ・about.html.erb  ・・・ About頁を生成するテンプレート
 ・archives.html.erb  ・  アーカイブ頁を生成するテンプレート
 ・layout.html.erb  ・・  各頁で共通となるHTMLを定義したもの

  こんな感じで、各テンプレートを用意する、

  まず 共有テンプレートである
  ●layout.html.erb  の確認
   ※サンプルで用意されているものを開いてみる
<html lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title><%= @title %></title>
<link rel="stylesheet" href="stylesheets/nobunaga.css" type="text/css" media="all">
</head>

<body>
<div class="main">

<h1><%= @title %></h1>

<div class="header-menus">
<a href="index.html">Latest</a>
<a href="archives.html">Archive</a>
<a href="about.html">About</a>
</div>

<%= @content %>

<div class="footer">ERBBlog version 1.0.0</div>
</div>
</body>
</html>
 ・・・なるほど
 ・<%= @title %> の形式で、値が埋め込まれるわけですね
 ・(そして)・<%= @content %> に、他の
  テンプレートでの内容が埋め込まれる・・・と。

  それでは早速、
  ・書き出しスクリプトの改造
  ●Blogクラスの write_htmlメソッド ですが、現在
  def write_html(name,template = name) # HTMLファイルの出力メソッド
html = render_view(template) # テンプレートの組込みを行い
File.open('html/#{name}.html', 'w') {|f| f.write(html) } # HTMLファイルとして書き出す
end
 ・・・こうなっているのを ▼
  def write_html(name,template = name) # HTMLファイルの出力メソッド
filename = 'html/#{name}.html' # 書き出すファイル名も取得し
puts " 生成中・・・@{filename}" # ステータスメッセージとして表示
@content = render_view(template) # 組込みを変数値に行い
html = render_view('layout') # テンプレートの組込み自体は共有テンプレートに変更
File.open(filename, 'w') {|f| f.write(html) } # HTMLファイルとして書き出す(filename)
end
 ・・・とする。

  >実行(コマンドプロンプトで)

  ・出来上がった index.html のソース(一部)
<html lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<link rel="stylesheet" href="stylesheets/nobunaga.css" type="text/css" media="all">
</head>

<body>
<div class="main">

<h1></h1>

<div class="header-menus">
<a href="index.html">Latest</a>
<a href="archives.html">Archive</a>
<a href="about.html">About</a>
</div>


<div class="entry" id="1">
<div class="date">2009-03-12</div>
!日記を始めるのは難しい。随記というのはどうだ。

近頃、ブログは当たり前。しかし、日記、と確定された
表記をすると、本当に毎日書かねばならない。
春がもうすぐやってきそうだけど、まだまだ寒い。
新しいことは常にやり始めている。
どちらかというと、「始める」より「続ける」ことの
偉大さを感じている。

(略)

<div class="permalink"><a href="2009-03.html#12">permalink</a></div>
</div>



<div class="footer">ERBBlog version 1.0.0</div>
</div>
</body>
</html>
 ・・・出来た出来た。
   こんな感じで、表示される。
   こんな感じで、表示される


  次に「HikiDoc」を利用して、本文をHTMLに変換する
  ●hikidoc.rb をロード
require 'hikidoc'
 ・・・こうしておいて
  ●Entryクラスの to_htmlメソッド を改造
   現在、単純に
  def to_html
@body
end
 ・・・こうなっているのを ▼
  def to_html
HikiDoc.to_html(@body)
end
 ・・・とする。

  >実行(コマンドプロンプトで)
   こんな感じで、表示される。
   こんな感じで、表示される

 なんて、簡単な使い方なのだろう。
 これは楽しい。
commentsコメント
comment_post












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

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

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

 

リンク集

 

最近の記事

 

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

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

 

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