Belli bir süre Octopress’i mercek altına alacağız.
Rails Projelerinde JQuery Autocomplete Kullanımı
Bunun için jQuery UI kütüphanesine ihtiyacımız var. Kütüphaneyi projemize eklemek için jquery-ui-rails gemini kulanacağız. Gemfile dosyasına gemi gem "jquery-ui-rails" ekledikten sonra bundle install komutunu çalıştıralım.
Javascript kütüphanesini çağırmak için application.js dosyasına
1
| |
Css kütüphanesini çağırmak için application.css.scss dosyasına
1 2 3 | |
satırlarını ekleyelim.
Ruby on Rails Breadcrumbs(Ekmek Kırıntısı)
Breadcrumb için breadcrumbs_on_rails gemini kullanıyoruz. Gemfile’ a gem 'breadcrumbs_on_rails' ekledikten sonra bundle:install komutunu çalıştırarak gemi kuralım. Controller’ da add_breadcrumb metodunu çağırarak breadcrumb ekleyebiliyoruz. View katmanında ise render_breadcrumbs helper’ ı kullanıyoruz.
1 2 3 | |
Globalize3 Ile Çoklu Dil Desteği (I18n)
Model katmanına I18n desteği eklemek için globalize3 gemini kullanıyoruz.
Gemfile’ a gem 'globalize3' ekleyip bundle install ile gemi kuralım.
Modelde I18n desteği eklenilecek fieldları belirtiyoruz.
1 2 3 4 | |
PostgreSQL Yedek Alma Ve Geri Yükleme
pg_dump
pg_dump veritabaniadi -f dosyaadi.dump
- 1 vt yedeği alır.
- Öntanımlı olarak düz metin yedek alır.
Yedeği sıkıştırabilir.
pg_dump -Fc veritabaniadi -f dosyaadi.dumpGlobal veriyi almaz. (User, tablespace)
- Sıkıştırılmış yedeği tablo bazında açma imkanı. Sadece sıkıştırılmış formattayken.
- Sadece istenilen tabloların yedeğini alma
-t "satislar."satislar tablosunun yedeğini al.-T satislarsatislar dışındaki tabloların yedeğini al. - Sadece schema yı yedek alma
-s - Sadece dataları almak.
-a
pg_dumpall
- Tüm veritabanlarının yedeğini tek dosyaya alır.
- Sadece düz metin olarak yedek alır.(.sql)
- Bir tablo veya database açılamaz. Yedekler olduğu gibi geri yüklenir.
- Global bilgileri ayrı olarak yedekleyebilirsiniz.
pg_dumpall -g -f dosyaadi.dump - Sadece schema yı yedek alma
-s - Sadece dataları almak.
-a
pg_dump & pg_dumpall
INSERTli yedek almaz. Bunun yerineCOPYkullanılır. Sebebi herINSERTişlemininTRANSACTIONiçerisinde olmasıdır.
Kesinlikle pg_dump kullanın, yedeği sıkıştırın, global bilgileri pg_dumpall ile alın. Geri yüklerken önce global veriler yüklenir.
pg_restore
pg_restore -d veritabaniadi yedek.dump -j 4- Sadece sıkıştırlmış verileri geri yükler.
-jparelel oturum.
ab2013 postgresql eğitim notlarından.
İyi çalışmalar.
Ruby on Rails Application Template Oluşturma
Template nedir ?
Yeni bir rails uygulaması oluştururken genel görevleri otomatikleştirmek için yardımcı ruby script. Örneğin her rails projesinde devise gemini kullanıyorsak bunu her seferinde eklemek yerine template’ e ekleyip aynı işlemleri tekrarlamaktan kurtulabiliriz.
Template Oluşturma
Template oluşturmak için ne bir generator nede bir gem kullancağız. İçerisine bazı metodlar yazabileceğimiz bir ruby dosyası yeterli :)
Deploy İşlemleri Checklist’im
Deploy ederken birşeyleri atlamamak için kendime bir checklist oluşturdum. Deploy için Capistrano kullanıyoruz.
Branch Merge işlemleri
Merge işlemlerini kesinlikle komut satırından yapın.
- Merge edilecek branch taki tüm kodların güncel olduğundan emin olun.
1 2 | |
Kodları test edin
Üçüncü part
javascript,cssdosyaları varmı bakın.Varsa bunlar
environments/production.rbye eklenmişmi ona bakın. Assets precompile için.Kendisine merge yapılcak branch’ taki kodların güncel olduğundan emin olun.
1 2 3 | |
config/deploy.rbdosyasını kontrol edin. IP, user, port…
Paperclip: Dosyaları Yeni Bir Yol (Path)’ a Taşımak
Dosya upload işlemleri için genellikle Paperclip kulanıyoruz. Paperclipte :path parametresi ile dosyanın hangi path altına kaydedeliceğini belirtebiliyoruz. Product modelindeki :picture için bir path belirledik. Dosyalar public/system/products/pictures/ dizinin altına :style(original, icon, small, large) klasörününde içine "#{id}-#{name.parameterize}.format" olarak kaydedilyor. Linklerde http://localhost:3000/system/products/pictures/original/1-bilgisayar.jpeg şeklinde oluyor. Peki biz bu path’ i ürün production’ a çıktıktan sonra değiştirirsek ne olur ?. Ne olacak tüm dosya linkleri patlayacak :) Yani eski dosyaları yeni path ile tekrar kaydettirmemiz gerekecek.
Ruby on Rails’ Te Ransack Gem’ I Ile Arama
Ransack ile kolay bir şekilde arama ve sıralama işlemlerini yapabiliyoruz. Gemfile dosyasına
gem 'ransack' satırını ekledikten sonra bundle install ile kuralım.
Arama için search metodunu kullanıyoruz.
1 2 | |
- Aynı anda iki alanda arama yapmak istersek
orkullanıyoruz.
1 2 | |
Ruby on Rails’te Excel Export
Excel export işlemlerinde to_xls gemini kullanıyoruz. Export edilen excel dosyaları xls uzantısında oluyor.
Excel renderlermek için config/initializers/mime_types.rb doyasına mime type eklemeyi unutmuyalım.
1
| |
Gemfile dosyasına gem 'to_xls' ekleyip bundle install ile kuruyoruz.
Ruby on Rails REST API’de Access Token Kullanarak Kullanıcı Doğrulama
Öncelikle;
HTTPSkullanın. ÇünküHTTPkullanıldığında parametreler plain text olarak iletiliyor.Http Request’ leri dinleyen birisi keylerinize çok rahat ulaşabilir.access_token’ ları url den parametre olarak almak yerineHttp Header’ dan almak daha uygundur. Çünkü kullanıcı alışkanlıkları (kopyala-yapıştır-test et) yönündedir. URL de unutulan tokenlar güvenlik için tehlikeli olabilir.
Kullanıcı doğrulama ile ilgili daha önce yazdığım Ruby On Rails REST API’ de HTTP Basic Authentication Kullanarak Kullanıcı Doğrulama yazısını okuyabilirsiniz.
Ruby on Rails Ile Rails::API Gem’ini Kullanarak API Geliştirme
Daha önce API geliştirme ile ilgili Ruby On Rails’ te API Yazalım başlıklı bir yazı yazmıştım. Bu yazımda ise Rails::API gem’ ini kullanarak API geliştirmeyi anlatacağım.
Rails::API bir API için gerekli olan kütüphaneler dışındaki kütüphaneleri çıkararak(view, assests …), normal bir rails projesine göre daha hafif bir proje oluşturabilmemizi sağlayan gem.
Aşağıdaki komutu çalıştırarak gem’ i yükleyelim
gem install rails-api
Scp - Sunucuya Dosya Gönderip Alma
Merhabalar,
scp komutunu kullanarak;
- Uzak bilgisayar (Sunucu) ile yerel bilgisayar (Locale) arasında
- Uzak bilgisayar ile uzak bilgisayar arasında
dosya kopyalama işlemlerini yapabilyoruz.
MySQL Root şifresini Resetleme
root şifreside unutulurmu demeyin valla unutuluyor :)
MySQLserver durdulur
1 2 3 | |
--skip-grant-tablesparametresi ile güvenli modda tekrar başlatalım. Güvenli modda başlatınca yetkilerin hiçbirisi dikkate alınmayacak.
1
| |
MySQLkonsoluna giriş yapalım
1
| |
rootşifresini değiştirelim
1 2 3 4 | |
MySQLsunucusunu başlatalım
1
| |
İyi çalışmalar…
MySQL’de Yeni Veritabanı Ve Veritabanı Kullancısı Oluşturma
MySQL’ e login olalım
1
| |
- Veritabanı oluşturalım
1
| |
pigon_production isminde bir veritabanı oluşturduk.
- Şimdide bir kullanıcı oluşturalım ve
pigon_production’ ı kullanabilmesi için yetki verelim.
1 2 | |
Artık pigon kullanıcısı oluşturuldu ve pigon_production veritabanını kullanma yetkisi verildi. Buradaki yetki GRANT ALL komutundan da anlaşılacağı gibi veritabanı üzerinde tüm işlemleri yapabilme yetkisidir.
Kolaylıklar…
Sunucunun Ssh Portunu Değiştirme
ssh portu default olarak 22 dir. Güvenlik için istersek bunu değiştirebiliyoruz.
nano ile /etc/ssh/ dizinindeki sshd_config dosyasını açıp 5. satırdaki Port 22 yazan yerdeki 22 portunu değiştirip kaydediyoruz.
1
| |
Değişiklikler algılaması için aşağıdaki komut ile ssh’ ı yeniden başlatıyoruz.
1
| |
Localden bağlanırken portu belirtiyoruz.
1
| |
-p parametresi ile portu belirtmiş olduk.
Eğer deploy işlemleri için Capistrano kullanıyorsak deploy.rb dosyasında aşağıdaki gibi portu belirtiyoruz.
1
| |
İyi çalışmalar
Mysql’de Kullanıcı şifrelerini Değiştirme
MySQL şifre değiştirme işlemleri için kullandığım iki yöntem var. Onlardan bahsedeceğim.
mysqladmin komutunu kullanarak
1
| |
-pcurrentpassword teki
pilecurrentpasswordbitişik. Bu alana şimdiki şifremizinewpasswordalanınan da yeni şifremizi yazıyoruz.
Ubuntu Makine üzerinde Kullanıcı şifrelerini Değiştirme
root olarak oturum açtıktan sonra;
passwdkomutunu çalıştırarak root şifresinipasswd usernamekomutunu çalıştırarak diğer kullanıcların şifrelerini değiştirebiliriz.
Kolaylıklar…
Mysqldump Ile Veritabanı Yedeği Alma
Bugün sunucu üzerinde işlemler yaparken ne olur olmaz deyip mysql yedeğini alayım dedim. Aşağıdaki komut satırı ile veritabanı yedeğini alabiliyormuşuz.
mysqldump -u username -p database> backup_20121022.sql
mysql şifresini girdikten sonra bulunduğumuz dizine backup_20121022.sql isminde bir dosyaya veritabanı yedeğini alıyor.
İyi çalışmalar.
Ruby on Rails’te Client Side Validasyon
Client Side validasyonlar için ClientSideValidations gemini kullanıyoruz. Simple Form ile çalışabilmesi içinde ClientSideValidationsSimpleForm gemini kullanıyoruz.
Kurulum
Gemleri Gemfile’ a ekleyip bundle install yapalım
1 2 | |
Daha sonra kurulum komutunu çalştıralım.
1
| |
config/initializers/client_side_validations.rb başlangıç dosyasının eklendiğini görüyoruz.
Eğer istersek gem’ lerin kullandığı javascript dosyaların assets dizinin altına kopyalayabiliriz.
1
| |