スポンサーサイト

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

Rack + erb + ActiveRecord + Oracleでアプリ(Railsなし) - その1(プログラム)

↓こんなテーブルの中身をidを指定して表示する。idの指定がない場合は全件表示する。

Usersテーブル
idnameagejob
1一郎35会社員
2二郎20大学生
3三郎15中学生

OCI8をここみたいにインストールしておく。
adapterはここみたいにインストールしておく。

ディレクトリ、ファイル構成はこう。

/usr/local/rack/webapps/
  ├ config.ru
  └ user/
    ├ dbinfo.rb
    ├ arbasic.rb
    ├ user.rb
    ├ list.rb
    └ list.tmpl

【dbinfo.rb】

Oracle関連の情報(値は例。環境に合わせて)。
#!/usr/bin/ruby

module DBInfo
ENV['ORACLE_SID'] = 'orasid'
ENV['ORACLE_BASE'] = '/opt/app/oracle'
ENV['ORACLE_HOME'] = ENV['ORACLE_BASE'] + '/product/10.2.0'
ENV['LD_LIBRARY_PATH'] = ENV['ORACLE_HOME'] + /lib'
ENV['NLS_LANG'] = 'JAPANESE_JAPAN.JA16EUC'
ENV['PATH'] = ENV['PATH'] + ':' + ENV['ORACLE_HOME'] + '/bin'

def oraUser
'User'
end

def oraPassword
'Password'
end

def oraSid
'SID'
end
end

【arbasic.rb】

DB接続情報。
#!/usr/bin/ruby

require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection(
:adapter => 'oracle_enhanced',
:username => 'User',
:password => 'Password',
:database => 'ServiceName'
:pool => 10
)

【user.rb】

モデル。
#!/usr/bin/ruby

require File::dirname(__FILE__) + '/arbasic'

class User < ActiveRecord::Base
end

【list.rb】

DBからデータ取得して画面に表示する。
#/usr/bin/ruby

require 'rubygems'
require 'rack'
require 'erb'
require File::dirname(__FILE__) + '/dbinfo'
require File::dirname(__FILE__) + '/user'

class List
include DBInfo

TEMPLATE_PATH = File::dirname(__FILE__) + '/list.tmpl'

def call(env)
req = Rack::Request.new(env)
res = Rack::Response.new

id = req.params["id"]

users = nil

if(id =~ /^\d+$/)
users = User.find(:first, :conditions => ["id = ?", id])
else
users = User.find(:all)
end

res.write(ERB.new(File.read(TEMPLATE_PATH)).result(binding))
res.finish
end
end

【list.tmpl】

テンプレート。

<html>
<head>
<title>Users</title>
</head>
<body>
<table border="1">
<tr><td>id</td><td>name</td><td>age</td><td>job</td></tr>
<% users.each do |user| %>
<tr>
<td><%= user.name %></td><td><%= user.age %></td><td><%= user.job %></td>
</tr>
<% end %>
</talbe>
</body>
</html>

list.rb中の変数usersが、テンプレートlist.tmpl中で使える。

【config.ru】

#!/usr/bin/ruby

$LOAD_PATH.unshift '/usr/local/rack/webapps'

map "/user/list" do
require 'user/list'
run List.new
end


外部に公開するためのサーバの設定はその2で。

この記事のトラックバックURL

http://ysmt.blog21.fc2.com/tb.php/271-f6dc99cc

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

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