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.
Ruby dilinin nimetlerinden yararlanarak Rails’in tablo ilişkilendirmelerini belirtmek için Türkçe makrolar oluşturdum. has_many için bir_cok ve belongs_to için suna_bagli.
Yani artık şöyle bir ilişkilendirme yapabiliriz.
bir_cok :cevap
suna_bagli :sinav
end
Diğer ilişkilendirmeleri kendiniz oluşturabilirsiniz.
# muarifer , ikinoktayazilim.com/wordpress
module ActiveRecord::Associations::ClassMethods
alias :bir_cok :has_many
alias :suna_bagli :belongs_to
end
Nasıl Çalışıyor?
Anahtar Kelime: ruby alias
Grub açılışına koyduğunuz resim “karıncalı” çıkıyor ise sebebi renk modunun yüksek oluşundadır. Hızlıca “grub”un desteklediği renk formatına çevirebilirsiniz resminizi:
Seminer verirken hep yaptığımın dışında - farkında olmadan - önce Rails projesi oluşturup daha sonra MySQL sunucusunu çalıştırdığımda rails’in MySQL için “.sock dosyası bulunamadı” tarzındaki hata mesajını aldım. Database.yml dosyasını açıp “Pardus” için socket dosyasını yazma girişimim ise dosyanın tam yerini bulamamamdan-bilemememden ötürü hüsranla sonuçlandı. Çareyi projeyi silip yeniden oluşturmakta buldum.
Kısacası eğer projeye başlamadan önce MySQL Sunucunuz açık ise Rails otomatik olarak mysql.sock dosyasının yerini buluyor ve bunu “database.yml” dosyasına yazıyor. Eğer sunucunuz kapalı ise ve mysql.sock dosyanız /var/temp/mysql.sock dosyasından farklı yerde ise “mysql.sock” dosyası bulunamadığı için veritabansal işlemlerinizde rails hata döndürüyor.
Ayrıca Pardus için mysql.sock dosyasının yerini de not almakta fayda var;
socket: /var/run/mysqld/mysqld.sock
Kullandığınız işletim sisteminin “mysql.sock” dosyasını nerede sakladığını bilmiyor iseniz MySQL ayar dosyanıza (my.cnf) bakabilirsiniz:
less /etc/mysql/my.cnf
- Öneri için Fatih Ergüven‘e teşekkürler.
Seminer Dosyaları 05/05/07
Sunum Dosyası (Open Office) : Rails İle Ağ Uygulamaları Geliştirimi
Örnek Uygulama Dosyası






