1995 yılında Japon asıllı “Matz” lakaplı Yukihiro Matsumoto tarafından geliştirilen, Nesne Tabanlı, Yorumlanan Okunabilirlik seviyesi oldukça yüksek, WhiteSapace bağımsız, tab boşluk kullanılabilir, Python programlama diline oldukça benzeyen bir programlama dilidir. Ruby’de herşey nesnedir.
Çok karıştırılan bir konuda Ruby, Ruby On Rails değildir. Ruby On Rails aslında Ruby ile yazılmış bir web frameworkudur. Ruby programlama dilini web harici projelerde de kullanmayı düşünebilirsiniz!
apt update && apt dist-upgrade apt install ruby apt install ruby-rails
Ruby'i üç farklı şekilde çalıştırabiliriz.
ruby -e 'puts "Huseyin"' ruby -e 'print "Huseyin"'
ruby test.rb
Son olarak konsol üzerinde "irb" yazarak interactive olarak Ruby kodu yazabilirsiniz.
Ufak bir örnek yapalım bu örneğimiz bir class ve içinde metodlar barındırsın.
class Selamlama def initialize(isim = "Dünya") @isim = isim end def merhaba puts "Merhaba #{@isim}!" end def hoscakal puts "Hoşcakal #{@isim}, Tekrar bekleriz." end end g = Selamlama.new("Huseyin") g.merhaba g.hoscakal
rails generate migration AddPublishDateToPage publish_time:date:index .......... invoke active_record create db/migrate/20180813094931_add_publish_date_to_page.rb
Oluşan migrate dosyamızı aşağıdaki
rake db:migrate:up VERSION=20180813094931
== AddPublishDateToPage: migrating ========================================== -- add_column(:page, :publish_date, :date) -> 0.3943s -- add_index(:page, :publish_date) -> 0.1202s == AddPublishDateToPage: migrated (0.5146s) =================================
show_on_ios:boolean:index .... invoke active_record create db/migrate/20180817080315_add_show_on_android_or_ios_to_games.rb
Migration kısmını oluşturduk artık bu migration'ı db imiz için çalıştırabiliriz.
# rake db:migrate:up VERSION=20180817080315 .... == AddShowOnAndroidOrIosToGames: migrating =================================== -- add_column(:games, :show_on_android, :boolean) -> 0.3818s -- add_index(:games, :show_on_android) -> 0.1136s -- add_column(:games, :show_on_ios, :boolean) -> 0.4097s -- add_index(:games, :show_on_ios) -> 0.1152s == AddShowOnAndroidOrIosToGames: migrated (1.0205s) ==========================
Manuel olarak default alanı ekleyelim.
class AddShowOnAndroidOrIosToGames < ActiveRecord::Migration def change add_column :games, :show_on_android, :boolean, :default => false add_index :games, :show_on_android add_column :games, :show_on_ios, :boolean, :default => false add_index :games, :show_on_ios end end
Windows kullanıcıları bundle exec ekleyerek kullanmalı.
# bundle exec rake db:migrate:up VERSION=20180817080315
Yukarıda yaptığımız örneğimizde aynı anda iki alan oluşturmuş olduk ayrıca tinyint(1) tipinde farklı bir alan ekledik.
Aşağıdaki örneğimizle bir alanı nasıl drop edeceğimize bakalım.
bundle exec rails generate migration RemoveShowOnMobileFromPlay show_on_mobile:boolean .................. invoke active_record create db/migrate/20180903063131_remove_show_on_mobile_from_play.rb
Yukarıda oluşturduğumuz dosyayı istersek manuel olarak düzenleme yapabiliriz. Düzenleme yapmasak bile yükseltme yapmadan bakıp kontrol etmekte fayda var.
vim db/migrate/20180903063131_remove_show_on_mobile_from_play.rb
Her hangi bir sıkıntı görmüyorsanız yükseltme yapabilirsiniz.
# bundle exec rake db:migrate:up VERSION=20180903063131
Bazı durumlarda migration kısmında ilaveler yapmamız gerekebilir örneğin kaldıralan bir alan değerini yeni açılan alanlara taşınması gibi aşağıdaki migration dosyasının içeriğini inceleyebilirsiniz.
class RemoveShowOnMobileFromGames < ActiveRecord::Migration def up Game.update_all("show_on_android=show_on_mobile,show_on_ios=show_on_mobile") remove_column :games, :show_on_mobile end def down add_column :games, :show_on_mobile, :boolean end end
Aşağıdaki tabloda bu alan tiplerinin db bazlı nasıl isimlendirildiğini görebilirsiniz.
Yorumlar