HELLO, I’M SERHAT AND THIS IS MY FANCY TITLE.

Rails'te CSV İşlemleri - Roo ve SmarterCSV GEM'leri


Roo GEM

CSV, XLS ve ODS'yi başarıyla okuyor, ancak tüm yaptığı bundan ibaret - başka bir özelliği yok.

Roo GEM CSV Load

require 'roo'
s = Roo::CSV.new("/home/msdundar/Masaüstü/import.csv")
=> #<Roo::CSV:0x9db2adc @filename="/home/msdundar/Masaüstü/import.csv", @options={}, @cell={}, @cell_type={}, @cells_read={}, @first_row={}, @last_row={}, @first_column={}, @last_column={}, @header_line=1, @default_sheet="default">

Roo GEM CSV Read

# encoding: utf-8
require 'roo'
s = Roo::CSV.new("/home/msdundar/Masaüstü/import.csv")

for i in (s.first_row..s.last_row)
  puts s.cell(i,3)
end
Continue reading

GEM - unicode utils


MERNİS'e yaptığım bir request'te, Ruby'nin upcase metodu kaynaklı Türkçe karakter problemi ile karşılaştım.

SOAP request'ini incelediğimde "ü" karakterinin büyük harfe çevrilemediğini gördüm:

<env:Body>
  <tns:TCKimlikNoDogrula>
  ...
    <tns:Ad>MUSTAFA SERHAT</tns:Ad>
    <tns:Soyad>DüNDAR</tns:Soyad>
  ...
  </tns:TCKimlikNoDogrula>
</env:Body>

Türkçe karakterlerin doğru şekilde büyük ve küçük harflere çevrilmesi için unicode_utils GEM'ini kullanabilirsiniz. Daha sık güncellenen ve daha performanslı benzer bir GEM olarakta unicode'u kullanabilirsiniz. Bu yazıda unicode_utils GEM'i takip edilecek.

Continue reading

Rails - Callbacks


Kullanıcılardan herhangi biri hesabını iptal ettiği zaman adminlere bilgilendirme maili gitmesi, bir işlem tetiklendiğinde - başka bir işlemin de gerçekleşmesi veya bir model nesnesi oluşturduğunuzda, başka bir model nesnesinin de onla ilişkili olarak oluşması gibi durumları tanımlarken ihtiyaç duyduğumuz metodların en sık kullanılanları Rails'te 6 tanedir. Bunlar:

  • before_create
  • after_create
  • before_save
  • after_save
  • before_destroy
  • after_destroy

Zaten bu ifadelerin ne iş yaptığı isimlerinden de anlaşıldığı için tekrarlamayacağım.

Continue reading

KPS - MERNİS Sorgulama - Ruby, Savon ve SOAP


Geçtiğimiz hafta hem TTMesaj servisini hem de KPS'i (Kimlik Paylaşım Sistemi) Rails uygulamalarına entegre etme ihtiyacımızla birlikte, ismini pek sık duyduğum SOAP ile haşır neşir olmak durumunda kaldım. Üç-dört gün sonunda SOAP bana herhangi bir üçüncü dünya ülkesinin beyaz yakalı "plaza" çalışanını çağrıştırıyor. Bu çağrışımda ülkemizdeki SOAP servisleri ile haberleşen kod örneklerinin büyük çoğunlukla C#, ASP.Net ve Java ile yazılmış olmasının payı büyük.

Continue reading

Rails CRUD Cheatsheet


Metod Etki Alanı Örnek Not
new Model Student.new(adi: 'Serhat', soyadi: 'Dundar') Model bir nesneye atandığında, nesnenin save metodu ile kayıt edilmesi gerekir.
new_record? Nesne student.new_record? true veya false döndürür.
attributes Nesne student.attributes attribute'leri hash olarak döndürür.
* attribute_ismi Nesne student.finalnotu = "65" Model ismi komut olarak çağırılarak mümkün attribute'ler listelenebilir.
save Nesne student.save SQL muadili: INSERT INTO. Eğer nesne daha önceden mevcutsa UPDATE.
count Model & Nesne Student.count veyastudent.count SQL muadili: SELECT COUNT(*) FROM "students"
create Model Student.create(adi: 'Serhat', soyadi: 'Dundar') veya; x = {ad: 'Serhat', soyad: 'Dundar'} ve sonra Student.create(x) new metodundan farklı olarak doğrudan save işlemi yapar. SQL muadili: INSERT INTO
find(:id) Model & Nesne Student.find(1) veya Student.find([1,5]) find metodunu bir nesneye atayıp, daha sonra nesneyi çaşitli işlerde kullanabiliriz. SQL muadili: SELECT "students".* FROM "students" WHERE "students"."id" = ? LIMIT 1 [["id", 1]]
first Model & Nesne Student.first SQL muadili: SELECT "students".* FROM "students" ORDER BY "students"."id" ASC LIMIT 1
last Model & Nesne Student.last SQL muadili: SELECT "students".* FROM "students" ORDER BY "students"."id" DESC LIMIT 1
all Model Student.all SQL muadili: SELECT "students".* FROM "students"
class Model & Nesne Student.class [Class] veya student.class [Array] -
size Nesne student.size Nesnenin boyutunu verir.
order Model Student.order('ogrenci_no') SQL muadili: SELECT "students".* FROM "students" ORDER BY ogrenci_no
where Model Student.where(ogrenci_no: '09310009') SQL muadili: SELECT "students".* FROM "students" WHERE "students"."title" = 'My first post'
update_attributes Nesne student.update_attributes(ad: 'Mustafa', ogrenci_no: '08310009') true veya false döndürür.
destroy Nesne & Model Nesne üzerinde kullanım: student = Student.last && student.destroy. Model üzerinde kullanım: Student.last.destroy veya; Student.destroy(1) veya; Student.destroy([1,5]) DELETE FROM students WHERE id = 5; Nesne üzerinde kullanıldığında, kayıt silinmiş olmasına rağmen student nesnesi hala bellekte tutulur, fakat durumu read-only'dir, yani frozen durumdadır.
delete Model Student.delete(1) veya Student.delete([1,5]) find ve create gibi işlemi anında uygularlar. SQL muadili: DELETE FROM "students" WHERE "students"."id" = 1
delete_all Model Student.delete_all("ogrenci_no = 09310009") delete'den farklı olarak şartlı silme işlemlerini yapar. delete_all argümansız çalıştırılırsa tablonun tüm satırlarını siler!
destroy_all Model Student.destroy_all('ogrenci_no = 09310009') delete'den farklı olarak şartlı ve ilişkili silme işlemlerini yapar. destroy_all argümansız çalıştırılırsa tablonun tüm satırlarını ve ilişkili olduğu tüm tabloları siler!
Continue reading
Date: | Tags: ruby on rails dersleri, rails crud işlemleri | Categories: tech, ruby