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.dump
Global 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 satislar
satislar 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
INSERT
li yedek almaz. Bunun yerineCOPY
kullanılır. Sebebi herINSERT
işlemininTRANSACTION
iç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.
-j
parelel 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
,css
dosyaları varmı bakın.Varsa bunlar
environments/production.rb
ye 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.rb
dosyası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
or
kullanı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;
HTTPS
kullanın. ÇünküHTTP
kullanı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 :)
MySQL
server durdulur
1 2 3 |
|
--skip-grant-tables
parametresi ile güvenli modda tekrar başlatalım. Güvenli modda başlatınca yetkilerin hiçbirisi dikkate alınmayacak.
1
|
|
MySQL
konsoluna giriş yapalım
1
|
|
root
şifresini değiştirelim
1 2 3 4 |
|
MySQL
sunucusunu 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
p
ilecurrentpassword
bitişik. Bu alana şimdiki şifremizinewpassword
alanınan da yeni şifremizi yazıyoruz.
Ubuntu Makine üzerinde Kullanıcı şifrelerini Değiştirme
root
olarak oturum açtıktan sonra;
passwd
komutunu çalıştırarak root şifresinipasswd username
komutunu ç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
|
|