Sebelumnya ada baiknya mengucap terimakasih kepada Ari dan Edwin yang sudah
menolong di permasalah pertama tadi. Next, saya melakukan pembuktian
transaction object pada Ruby on Rails :
Sumarry:
Saya membuka 2 windows DOS untuk membuktikan kebenaran transaction support di
ruby on rails. Masing-masing windows memiliki time execution yang
berbeda-beda. Berikut penjelasannya.
-----------------------
Window DOS 1
-----------------------
F:\ruby\tiesto>ruby test/unit/barang_terpesan_test.rb
Loaded suite test/unit/barang_terpesan_test
Started
.
Finished in 42.078 seconds.
1 tests, 0 assertions, 0 failures, 0 errors
---------------------------
Windows DOS 2
---------------------------
F:\ruby\project_dev>ruby test/unit/barang_terpesan_test.rb
Loaded suite test/unit/barang_terpesan_test
Started
.
Finished in 42.125 seconds.
1 tests, 0 assertions, 0 failures, 0 errors
-----------------------------------
SCRIPT di barang_terpesan_test.rb
-----------------------------------
require File.dirname(__FILE__) + '/../test_helper'
class BarangTerpesanTest < Test::Unit::TestCase
fixtures :barang_terpesans
def test_what
barang = BarangTerpesan.find(:first)
BarangTerpesan.transaction do
barang.proses_modifikasi
end
end
end
----------------------------------------------
SCRIPT di BarangTerpesan.rb (Active Record)
----------------------------------------------
class BarangTerpesan < ActiveRecord::Base
def proses_modifikasi
#dikasih delay
for x in 1..100000000
end
update_attributes(:jumlah => jumlah-1)
end
-------------------------
KONDISI TABLE SEBELUM ACTION
-------------------------
----------------------
ID | BARANG | JUMLAH |
----------------------
1 | ABC01 | 10 |
----------------------
Setelah kedua windows itu dijalankan, hasilnya :
--------------------------------------------------
KONDISI TABLE SETELAH 2 EKSEKUSI BERSAMAAN
--------------------------------------------------
----------------------
ID | BARANG | JUMLAH |
----------------------
1 | ABC01 | 9 |
----------------------
Ini tidak sesuai dengan kaidah database seharusnya 10 - 1 -1 = 8, bukan 9.
Padahal saya sudah menaro BarangTerpesan.transaction.
Gimana teman-teman ada solusi atau saran?
Thank You
Reinhart
http://teapoci.blogspot.com
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now.
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ