yedek: hızlı rails ortamı (ortam.rb) 14/06/07
# komut verir
def komut(islem, k)
puts "[Başlatılıyor] #{k}"
system(islem) ? puts("[Başlatıldı] #{k}") : puts("[Hata] #{k} - Hata Kodu: #{$?}")
end
# ortam için komutlar
komut('service mysql-server start', 'mysql')
komut('gem_server &', 'gem_server')
Feedburner Adresi 14/06/07
FeedBurner kayıt adresi: http://feeds.feedburner.com/muarifer/
Pagination Links In One Line Of Code 14/06/07
- < %= (1..@sayfa_pages.page_count).collect { |i| link_to(i, {:page => i}) }.join(' - ') unless @sayfa_pages.page_count == 1 -%>
Kıssadan Hisse 13/06/07
ipucu: request.post? 09/06/07
Bir konu hakkında belge ortaya çıkartmak eğer vaktiniz kısıtlıysa oldukça uzun sürüyor. Bazı konular hakkında belge hazırlamaya çalışıyorum Rails ile ilgili ve vaktim kısıtlı. Onlar ortaya çıkana kadar ipuçları paylaşımı yapalım.
request.post?
if request.post?
# form gönderilmiş
# ona göre işlem yap
else
# form henüz ortada yok.
end
end
Ruby IDE from CodeGear 03/06/07
Bi’ ara bi’ yerde “CodeGear yoksa Ruby için bir editör geliştirecek mi” tarzında kurduğum cümle sanırım gerçek olacak.
Ağ sayfası burada Ruby IDE’nin.
Hadi hayırlısı.
Bir alanı otomatik tamamlama sistemine geçirmek için Rails tarafında 2 satırlık kod yeterli olabiliyor çoğu kez. ActionController alt sınıfına auto_complete_for :model, :alan ve görünümde(view) bu özelliğe sahip olunması istenilen “girişe”(edit) text_field_with_auto_complete :model, :alan. Ben listeyi kendim göstermek istiyorum derseniz de Controllerde auto_complete_for_model_alan fonksiyonunda biraz değişiklik yapabilirsiniz.
Daha hızlı bir çözüm ise “yerel” kullanımla beraber kayıtları JavaScript dizisi biçiminde alıp Autocompleter.Local kullanmak olabilir.
def etiket_tamamlama_liste
etiketler = Etiket.find(:all)
@headers['content-type'] = 'text/javascript'
liste = "var etiket_liste = new Array(#{etiketler.size});\n"
etiketler.each_with_index { |etiket, index| liste << "etiket_liste[#{index}] = '#{etiket.etiket}';\n" }
render :text => liste
end
end
< %= text_field 'giris', 'etiketler' %>
<div class="auto_complete" id="giris_etiketler_auto_complete" ></div>
< %= javascript_tag("new Autocompleter.Local('giris_etiketler' , 'giris_etiketler_auto_complete' ,
etiket_liste, {fullSearch: true, frequency: 0, minChars: 1, tokens: ','});") %>
javascript_tag ile Autocompleter.local için istemci oluşturuyoruz ve listeyi “,” ile ayırarak etiket sisteminde seçimi güzelce yaptırıyoruz.
Autocompleter.Local‘ın scriptaculous içinde olduğunu belirterek javascript_include_tag :defaults ile genel javascriptsel dosyaları dahil etmeyi unutmayınız.
textile için editör 02/06/07
http://slateinfo.blogs.wvu.edu/plugins/textile_editor_helper
kurulum
- script/plugin install http://svn.webtest.wvu.edu/repos/rails/plugins/textile_editor_helper/
- rake textile_editor_helper:install
- < %= textile_editor 'giris', 'icerik' -%>
- < %= textile_editor_initialize -%>
Rails için genel Türkçe olayları halleden TurkceRb eklentisini projelerinize kurabilirsiniz.
script/plugin install svn://rubyforge.org/var/svn/turkcerb
İçerik
- Model ve Tablo İlişkilendirmeleri
- created_at yerine kayit_tarihi (created_at kullanılabilir durumda kalır)
- updated_at yerine guncelleme_tarihi (updated_at kullanılabilir durumda kalır)
- distance_of_time_in_word Türkçeleştirmesi
- ActiveRecordHelper Türkçeleştirmesi
- Tarihsel seçimlerin Türkçeleştirilmesi
Eklenti için tasarı sayfası: http://turkcerb.rubyforge.org
Bu sıralar bir yazılımın (boyahane otomasyonu) geliştirilmesi ve kurulumu ile ilgilendiğim için bilgisayar başında geçirdiğim vakit fazla olsa da internette geçirdiğim süre oldukça azaldı (8 den sonra azami 1 saat)
İlk fırsatta Wordpress sisteminden “muhtıra“ya geçiş yapacağım. Bi’ kaç saatlik işi var Muhtıra’nın, lisansı sanıyorum GPL olacak (günlük yazılımı, rails) Muhtıra hakkında daha ayrıntılı bilgi yazacağım inşallah yakında.
Ruby ve Rails ile ilgili bi’ kaç tane düzenlenmesi gereken dökümanda sırada bekliyor. Düzenlendikten sonra en yakın zamanda paylaşacağım.
RedCloth hard_break yaması 13/05/07
# Patch for RedCloth. Fixed in RedCloth r128 but _why hasn't released it yet.
# <a href="http://code.whytheluckystiff.net/redcloth/changeset/128">http://code.whytheluckystiff.net/redcloth/changeset/128</a>
def hard_break( text )
text.gsub!( /(.)\n(?!\n|\Z| *([#*=]+(\s|$)|[{|]))/, "\\1<br />" ) if hard_breaks
end
end
Kde altında güzel bir ftp istemcisi aranıyorsa KFtpGrabber zaten baştan elenmeli. Aklımda Ruby&Qt ile Ftp istemcisi yazmak var, o zamana kadar Kasablanca güzel bir çözüm olacak sanırım.
Daha önce “Türkçe Alan Adları İçin Tarihsel Kayıtlar ( created_at & updated_at => kayit_tarihi , guncelleme_tarihi )” konusunda bahsettiğim Rails’in otomatik olarak tarih atadığı “created_at|updated_at” ve “updated_at|updated_on” alanlarını Türkçe isim kullanarak değiştirmek için daha başka bi’ yol ise şu şekilde;
Not
Bu yolda Tablodaki alanların isimlerinin created_at|created_on, updated_at|updated_on şeklinde olması gerektiğini unutmayınız. Yapılan iş sadece başka isimden bu alanlara erişmek olacaktır.
Amaç
Yazının asıl amacı tablo alanlarını belirli bir standardın dışına nasıl çıkarabilirize cevap vermektir. Railsin otomatik oluşturduğu “attribute” olaylarını el ile yapmayı görmektir.
self[:created_at]
end
def kayit_tarihi(tarih)
self[:created_at] = tarih
end
# read_attribute ile self[:...] aynı işlevi yapar
def guncellenme_tarihi
read_attribute(:updated_at)
end
# self[..] = blabla yazmak için write_attribute kullanılır
def guncellenme_tarihi(tarih)
write_attribute(:updated_at, tarih)
end
Tüm bu alanlara sahip tablolarda bu kodu kullanmanız gerektiğini unutmayınız.
vakit iki. 08/05/07
her vakit bir ertelemeye denk düşerken kokusu çıkmadan saçından kızıllığının mevsimin yazlığının verdiği güneşliliğinle gel ... her ertelemenin üzüntüye varacağı bi' kaç sonraki yılların daha da olgunlaştırılmış sevdaya kavuşacağı çocuk isimlerini raflardan çıkartıp şiirselliğini kaybettireceğimiz olmayanlara mektupların adını kaybedeceği güzel zamanlara varmak üzere gel ... anlaşılamıyoruz, tarafımızdan bile ... git, gelmek üzere. mayıs sekiz, 2007 murat arif çeliker
Rails ActiveRecord modülünde kaydın eklenme tarihini ve güncellenme tarihini eğer created_at|created_on ve/veya updated_at|updated_on alanlarınız var ise otomatik olarak bunlara kaydeder.
Ufak Bi’ Not:
Alanlara kaydın otomatik yapılmaması için iki yolumuz mevcut;
- ActiveRecord::Base.record_timestamps = false ile (environment.rb dosyasına ekleyerek) tüm modellerde geçerli olur.
- self.record_timestamps = false ile yazılan model için geçerli olur.
Türkçe Alan Adları
Gelelim asıl konumuza.
Artık alanlarımızı “kayit_tarihi” “guncelleme_tarihi” şeklinde oluşturarak da Rails’in bu alanlara otomatik olarak kayıt yapmasını sağlayabiliriz.
Bunun için environment.rb dosyasına aşağıdaki satırları eklemeniz gerekmektedir.
# muarifer, http://www.ikinoktayazilim.com/wordpress
module Muarifer
module EtkinKayit
module Zaman
# önceki fonk.ları değiştirelim
def self.included(base)
base.alias_method_chain :create, :tr
base.alias_method_chain :update, :tr
end
# oluşturma tarihini otomatik kaydet
def create_with_tr
if record_timestamps
t = self.class.default_timezone == :utc ? Time.now.utc : Time.now
write_attribute('kayit_tarihi', t) if respond_to?(*:kayit_tarihi) && kayit_tarihi.nil?
write_attribute('guncelleme_tarihi', t) if respond_to?(:guncelleme_tarihi)
end
create_with_timestamps
end
# güncelleme tarihini otomatik kaydet
def update_with_tr
if record_timestamps
t = self.class.default_timezone == :utc ? Time.now.utc : Time.now
write_attribute('guncelleme_tarihi', t) if respond_to?(:guncelleme_tarihi)
end
update_with_timestamps
end
end
end
end
ActiveRecord::Base.class_eval {
include Muarifer::EtkinKayit::Zaman
}
Bir Not Daha
Kodlarımızı projeye dahil ettikten sonra created_at|created_on ve updated_at|updated_on alanları da güncellenmeye devam edecektir. Bu konuda sıkıntınız olmasın.







