Oracle VM VirtualBox 5.1.8 : Bilgisayarınızda aynı anda birden fazla işletim sistemi çalıştırabilmenizi sağlayan programdır.
Ubuntu Server 16.10 : Ubuntu, Linux tabanlı özgür ve ücretsiz bir işletim sistemidir. Ubuntu Server ise sunucu bilgisayarlar için özelleştirilmiş ubuntu türevidir.
Ruby 2.3.1 : Ruby, nesneye yönelik, dinamik bir programlama dilidir.
Ruby on Rails 4.2.6 : Ruby On Rails, Ruby diliyle yazılmış, açık kaynak kodlu bir web uygulama geliştirme çatısıdır.
Kurulum
VirtualBox'ı kuruyoruz.
Yeni işletim sistemi kurmak için, gelen VirtualBox Yöneticisi ekranında sol üstte bulunan yeni butonuna tıklayarak kuracağımız işletim sisteminin özelliklerini ayarlıyoruz ve işletim sisteminin iso kalıbını göstererek Ubuntu Server kurulumunu yapıyoruz.
Kurulumu yaptıktan sonra ağ yapılandırmasını yapmak için Shutdown now komutu ile makineyi kapatıyoruz. VirtualBox Yöneticisi'nde kurduğumuz makinenin ayarlar kısmını açıyoruz. Ağ bölümüne geliyoruz.
B.noktası Yönlendirme'ye tıklıyoruz.
Açılan ekranda sağ taraftaki yeni bağlantı kuralı ekleme işaretine basarak yeni bir bağlantı kuralı ekliyoruz.
Adı kısmına bağlantı kuralının adını yazıyoruz buraya istediğimiz herhangi bir şeyi yazabiliriz.
Protokol, Anamakine IP ve Misafir IP kısmını değiştirmemize gerek yok.
Misafir B.Noktası kısmına oluşturduğumuz yeni makinenin yönlendirilecek olan Portunu yazıyoruz. Ruby on Rails varsayılan olarak 3000 Portunu kullanır. Ancak bunu değiştirebiliriz.
Kısacası kullanacağımız Portu yazıyoruz.
Anamakine B.Noktası kısmına ise anamakinemizden gireceğimiz Portu yazıyoruz. Buraya gireceğimiz Portu, yaptığımız WEB uygulamasına girerken kullanacağız.
Ağ ayarlarını yaptıktan sonra makinemizi başlatalım. Güncelleme ve Yükseltmeleri yapalım
sudo apt-get update ile güncelleyelim.
sudo apt-get upgrade ile makinemizi yükseltelim.
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev
libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev
python-software-properties libffi-dev
ile Ruby gereksinimlerini yüklüyoruz.
Rbenv Kurulumunu yapıyoruz. Rbenv, Ruby için versiyon yönetim sistemidir.Basit bir şekilde birden çok Ruby versiyonunu birlikte kullanmanızı sağlar.
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
komutlarını sırası ile çalıştırıyoruz.
rbenv install 2.3.1
rbenv global 2.3.1
ruby -v
Bundler kurulumunu yapıyoruz.
gem install bundler
rbenv rehash
Ruby on Rails Kurulumunu yapıyoruz.
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
ve
sudo apt-get install -y nodejs
ile Ruby on Rails için gerekli olan NodeJs'yi kuruyoruz.
gem install rails -v 4.2.6
ile Rails'i kuruyoruz.
Uygulamayı Oluşturma
rails new uygulama
ile yeni Ruby on Rails uygulaması oluşturuyoruz.
"uygulama" uygulamamızın adıdır. Değiştirebilirsiniz.
cd uygulama
ile uygulamamızın olduğu klasöre giriyoruz.
rails generate scaffold Kullanici ad:text yas:integer mesaj:text
komutu ile sayfa yapımızı oluşturuyoruz.
rails generate scaffold kımsı sabittir. Bu yapı sayfamızı açtığımızda da görebileceğiniz gibi bize
new-edit-show-destroy gibi özellikler sağlayan özel bir yapıdır.
Kullanici'yi sayfamıza girmek için kullanacağız.
ad,yas,mesaj kısmını kendimize göre oluşturuyoruz.
Yapımız oluştu.
rails generate model db uygulama_id:integer ad:text yas:integer mesaj:text
ile veritabanı modelimizi oluşturuyoruz.
rake db:migrate
komutu ile modelimizin veritabanını oluşturuyoruz ve sayfa tasarımımız ile birleştiriyoruz.
Sayfadaki new-edit-show gibi butonları otomatik olarak veritabanına veri ekleyecek, silecek .. şekilde ayarlıyor.
uygulama/config içerisine bir SQLite veritabanı ekledi.
schema.rb dosyasından ise yapısını görebiliriz.
rails server -b 10.0.2.15
ile server'imizi başlatıyoruz.
Burada -b 10.0.2.15 başlatılacak IP dir.
Bunu yazmazsak varsayılan olacak localhost ile başlıyor ve port yönlendirmede bir sorun oluyor. Sizde de port yönlendirmede bir sorun olursa böyle deneyebilirsiniz.
Normal olarak rails server komutu ile de başlatabilirsiniz.
Farklı Port ile başlatmayı isterseniz rails server -p XXXX ile istediğiniz Port ile başlatabilirsniz.
Serverimiz çalıştı. Sayfamıza girebiliriz.
tarayıcımıza http://localhost:3000/ yazıyoruz ve bizi böyle bir sayfa karşılıyor.
3000 yerine sizin yönlendirdiğiniz ve başlattığınız Portu yazmalısınız.
http://localhost:3000/kullanicis yazarak ad,yas,mesaj eklediğimiz sayfaya geliyoruz.
Buradaki /kullanicis rails generate scaffold kısmında sayfaya girmek için kullanacağız dediğimiz kısımdır. Sonuna 's' koyarak giriyoruz.
New Kullanici'ya basarak bu kısma geliyoruz. Ad,Yas,Mesaj kımsını doldurup Create Kullanici'ya bas
Ekledik.
Burdan eklediğimiz kullaniciları silebilir, editleyebilir, gösterebiliriz.
Karşılaşılan Sorunlar ve Çözümleri
Server'i başlattıktan sonra çalışmasına ve B.Noktası Yönlendirme kısmında misafir IP boş bırakılmasına rağmen anamakineden yönlendirilmiş Porta girildiğinde sayfanın gelmemesi. Çözümü için rails server ' in yanına -b 10.0.2.15 yazılarak bu IPden çalıştırılması gerekmektedir. Diğer IPler için yönlendirme yapmamaktadır. Ruby'e özgü bir sorun sanırım.
SQLite yi apt-get ile kurmama rağmen Rails'de eksik gibi bir hata veriyor. Ruby'e özel olarak Gem ile kurmamız gerekmektedir. gem install sqlite3 -v '1.3.8'
Kaynaklar
https://www.ruby-lang.org/tr/
https://gorails.com/
http://rubyonrails.org/
http://uguryilmaz.xyz/ruby-on-rails/1-ruby-on-rails-kurulumu-ubuntu-rbenv-ile.html
http://stackoverflow.com/questions/30771172/rails-bundle-install-fails
http://stackoverflow.com/questions/17787525/an-error-occurred-while-installing-sqlite3-1-3-7-and-bundler-cannot-continue
http://askubuntu.com/questions/386707/how-to-access-ruby-on-rails-assets-from-a-host-machine
Çok güzel olmuş, eline sağlık.
YanıtlaSil"-b 10.0.2.15" kısmı sırun değil, network mantığı gereği ve hemen hemen tüm dillerin tercihidir. IP adresi belirtilmeden başlatıldığında, development durumundaki bir yazılım sadece localhost'a cevap verecek şekilde başlatılır. Herkese cevap vermesi istenirse; 0.0.0.0 adresi üzerine bind edilir.