Ruby - RSS 作成 - コンフィグレーションファイル読込
- 1. 概要
- 2. 書式
- 3. モジュール
1. 概要
このあたり右往左往しておりまして、データベース使うからコンフィグレーションファイルいらないやとか思いましたが・・・。
ユーザ名・パスワード、等々は、コンフィグレーションファイルから読み込むようにしないとソースにべた書きじゃんと思い直しました。
リンクチェックを作成したときのものがほぼそのまま使えそうです。
2. 書式
ソースファイルと同じディレクトリに .rssconf と言う名前で
以下の形式で記述します。
[database] ← データベース接続時のパラメータ
host = ホスト名
user = ユーザ名
password = パスワード
dbname = データベース名
port = ポート番号
[link] ← 取得すべきリンク先を収集するためのタグとクラス定義
tag = リンク定義しているものを包括しているタグ
class = 取得すべきリンクを定義しているクラス(ホワイトスペースで区切って複数定義可)
[sitemap] ← 本処理で作成したオブジェクトを元に html 形式のサイトマップを作成します
fullpath = 作成したサイトマップのファイルを出力するファイル名をフルパスで指定
データベース接続のパラメータの項目名は、pg ライブラリに渡す引数としてそのまま渡せるようにしているので変更することはできません。
3. モジュール
モジュールはこんな感じで
=begin
コンフィグレーションファイルの読込を行う
=end
require('pry')
require('inifile')
class ReadConf
def initialize()
end
def execute(path)
begin
parameter = Hash.new # ini ファイルから取得するパラメータ
database = nil # データベースの定義
linktag = nil # 取得すべきリンクを包括しているタグ名
linkclass = Array.new # 目次でリンクを定義しているクラス名
inifile = IniFile.load(path+'/.rssconf')
if (inifile[:database]) # [database] セクションがある
database = inifile[:database] # セクションの内容をそのまま取り込む
end
parameter[:database] = database # データベース定義
if (inifile[:link]) # [link] セクションがある
if (inifile[:link]['tag']) # tag アイテムがある
linktag = inifile[:link]['tag'] # tag = の定義を取得
end
if (inifile[:link]['class']) # class アイテムがある
cls = inifile[:link]['class'] # class = の定義を取得
split = cls.split(/\s/) # ホワイトスペースで分割
split.each do | item | # 配列として取り込む
linkclass.push(item)
end
end
end
parameter[:linktag] = linktag # リンクタグ定義
parameter[:linkclass] = linkclass # リンククラス定義
sitemap = nil
if (inifile[:sitemap]) # [sitemap] セクションがある
sitemap = inifile[:sitemap] # セクションの内容をそのまま取り込む
end
parameter[:sitemap] = sitemap # サイトマップ定義
rescue => error
exeptlog = ExceptLog.new
exeptlog.execute(self, error)
exit 1
ensure
return parameter
end
end
end
データベースにアクセスするときのパラメータをハッシュで返すわけです。
|
|