http://weblog.rubyonrails.com/2007/11/9/rails-2-0-release-candidate-1
penggunaan rake rails:freeze:edge sangat penting ditekankan di saat
pengembangan. jujur ini sangat mengganggu saya karena menggunakan
versi tua (walau pretty sure saya tak hendak disebut tua) tanpa
mengindahkan aturan yang berlaku dengan baik dan benar di rails.
contoh: restful, ini sangat mengganggu bila tidak dibiasakan sejak
dini, mis. link_to 'delete', :action => 'destroy', :id => id, :confirm
=> 'are your sure', :method => :delete. ini sudah 2 disini, pertama
sudah tidak restful, logic seharusnya ditaroh di routes.rb bukan di
view. yang kedua pakai method delete untuk delete, bukan GET. di lain
hal juga, jadi hilangkan kebiasaan lama mempersingkat banyak action
method di controller yang boleh jadi memang singkat
sesingkat-singkatnya (saya pernah mempersingkat 4 method menjadi 1
method saja dengan 3 baris) tetapi tidak restful. kembali lagi ke
contoh delete barusan, pergunakan form_for dan pastikan pakai
submit_tag, karena semua yang mengubah database harus bukan link atau
GET. seperti contohnya destroy ini. jadi form_for [EMAIL PROTECTED], photo],
:html => { :method => :delete } itu saya tulis tanpa melihat manual
tolong dibenarkan bila saya salah sintaks. jadi form tersebut berada
di dalam looping (each) yang mana banyak foto tersebut memiliki 1
group, dan pastikan juga URL pun bahkan restful :(( jadi
/groups/1/photos atau dari routesnya adalah group_photos_path boleh
dicoba di script/console dengan rs = ActionController::Routing::Routes
(lagi lagi saya tulis itu seingatnya saja apa adanya yang ada di
kepala saya langsung tanpa lihat dokumentasi jadi tolong dibenarkan
kalau salah sintaks)., kemudian panggil dengan rs.routes / puts
rs.routes supaya terlihat semua URL yang tersedia.
ada lagi BDD, ini akan cukup annoying bila baru paham berkisar 40%
seperti saya :( bottomline boleh baca komen dari post di blog saya
terakhir itu adalah presentasi tentang bdd, jadi prosesnya benar-benar
menguras kepala eh tenaga , diawali dari user story yang bahkan
terkiini sudah support text file biasa jadi boleh ajarkan ke tim
product owner (pig, istilah di SCRUM) cara-cara / trik-trik membuat
business design kedalam bentuk text file itu, lalu secara otomatis dia
skype ke developer atau boleh juga dia langsung lakukan svn commit,
kemudian dari kita sebagai sisi developer langsung render file
tersebut dengan ruby dan spec. yang pasti hasilnya akan banyak error,
dan dari sanalah mengaplikasikan behaviour things . lalu berlanjut ke
pemikiran MVC, apakah ada model yang diubah untuk task pertama di user
story? ada? kalau ada tulis 1 atau 2 , kalau tak ada, coret. lalu
lanjut lagi ke controller, cek lagi apakah ada, lalu lanjut lagi ke
view. dan dari semua langkah demi langkah tadi itu termasuk lari dulu
ke direktori spec baru sesudah itu coding, bukan langsung coding trus
lari ke browser untuk refresh refresh! ini yang saya masih sangat
kurang disiplin :( berhubung spec di bagian ActionController saya
masih tergolong lemah (masih perlu banyak2 latihan lagi saya).
hmm, apalagi ya kalo dari
http://weblog.rubyonrails.org/2007/9/30/rails-2-0-0-preview-release
yang menjadi sumber pengingat yang sudah-sudah saya tulis berupa codes
dan spec.
ah ada rescue dukungan untuk controller seperti before_filter!!!! ini
bikin coding jadi tambah enak, walau pasti kalau belum terbiasa akan
bertanya-tanya code yang dibawah ini mis. load_ada_ruby atau bisa juga
action_denied ini dari mana dipanggil atau mau kemana, tapi pasti
kalau sudah biasa akan sangat dirasa manfaat DRY nya. kalau untuk yang
kurang disiplin pakai BDD seperti saya, pasti akan langsung terpikir
mis. bikin 3 action method, padahal setelah selesai tulis action
method itu yang saya lakukan justru menghapus lagi semua yang baru
saya tulis karna memang semua itu sudah didukung di method protected
di bawah atau di application.rb (doh!)
Tentang bagaimana "terbang" dengan cara supaya praktik menggunakan
rails edge, bisa dengan
rails:freeze:edge TAG=rel_2-0-0_PR
bisa juga dengan --source yang seperti hendy
bisa juga pakai svn taroh di direktori vendor/rails
dan yang paling menjadi favorit saya adalah piston, jadi cukup dengan
perintah sbb:
piston import http://svn.rubyonrails.org/rails/trunk vendor/rails
sudah termasuk melakukan setting ke external tetap dan tanpa
mengganggu penampakan / penglihatan ketika melakukan svn st dengan
fetching external blah dan simbol X selalu di awal info tsb. -_-
oh sekarang studi kasus ya, mis. ada yang ingin URL begini : /admin/schedules
maka mendapatkan ActionController Admin::Schedule#index
dimana index adalah action method , maka di config/routes.rb tinggal taroh :
map.namespace(:admin) do |admin|
admin.resources :schedules
end
hm, terus ada lagi gimana caranya supaya tidak usah /profiles/1/show
untuk menampilkan profile , yang diinginkan hanya : /profiles saja.
caranya:
def index
redirect_to profile_url(@profile)
end
yang mana di method show nya adalah seperti biasa ya (tolong diubah
sendiri ke rescue seperti di before_filter diatas):
def show
end
eit, semoga banyak yang protes, itu method show kok dikosongi? ya,
karena di bagian atas2 controller tersebut tertuliskan titah
before_filter :load_profiles
lalu di bagian protected ditulis method ini:
def load_profile
@profile = Profile.find(params[:id])
rescue ActiveRecord::RecordNotFound
flash[:error] = 'Profile tidak ditemukan!'
redirect_to dashboard_url
end
hmm, wait wait, itu berlaku hanya untuk 1 id saja. kalau ada banyak id
dan tidak ingin ditampilkan secara random maka trik diatas belum bisa
memenuhi problem Anda.
ok deh, sekian dulu curhat kali ini, semoga saya akan bisa banyak
belajar lagi bareng temen2 disini. sampai jumpa!
--
Arie | http://linkedin.com/in/ariekeren
http://ariekusumaatmaja.wordpress.com | http://groups.yahoo.com/groups/id-ruby
My personal email is [EMAIL PROTECTED], this is special for
mailing list
rspec core guys have to make and_returns with s so that it'll be more
human readable