Selamat Siang..
Maaf ini saya cross posting ke id-ruby, id-python dan id-php, karena kalau tidak
salah ingat kemarin dulu [10] pernah Pak Widi Harsojo dan Pak Andry S. Huzain
membicarakan tentang ruby dbi ini di id-ruby. Pak Andry sampai pernah kasih 
codes
gabungan antara ruby dan java (JRuby), dan Pak Widi cerita dari beliau waktu itu
sedang sibuk di client beliau. Jadi, dengan begini, mungkin saja dari Pak Widi
langsung yang bergumul dengan ini atau juga dari teman-teman lain bila ingin ada
yg ditambahkan atau dikoreksi dipersilahkan saja ya. Teman-teman yang di 
id-python
juga kalau ada more inside stories tentang DBI di python dipersilakan banget ya.
Terima kasih.

Steven Haryanto wrote:
> Edwin Pratomo wrote:
>> saya juga punya case lain yg mirip. DBI.
>> mengapa DBI sukses di Perl tapi tidak di bahasa lain?
>> ada analisa?
> 
> kalau sekilas melihat, yang terjadi juga mirip2x dan malah mungkin
> terkait secara kausal: librari seperti DB abstraction dll terlambat
> diadopsi menjadi standar karena ketiadaan repositori sentral a la CPAN.
> 
> yang paling parah mungkin di php. dari awal2x sudah ada support utk
> masing2x db included di php. tapi PEAR::DB (dan keseluruhan PEAR) itu
> telat didevelopnya, sehingga udah ada 3rd party libraries seperti ADOdb
> yang popular, tapi statusnya gak official. sementara di buku2x,
> tutorial2x web, orang masih ngajarin utk melakukan mysql_connect(),
> pg_connect(), dll...
> 
> di python dan ruby kayaknya gak separah php. di python librari2x akses
> db memang udah dikembangkan sendiri2x dan sejak lama oleh para
> developernya masing2x, tapi rata2x sudah menyediakan interface yg
> komplian dengan DB-API 2.0 yg jadi standar. di ruby juga kayaknya ada
> DBI? (utk ruby mungkin bisa ada yg kasih more inside stories...)

Di Ruby ada [ruby-dbi][1] sudah ada di raa sejak tahun 2001 oleh Michael Neumann
lalu proses selanjutnya dimaintain oleh Francis Hwang. kalau search di rubygems
malah ada gem dbi-dbrc yang butuh panggil 'dbi' / ruby-dbi tapi tidak berpegang
pada ruby testing yg ketat, mirip seperti kasus sqlite yg jalan setelah ada 
maupun
sebelum adanya swig tapi bukannya dikasih error malah tetap jalan, bedanya kalau
sqlite tetap jalan, sedang dbi-dbrc error kalau tidak ada ruby-dbi (tentu saja 
ini
jelas sudah).

Tolong terutama tentang swig dan sqlite kalau ada yang ingin komen dipersilakan
ini, ini kasus nyata yg dialami stian bule kemarin, dia curhat ke saya sqlite 
dia
melambat. Karena kalau di saya selalu cepat / tidak ada masalah. Di balik layar
juga sebetulnya karena saya sangat mendukung gerakan [wikipedia offline 
opensource
project][9] oleh stian ini (disamping projects lain seperti [boxroom-stian][8] 
yg
langsung sangat saya dukung melalui git commit saja dan [DVD Ruby Offline][7] ke
seluruh dunia yang rubygems dari mirror kemarin sudah saya kirim ke irfani, 
untuk
Irfani dan teman2 anak2 binus saya mengucapkan selamat menjadi satu diantara
penggerak DVD Ruby Offline dan semoga sukses!).

Yang saya lihat mayoritas Rubyist yang juga Railers lebih suka pakai ORM yang
tersedia di dunia ruby maupun rails. Entah itu menggunakan activerecord yang
populer dari Rails, maupun og yang populer dengan adanya Nitro. Sementara, bila
ada projects basis Ruby (bukan Rails), baru disini [ruby-dbi][12] yang berperan.

Sekedar berbagi dan menambahkan, mungkin film joke parodi Mac VS PC oleh
http://railsenvy.com/ itu [5] tidak akan ada ceritanya kalau PHP punya budaya 
DBI
ini juga kali ya? Karena kalau di Rails budayanya adalah ORM itu tadi, alias apa
yang berhubungan dengan database sudah ada "bahasa manusia" nya, jadi mis. ingin
"SELECT * FROM mantan_kekasih WHERE age = 19" di activerecord tinggal
MantanKekasih.find_all_by_age(19)
atau mis. ingin "INSERT INTO dan seterusnya" di activerecord tinggal
MantanKekasih.create(:name => "bantalan hitam", :age => 20) yg mana kalau ada
variable masuk activerecord sudah dibersihkan utk soal sekuriti (ambil saja 
contoh
sering SQL Injection) jadi sudah aman. Tentang migration ke macam-macam database
itu digunakan activerecord migration dengan perintah rake db:migrate. Jadi ada
codes yang berbasis ruby untuk database / codes ruby ke database. Begitupula 
dari
database ke codes ruby, ada cara memigratenya, lebih lengkap & jelasnya baca 
buku
[Rails Recipes][11] tulisannya Chad Fowler.

Tapi terlepas dari itu semua, jujur dari saya pribadi, berharap DBI di Ruby (yg
murni di ruby ya, bukan rails) bisa lebih friendly lagi. Saya pikir kebutuhan 
ini
ditambah soal sekuriti tadi itu krusial bahkan baiknya ditaruh di level rubygems
saja (jadi bukan sekedar tambahan di plugin saja) yang tujuan utamanya sudah 
jelas
=> supaya tambah produktif, atau kalau bahasa Pak Endy Muhardin, Productivity 
Hack
nya Rubyist dan Railers. BTW dulu pernah Pak Edwin curhat ke saya tentang
ruby-firebird yg sudah lama tidak dimaintain (maklum saja kalau beliau inilah 
yang
membuatkan perl firebird di CPAN [6]).

Links:
1. http://ruby-dbi.rubyforge.org/
2. http://www.kitebird.com/articles/ruby-dbi.html
3. http://raa.ruby-lang.org/search.rhtml?search=DBI
4. http://raa.ruby-lang.org/project/ruby-dbi/
5. http://railsenvy.com/2007/5/21/hi-i-m-ruby-on-rails-part-4
6. http://search.cpan.org/search?query=edwin+pratomo&mode=all
7. http://rubyoffline.wikidot.com/
8. http://repo.or.cz/w/boxroom-stian.git
9. http://repo.or.cz/w/zip-doc.git
10. http://tech.groups.yahoo.com/group/id-ruby/message/1476
11. http://tech.groups.yahoo.com/group/id-ruby/links/Buku_Rails_001179121944/
12. http://rubyforge.org/projects/ruby-dbi/

####################################################
# in English
# as we know there are "bule" in id-perl and id-ruby
####################################################

Sorry for this cross posting to id-ruby, id-python and id-php, because there was
also a discussion about ruby dbi on id-ruby mailing list [10] between Mr. Widi
Harsojo and Mr. Andry S. Huzain. Mr. Andry even gave his source codes ruby and
java combination (JRuby) and Mr. Widi told he's been busy at his client's place.
So I hope there will be much more additions from both Mr. Widi and Mr. Andry
and/or also from other friends of ours. I'm also pleased to hear more inside
stories about DBI in python. Thank you.

ruby-dbi [1] had been existed since 2001, created by Michael Neumann, then in 
its
next development process maintained by Francis Hwang. If we search rubygems
there's even dbi-dbrc gem which needs to call 'dbi' / ruby-dbi but I can see it
doesn't hold TDD that much, perhaps similar to sqlite which can run eventhough
without swig and no errors being generated, meanwhile dbi-dbrc got errors if
there's no ruby-dbi installed (c'est bien sûr!).

I will be pleased to listen to you all our friends especially about swig and
sqlite. This is Stian's real case, he talked to me that his sqlite's getting
slower and slower. I didn't see that quite clear, because sqlite just runs well 
on
my system / no problem. As I do support his offline wikipedia [9],
boxroom-stian [8] and DVD ruby offline [7] / I also want to say congratulations 
to
Irfani as one of Ruby Offline Guy and his friends at Bina Nusantara Jakarta, 
Good
Luck! I've sent all rubygems from rubygems' mirror yesterday to him.

 From my observations, I can see most Rubyists who are also Railers would prefer
use available ORM instead. Either activerecord which is popular from rails 
world,
or og which is popular from nitro world. Meanwhile ruby-dbi [12] is used for 
ruby
based projects (not rails). I can see our rubyist fellows use activerecord 
(alone
without rails) for their ruby based projects (not rails).

As for this sharing and my addition, perhaps Mac VS PC parody [5] by
http://railsenvy.com would not exist if PHP got DBI culture, wouldn't it? 
Because
Rails culture is that ORM. There is already a "human language" for its database 
in
Rails (or activerecord for exact as AR could be used without rails). For 
example,
we want to "SELECT * FROM ex_girls WHERE age = 19" in AR (activerecord) we use
ExGirl.find_all_by_age(19) and blast it's already there available in closure /
ruby block's iterator. Or perhaps we want to "INSERT INTO table et ce tera" we 
(we
refer to use: rubyist and also railers) just use ExGirl.create(:name => "Black
Pillow", :age => 20) whilst if there's variable existed before being inserted 
into
ExGirl table it's already cleaned by AR, so it's already save from example
regarding SQL Injection concerning security. There's also a migration facility 
to
various databases, in this ActiveRecord Migration, so we just use rake 
db:migrate
and bang! database's changed! There is migration ruby codes facility _to_ 
database
and there's also a migration ruby codes facility _from_ database, please read
Chad's book Rails Recipe [11] for detail explanation.

However, I frankly hope that DBI in Ruby could be much more friendly. I think 
this
necessity should be at rubygems level (not just plugin) in order to be more
productive, or mimicking Mr. Endy Muhardin, Productivity Hack for Rubyist and
Railers. BTW Mr. Edwin ever talked to me about the old unmaintained 
ruby-firebird
(I appreciate and can understand his will as he's the guy who made perl firebird
at CPAN[6]).

Links:
1. http://ruby-dbi.rubyforge.org/
2. http://www.kitebird.com/articles/ruby-dbi.html
3. http://raa.ruby-lang.org/search.rhtml?search=DBI
4. http://raa.ruby-lang.org/project/ruby-dbi/
5. http://railsenvy.com/2007/5/21/hi-i-m-ruby-on-rails-part-4
6. http://search.cpan.org/search?query=edwin+pratomo&mode=all
7. http://rubyoffline.wikidot.com/
8. http://repo.or.cz/w/boxroom-stian.git
9. http://repo.or.cz/w/zip-doc.git
10. http://tech.groups.yahoo.com/group/id-ruby/message/1476
11. http://tech.groups.yahoo.com/group/id-ruby/links/Buku_Rails_001179121944/
12. http://rubyforge.org/projects/ruby-dbi/

-- 
Arie || ariekeren, YM!=riyari3, http://ariekusumaatmaja.wordpress.com
http://groups.yahoo.com/groups/id-ruby
BDD and its children are sexy! I now recommend you all to use them!
http://rspec.rubyforge.org/


Kirim email ke