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.

class RedCloth
 
# 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

kaynak kaynak-2

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.

def kayit_tarihi
 
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.

# Türkçe Tarihsel Alan Adlarını Otomatik Kaydettirici
# 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.

class Soru < ActiveRecord::Base
 
bir_cok :cevap
 
suna_bagli :sinav
end

Diğer ilişkilendirmeleri kendiniz oluşturabilirsiniz.

# Türkçe Tablo İlişkilendirmeleri
# 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:

convert -resize 640x480 -colors 14 image.png image.xpm && gzip image.xpm

Kaynak

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

Sayfada yayımlanan yazılar aksi belirtmedildiği sürece Murat Arif Çeliker'e aittir. Yorumlar, yorumu yapan kullanıcıların kendi görüşleridir.
açılış - deneyhane - tasarılar - hakkımda - iletişim -

Sitede altyapı olarak Wordpress kullanılmıştır.