Windows, Ruby on Rails, Heroku, Git
use Windows PC
want to develop Ruby on Rails application
want to host it on Heroku
want to check out source code using Git
there are couple of installations and settings before doing those.
Installing Git Extension
Installing Heroku gem
Createting an SSH key file
Adding keys to Heroku
You will probably need more than these, but these are minimums to get the code from the Heroku repository.
Create an SSH key file
After you installed these minimums, you run GitBash and create an SSH key for Heroku use.
$ ssh-keygen –C “youremai@yourmail.com” –t rsa
Add your keys to heroku
You add this key to Heroku for later check outs and check ins
You check out the code by using clone option of git
$ git clone -o heroku git@heroku.com:yourapp.git
fixture_replacemet plugin ve primary key olmayan tablo sorunu
Eğer Ruby on Rails ile uygulama geliştiriyorsanız fixture'ları kullanmışsınızdır. Fixture'lar YAML veya CSV biçimindeki metin dosyalarıdır ve test veritabanınızı doldurmak için kullanılır. Bu çok karmaşık olmayan veri tabanı şemaları için uygun ve etkin bir çözümdür. Ancak, modellerinizin sayısı artıp sisteminiz karmaşık hale gelmeye başlayınca fixture'ları yönetmek zorlaşmaya başlar. Birbirine bağımlı olmaya başlayan fixture'lari birbirini etkilemeyecek şekilde arttırmaya veya düzenlemeye çalışmak vakit alır ve pratik olmaktan çıkarlar. Bu durumda FixtureReplacement gibi bir plugin kullanıp işlerinizi kolaylaştırabilirsiniz.
FixtureReplacement fixture'lardaki dezavantajları ortadan kaldırır. FixtureReplacement naıl kullanıldığını merak ediyorsanız "http://github.com/smtlaissezfaire/fixture-replacement-git/tree/master":http://github.com/smtlaissezfaire/fixture-replacement-git/tree/master adresindeki readme'ye bir göz atın derim. Çok basit bir kullanımı olduğunu göreceksiniz.
Geçenlerde FixtureReplacement kullanırken bir sorunla karşılaştık ama basit bir alternatif yöntem kullanarak bu sıkıntıyı aştık. Problem FixtureReplacement'ın primary key'i olmayan bir tablo için 'create' methodunun çalışmamasıydı. Diğer bir deyişle eğer tablonuzda bir 'id' alanı yok veya modelinizde 'set_primaty_key' ile bir alanı primary key olarak seçmediyseniz ActiveRecord'ın 'create' methodunu kullanan FixtureReplacement bu yüzden hata veriyor. Örneğin,
Kedi tablomuz olsun ve alanları şöyle olsun:
ad, cins, goz_rengi, tuy_rengi, kilo
Bu modeli FixtureReplacement sunduğu yöntemle (create_model) şu şekilde yaratmaya çalışalım
:ad => "Sarman",
:cins => "tekir",
:tuy_rengi => "sarı",
:goz_rengi => "ela",
:kilo => "6"
Sonuç aşağıdaki hata gibi olacaktır.
ActiveRecord::StatementInvalid: PGError: ERROR: column "id" does not exist
Bunu şu şekilde de denesek sonuç aynı olurdu
kedi = Kedi.new(
Doğrudan SQL kullandığımız zaman bu problemin ortadan kalktığını görüyoruz
sql = "INSERT INTO kedi (ad, cins, goz_rengi, tuy_rengi, kilo) VALUES ('Sarman', 'tekir', 'ela', 'sarı', 6)"
FixtureReplacement kullanıyor ve primary key olmayan bir tablonuz varsa create_model (model yerine kendi modellerinizden birini düşünün create_kedi gibi) metodunu kullanamazsınız. Bunun yerine doğrudan SQL çalşıtırmanız testleriniz sırasında size bir çözüm sağlayacaktır.