Үүссэн Rails програмыг Oracle баазтай холбох гээд хагас өдөр зарцуулчихсан тул эндээс мэдсэн зүйлээ хэрэгтэй хүнд нь хөтөч болгон бичиж үлдээх нь зүйтэй гэж үзлээ. Таныг аль хэдүйн баазаа тохируулж, rails програмынхаа скелетоныг үүсгэсэн гэж бодож байна. Бидний тохиолдолд баазыг өөр машинд суулгасан. Алдарт scott/tiger-ийн баазыг жишээгээр авлаа.
Шаардлагатай багцууд:
- ruby-oci8, Oracle баазтай холбогдох ruby интерфэйс
- activerecord-oracle-adapter
- Oracle instant client
- ruby-oci8
Виндовз хэрэглэгчид ruby-oci8-1.0.0-mswin32.rb файлыг татаж аваарай. Доорхи байдлаар хялбархан сууж байна:C:\>ruby ruby-oci8-1.0.0-mswin32.rb
Copy OCI8.rb to c:/ruby/lib/ruby/site_ruby/1.8/DBD/OCI8
Copy oci8.rb to c:/ruby/lib/ruby/site_ruby/1.8
Copy oci8lib.so to c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt
OK?
Enter Yes/No: yes
Copying OCI8.rb to c:/ruby/lib/ruby/site_ruby/1.8/DBD/OCI8 ... done
Copying oci8.rb to c:/ruby/lib/ruby/site_ruby/1.8 ... done
Copying oci8lib.so to c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt ... done
OK
C:\> - activerecord-oracle-adapter
Oracle адаптерийг gem ашиглан суулгах нь хялбар аж:C:\>gem install activerecord-oracle-adapter --source http://gems.rubyonrails.org
Bulk updating Gem source index for: http://gems.rubyonrails.org/
Bulk updating Gem source index for: http://gems.rubyonrails.org/
Successfully installed activerecord-oracle-adapter-1.0.0.9216
1 gem installed
C:\> - Oracle instant client
Татсан програмаа хаа нэг эвтэйхэн газар задлаж орхи. Эндээс oci.dll, oraociei11.dll файлуудыг хайж олоод Windows\System хавтаст хуулна. Хамаг цагаа үүнийг мэдээгүйгээс барсан байгаам. За тэр болоод өнгөрч, одоо Ruby интерфэйс бэлэн болсон байх учиртай, шалгаж үзье:C:\>ruby -r oci8 -e "OCI8.new('scott', 'tiger','//<db-host-address>:1521/<sid>').exec('select * from emp') do |r| puts r.join(','); end"Yes!!!, хэвийн ажиллаж байна.
7369,SMITH,CLERK,7902,1980/12/17 00:00:00,800.0,,20
7499,ALLEN,SALESMAN,7698,1981/02/20 00:00:00,1600.0,300.0,30
7521,WARD,SALESMAN,7698,1981/02/22 00:00:00,1250.0,500.0,30
7566,JONES,MANAGER,7839,1981/04/02 00:00:00,2975.0,,20
7654,MARTIN,SALESMAN,7698,1981/09/28 00:00:00,1250.0,1400.0,30
C:\>
database.yml
Oracleтай холбогдох интерфэйсүүд бэлэн болсон тул, одоо веб програмынхаа баазын тохиргоог хийе. Дараахи байдлаар хийхэд хангалттай:
config/database.yml
# Oracleтай холбох нь.
development:
adapter: oracle
database: <db-host-address>/<sid>
username: scott
password: tiger
development:
adapter: oracle
database: <db-host-address>/<sid>
username: scott
password: tiger
Одоо веб програмаа эхлүүлээд, браузерт нээвэл дараахи мэдээлэл гарч байх учиртай:
Бүх зүйл хэвийн, иймд emp нэртэй баазын модель үүсгэе:
ruby script\generate model emp
Rails баазад маань emps нэртэй хүснэгт байгаа гэж автоматаар ойлгоно. Гэтэл scott-ийн баазад emp нэртэй л хүснэгт байгаа шүү дэ? emp моделийг emps бус emp хүснэгттэй яаж уях вэ? Дараахи байдлаар хүснэгийн нэрийг дахин тодорхойлж болно:app/model/emp.rb
class Emp < ActiveRecord::Base
set_table_name "scott.emp"
end
set_table_name "scott.emp"
end
Үүний дараагаар index хуудас(action) үзүүлэх scott нэртэй контроллёр үүсгэе:
ruby script\generate controller scott index
index хуудсанд emp хүснэгтийн мэдээллийг харуулъя. Ингэхийн тулд scott_controller-ийг дараахи байдлаар бичээд үз:
app/controllers/scott_controller.rb
class ScottController < ApplicationController
def index
@emps = Emp.find(:all)
end
end
def index
@emps = Emp.find(:all)
end
end
Одоо presentation layer буюу татсан мэдээллээ дэлгэцэнд байршуулах index файлыг боловсруулъя:
app/views/scott/index.rhtml
<h3>Ажилчид</h3>
<table border="1">
<tr>
<%names = Array.new;
Emp.column_names.each{ |name| names << name;
%>
<%="<th>#{name}</th>"%>
<%}%>
</tr>
<%for emp in @emps%>
<tr>
<%for name in names%>
<td><%=eval("emp.#{name}")%> </td>
<%end%>
</tr>
<%end%>
</table>
<table border="1">
<tr>
<%names = Array.new;
Emp.column_names.each{ |name| names << name;
%>
<%="<th>#{name}</th>"%>
<%}%>
</tr>
<%for emp in @emps%>
<tr>
<%for name in names%>
<td><%=eval("emp.#{name}")%> </td>
<%end%>
</tr>
<%end%>
</table>
Одоо хийсэн ажлаа шалгая. Броузерт: http://127.0.0.1:3000/scott гэж бичээд үзнэ үү. Доорхитой ижил үр дүн гарч байна уу?
За ингээд бид зорьсондоо хүрлээ. Доорхи линкүүд танд хэрэг болж юу магад вэ, гүйлгээд харна биз:
Нэмэлт:
config/environment.rb файлд
ENV['NLS_LANG']='american_america.AL32UTF8'
мөрийг нэмж өгөөрэй. Одоо Oracle-аас монгол(UTF-8) текстүүд асуудалгүй татагдах болно.
5 comments:
That's quiet new for me.
Good job!
Бас л хэрэг болох эд байна. Rails - тай найзлахаараа эргэж тухтай үзнээ.
.dll үүдийн байрлаж байсан замыг нь виндовсын PATH д нэмээд өгчихвөл дараа дараагийн удаад амар байж бас мэдэх л юм
TO: Sagi
Neeren tiim baina.
Post a Comment