Migration Sql Dump 30/08/07
ActiveRecord::Migration kullanarak saf-ruby komutları ile şekillendirdiğimiz tabloların SQL çıktısını almak için projenin ana dizinine gelip
komutunu vermek yeterli olacaktır.
Oluşturulan sql dosyasını “db” klasöründe bulabilirsiniz.
Veritabanı yordamları, geliştirilen programdan sanki ayrı bir olay imişcesine yan kısımda tutulmuş, programa veritabansal olayları yaptırmak için çoğunlukla farklı farklı kütüphaneler kullanmak zorunda kalmıştık. ORM’ler bu konuda bir derece ilerleme kaydetselerde sorgulama olayları için yine ayrı bir dil olan SQL’e muhtaç oluyorduk.
Ambition Ruby dili için bunu ortadan kaldırmayı hedefleyen bi’ kaç kütüphaneden biri.
Ben artık şöyle bir sorgulama yapabiliyorum.
Ya da şöyle bir sorgulama
=> "SELECT * FROM girisler ORDER BY girisler.kisa_baslik"
Yahut şöyle;
=> 3
>> Giris.select { |g| g.aktif == true }.sort_by(&:created_at).to_sql
=> "SELECT * FROM girisler WHERE girisler.`aktif` = 1 ORDER BY girisler.created_at"
Enumerable sınıfı dahil olduğu için şöyle bir yazdırma tekniği kullanabiliyorum.
?> puts yazi.baslik
>> end
Henüz eksiklikleri olmasına rağmen yakın bir zamanda hemen hemen tüm sorgulamalarımızı yapabileceğimiz hale geleceğine inanıyorum.
Bağlantılar
Case, If Söz Dizimi 28/08/07
# if kullanımı
if durum == 0
puts "Hata var!"
elsif durum == 1
puts "işlem başarılı"
elsif durum == 2
puts "başka bir mesaj"
elsif durum == 3
# falan
end
# case kullanımı
case durum
when 0
puts "hata var"
when 1
puts "işlem başarılı"
end
ipucu
Eğer bir fonksiyondan dönen integer değere göre ekrana mesaj yazdırmak isteniliyorsa en kısa yol şu olabilir:
- # örnek bir fonksiyon
- def durum(kosul)
- kosul
- end
- mesajlar = ["hata var", "işlem başarılı", "mesaj üç", "mesaj dört"]
- puts mesajlar[durum(0)]
tek tırnak - çift tırnak 23/08/07
- isim = 'İsmim'
- puts "isminiz: #{isim}"
- # çıktı: İsminiz: İsmim
- puts 'İsminiz: #{isim}'
- # çıktı: İsminiz: #{isim}
Dreamhost üzerinde Rails projesi 16/08/07
Rails uygulamaları geliştiriyor ve sunucu olarak Dreamhost kullanıyorsanız, uygulamanızda eklenti (plugin) kullanmadan önce eklentinin sunucuda çalışıp çalışmadığını test etmekte fayda var. Zira sonrasında fazlaca baş ağrıtabiliyor.
Dreamhost ve Rails Uygulaması
- ssh üzerinden sunucuya bağlanın.
- projenizi oluşturun: rails proje
- yereldeki “app” klasörünü, “config/routes.rb” ve “public” klasöründe değiştirmiş olduğunuz dosyaları gönderin.
- eklentilerinizi sunucuya kurun
- config/environment.rb dosyasından projenizi “production” ortamına geçirin.
- config/database.yml dosyasını güncelleyin.
- rake db:migrate ile tablolarınızı ayarlayın.
- public/.htaccess dosyanızı açın ve dispatch.cgi yi dispatch.fcgi ile değiştirin
Bir ipucu:
Dreamhost panelinde sayfanızın “home directory” alanına proje/public yazarak (subdomain yahut domain) alan adınıza erişenlerin direkt projeye girmesini sağlayabilirsiniz.
Eğer projelerinizde in_place_edit kullanıyorsanız, kullandığınız değer sıfırlandığında kullanıcının bunu yeniden değiştirme şansı olmayacaktır. Bu nedenle ufak bir kodla bu soruna çözüm bulabilirsiniz.
Öncelikle bunu uygulayacağımız “model”imizi açıyoruz ve kayıttan önce bu alanı kontrol ediyoruz.
before_save :kontrol
private
def kontrol
self.aciklama = 'Açıklama Yazmak İçin Tıklayın' if self.aciklama.empty?
end
end
Sayfanızda değişkeni göstereceğiniz yerde ise ufak bir ön kontrolden sonra yazdırabilirsiniz.
str == 'Açıklama Yazmak İçin Tıklayın' ? '' : str
end
“Açıklama Yazmak İçin Tıklayın” i sabit olarak tanımlamak tabii ki her daim daha iyidir.
Kodlama sürecinde yazılım hata verdiği zaman diğer bir kısma geçmeyip o hatayı bulmaya çalışmak genelde daha uzun vaktin geçmesine sebep olabiliyor. Bugün böyle bir hatanın arayışında fazlaca bir zaman yitirdim, hatayı ve çözümü yazıyorum, başa gelebilecek türden bir hata.
Hata şu: “RJS ile sayfanın bir kısmını ‘partial’ bir dosya ile değiştireceğim ve bazı yerlere efektler vereceğim”
Basit bir olay, çalışmaması için bir sebep yok.
page.visual_effect :highlight, 'kategori_ekle'
Lakin gel gör bu kod çalışmamakta direniyor. Kodlarda bir sorun yok, sebep şu:
_kategori_listesi.rhtml şu şekilde:
@kategoriler.each … bla bla
Hata Sebebi:
“Kategori Listesi” kategoriler adındaki değişkeni arıyor ve ekleme yaptıktan sonra bunu gözden kaçırıp döndürmemişiz.
Özet:
replace_html ile partial bir dosyanın içeriği koymak istiyorsanız değişkenleri mutlaka düzgün gönderin. Zira, Rails size herhangi bir hata vermiyor.
Rss Oluşturumu 11/08/07
Controller dosyamız:
def index
@liste = Giris.find(:all, :order => "updated_at, created_at" , :limit => 15, :conditions => 'ozel = false AND aktif = true')
@headers["Content-Type" ] = "application/rss+xml"
end
index.rxml dosyamız
xml.rss "version" => "2.0" , "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do
xml.channel do
xml.title 'SAYFA BAŞLIĞI'
xml.link url_for(:only_path => false, :controller => 'gunluk', :action => 'index' )
xml.pubDate CGI.rfc1123_date(@liste.first.updated_at)
xml.description h("AÇIKLAMA" )
@liste.each do |kayit|
xml.item do
xml.title kayit.baslik
xml.link url_for(:only_path => false,
:controller => 'gunluk' ,
:action => 'yazi' ,
:id => kayit.kisa_baslik)
xml.description kayit.kisa_icerik
xml.pubDate CGI.rfc1123_date(kayit.updated_at)
xml.guid url_for(:only_path => false,
:controller => 'gunluk' ,
:action => 'yazi' ,
:id => kayit.kisa_baslik)
xml.author "YAZAN"
end
end
end
end
XmlBuilder sınıfından faydalandık.
Beep’e Hayır! 07/08/07
Özellikle laptop üzerinde çalışırken, olup olmadık anlarda çıkabilecek “Beep” sesi ile tüm dikkatleri üzerine çekebilirsiniz. (Dikkat çekmek isteyenlere duyurulur ayrıca)
Windows üzerinde “Beep” sesini engellemek için şu yol mevcut imiş MSDN‘den edindiğim bilgilere göre:
net stop beep
Bir diğer yolda şu:
regedit > HKEY_CURRENT_USER > Control Panel > Sound > Beep : No
Linux üzerinde KDE için ayarlardan bunu direkt kapatabiliyoruz. (Sistem Zili)
Pardus & Postgresql 06/08/07
Pardus üzerinde hızlıca Postgresql’i kurmak için aşağıdaki adımları izleyebiliriz:
- Postgresql kurulumu ( pisi it postgresql-server )
- Servisi açalım: service postgresql-server start
- Kullanıcımız için “role” oluşturalım (Konsolda)
muarifer@muarifer ~ $ su
Parola:
muarifer muarifer # su postgres
postgres@muarifer muarifer $ createuser muarifer
Shall the new role be a superuser? (y/n) yexit
exit - Veritabanımızı oluşturalım: createdb VERITABANI
- Veritabanına bağlanmak için: psql -d VERITABANI






