{"id":39077,"date":"2026-02-13T21:40:54","date_gmt":"2026-02-13T18:40:54","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39077"},"modified":"2026-02-13T21:40:54","modified_gmt":"2026-02-13T18:40:54","slug":"ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/","title":{"rendered":"Ruby 2.1.0 ve Sinatra&#8217;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Ruby 2.1.0 ve Sinatra&#8217;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>Yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, \u00f6zellikle web uygulamalar\u0131 alan\u0131nda Ruby dili ve onun sundu\u011fu ekosistem \u00f6nemli bir yer tutar. Ruby on Rails gibi pop\u00fcler bir \u00e7er\u00e7eveye ev sahipli\u011fi yapmas\u0131n\u0131n yan\u0131 s\u0131ra, daha hafif ve esnek \u00e7\u00f6z\u00fcmler arayanlar i\u00e7in Sinatra gibi mikro-\u00e7er\u00e7eveler de sunar. Bu makale, belirli bir ortam ve versiyon kombinasyonu olan Ruby 2.1.0&#8217;\u0131 Sinatra ile birlikte Ubuntu 13 i\u015fletim sistemi \u00fczerine, Ruby Version Manager (RVM) kullanarak nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m detayl\u0131 bir \u015fekilde a\u00e7\u0131klayacakt\u0131r.<\/p>\n<p>Ubuntu 13, g\u00fcncel bir i\u015fletim sistemi olmasa da, belirli projeler veya eski sistemlerle uyumluluk gereksinimleri nedeniyle hala bu versiyon \u00fczerinde \u00e7al\u0131\u015fma ihtiyac\u0131 do\u011fabilir. Benzer \u015fekilde, Ruby 2.1.0 da Ruby&#8217;nin daha eski bir kararl\u0131 s\u00fcr\u00fcm\u00fcd\u00fcr ve belirli uygulamalar\u0131n bu versiyona ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olabilir. RVM ise, sisteminizde birden fazla Ruby s\u00fcr\u00fcm\u00fcn\u00fc ve her bir s\u00fcr\u00fcm i\u00e7in ayr\u0131 gemset&#8217;leri (paket koleksiyonlar\u0131) y\u00f6netmenizi sa\u011flayan paha bi\u00e7ilmez bir ara\u00e7t\u0131r. Bu sayede, farkl\u0131 projeler i\u00e7in farkl\u0131 Ruby ve gem versiyonlar\u0131n\u0131 \u00e7ak\u0131\u015fma olmadan kullanabilirsiniz.<\/p>\n<p>Bu rehberin amac\u0131, hem RVM&#8217;nin g\u00fcc\u00fcn\u00fc kullanarak temiz ve izole bir kurulum ger\u00e7ekle\u015ftirmek hem de Ruby 2.1.0 ve Sinatra&#8217;n\u0131n temel bir web uygulamas\u0131n\u0131 Ubuntu 13 \u00fczerinde nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 g\u00f6stermektir. Her ad\u0131m, olas\u0131 sorunlar\u0131 minimize etmek ve kurulum s\u00fcrecini anla\u015f\u0131l\u0131r k\u0131lmak i\u00e7in detayl\u0131 olarak a\u00e7\u0131klanacakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler ve Sistem G\u00fcncellemesi<\/h3>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce, sisteminizin g\u00fcncel oldu\u011fundan ve gerekli temel paketlere sahip oldu\u011fundan emin olmak kritik \u00f6neme sahiptir. Bu, olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nler ve daha sorunsuz bir kurulum s\u00fcreci sa\u011flar.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>\u00d6ncelikle, Ubuntu 13 sisteminizin paket listelerini g\u00fcncelleyelim ve mevcut paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltelim. Bu i\u015flem, sisteminizin kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r ve yeni yaz\u0131l\u0131mlar\u0131n gerektirdi\u011fi ba\u011f\u0131ml\u0131l\u0131klar\u0131n do\u011fru bir \u015fekilde kar\u015f\u0131lanmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<p>Bir terminal a\u00e7\u0131n (Ctrl+Alt+T) ve a\u015fa\u011f\u0131daki komutlar\u0131 s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade<\/code><\/pre>\n<p>*   <code>sudo<\/code>: Bu komut, normal bir kullan\u0131c\u0131n\u0131n y\u00f6netici (root) ayr\u0131cal\u0131klar\u0131yla komut \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar. Sistem genelinde de\u011fi\u015fiklikler yapaca\u011f\u0131m\u0131z i\u00e7in bu gereklidir. \u015eifreniz istendi\u011finde, kullan\u0131c\u0131 \u015fifrenizi girin.<br \/>\n*   <code>apt-get<\/code>: Ubuntu gibi Debian tabanl\u0131 sistemlerde paket y\u00f6netimi i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir komut sat\u0131r\u0131 arac\u0131d\u0131r.<br \/>\n*   <code>update<\/code>: Bu komut, yerel paket indeksini uzak depolardaki en son bilgilerle senkronize eder. Bu, hangi paketlerin mevcut oldu\u011funu ve hangi s\u00fcr\u00fcmlerinin bulundu\u011funu \u00f6\u011frenmek i\u00e7in gereklidir.<br \/>\n*   <code>upgrade<\/code>: Bu komut, <code>update<\/code> ile g\u00fcncellenen paket indeksine g\u00f6re, sisteminizde y\u00fckl\u00fc olan t\u00fcm paketleri en son kararl\u0131 s\u00fcr\u00fcmlerine y\u00fckseltir. Bu i\u015flem s\u0131ras\u0131nda yeni paketler y\u00fcklenebilir veya mevcut paketler kald\u0131r\u0131labilir.<\/p>\n<p>Bu komutlar\u0131n tamamlanmas\u0131 biraz zaman alabilir. \u0130\u015flem s\u0131ras\u0131nda herhangi bir onay istenirse &#8216;E&#8217; veya &#8216;Y&#8217; tu\u015funa basarak devam edin.<\/p>\n<h4>Gerekli Temel Paketlerin Kurulumu<\/h4>\n<p>RVM ve Ruby&#8217;nin sorunsuz bir \u015fekilde kurulabilmesi i\u00e7in baz\u0131 temel geli\u015ftirme ara\u00e7lar\u0131na ve k\u00fct\u00fcphanelerine ihtiyac\u0131m\u0131z olacakt\u0131r. Bu paketler, Ruby&#8217;nin kaynak koddan derlenmesi ve RVM&#8217;nin kendisinin \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereklidir.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu kullanarak bu paketleri y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install curl git gnupg2 build-essential libssl-dev libreadline-dev zlib1g-dev<\/code><\/pre>\n<p>*   <code>curl<\/code>: Uzak sunuculardan veri indirmek i\u00e7in kullan\u0131lan bir komut sat\u0131r\u0131 arac\u0131d\u0131r. RVM kurulum script&#8217;ini indirmek i\u00e7in kullan\u0131lacakt\u0131r.<br \/>\n*   <code>git<\/code>: Versiyon kontrol sistemi. RVM&#8217;nin baz\u0131 bile\u015fenlerini veya Ruby&#8217;nin kaynak kodunu indirmek i\u00e7in kullan\u0131labilir, ayr\u0131ca yaz\u0131l\u0131m geli\u015ftirme i\u00e7in vazge\u00e7ilmezdir.<br \/>\n*   <code>gnupg2<\/code>: GnuPG (GNU Privacy Guard) ara\u00e7 setinin bir par\u00e7as\u0131d\u0131r. RVM&#8217;nin kurulum script&#8217;inin g\u00fcvenli\u011fini do\u011frulamak i\u00e7in kullan\u0131lan GPG anahtarlar\u0131n\u0131 y\u00f6netmek ve do\u011frulamak i\u00e7in gereklidir.<br \/>\n*   <code>build-essential<\/code>: Bu paket, C\/C++ derleyicileri (GCC), make ve di\u011fer gerekli derleme ara\u00e7lar\u0131n\u0131 i\u00e7eren bir koleksiyondur. Ruby&#8217;nin kaynak koddan derlenmesi i\u00e7in temel bir gereksinimdir.<br \/>\n*   <code>libssl-dev<\/code>: OpenSSL k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131n\u0131 i\u00e7erir. Ruby&#8217;nin HTTPS gibi g\u00fcvenli a\u011f ileti\u015fimlerini desteklemesi i\u00e7in gereklidir.<br \/>\n*   <code>libreadline-dev<\/code>: Readline k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. Ruby&#8217;nin interaktif konsolu (IRB) gibi ara\u00e7lar i\u00e7in komut ge\u00e7mi\u015fi ve d\u00fczenleme \u00f6zellikleri sa\u011flar.<br \/>\n*   <code>zlib1g-dev<\/code>: Zlib s\u0131k\u0131\u015ft\u0131rma k\u00fct\u00fcphanesinin geli\u015ftirme dosyalar\u0131d\u0131r. Ruby&#8217;nin s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyalarla (\u00f6rne\u011fin gem paketleri) \u00e7al\u0131\u015fabilmesi i\u00e7in gereklidir.<\/p>\n<p>Bu paketlerin kurulumu da biraz zaman alabilir. Kurulum tamamland\u0131\u011f\u0131nda, RVM ve Ruby kurulumuna ge\u00e7meye haz\u0131r olacaks\u0131n\u0131z.<\/p>\n<h3>RVM (Ruby Version Manager) Kurulumu<\/h3>\n<p>RVM, sisteminizde birden fazla Ruby s\u00fcr\u00fcm\u00fcn\u00fc kolayca kurman\u0131za, y\u00f6netmenize ve projeleriniz aras\u0131nda ge\u00e7i\u015f yapman\u0131za olanak tan\u0131yan bir komut sat\u0131r\u0131 arac\u0131d\u0131r. Bu, farkl\u0131 projelerin farkl\u0131 Ruby versiyonlar\u0131na ba\u011f\u0131ml\u0131 oldu\u011fu durumlarda son derece faydal\u0131d\u0131r.<\/p>\n<h4>RVM GPG Anahtar\u0131n\u0131n \u0130\u00e7e Aktar\u0131lmas\u0131<\/h4>\n<p>RVM kurulum script&#8217;ini indirmeden ve \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce, script&#8217;in orijinalli\u011fini ve b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc do\u011frulamak i\u00e7in RVM&#8217;nin GPG (GNU Privacy Guard) anahtar\u0131n\u0131 sisteminize i\u00e7e aktarman\u0131z \u00f6nerilir. Bu, potansiyel g\u00fcvenlik risklerine kar\u015f\u0131 bir \u00f6nlemdir.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu kullanarak RVM&#8217;nin GPG anahtar\u0131n\u0131 i\u00e7e aktar\u0131n:<\/p>\n<pre><code class=\"language-bash\">gpg --keyserver hkp:\/\/keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3<\/code><\/pre>\n<p>*   <code>gpg<\/code>: GnuPG program\u0131n\u0131 \u00e7a\u011f\u0131r\u0131r.<br \/>\n*   <code>--keyserver hkp:\/\/keyserver.ubuntu.com<\/code>: Anahtar\u0131n hangi sunucudan al\u0131naca\u011f\u0131n\u0131 belirtir. Ubuntu&#8217;nun anahtar sunucusu genellikle g\u00fcvenilir bir kaynakt\u0131r.<br \/>\n*   <code>--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3<\/code>: Belirtilen anahtar kimli\u011fine sahip anahtar\u0131 al\u0131r. Bu, RVM geli\u015ftiricisinin kamu anahtar\u0131d\u0131r.<\/p>\n<p>Bu ad\u0131m, script&#8217;in kimli\u011fini do\u011frulaman\u0131za yard\u0131mc\u0131 olur. E\u011fer bu komut bir hata verirse (\u00f6rne\u011fin, anahtar sunucusuna ula\u015f\u0131lam\u0131yorsa), farkl\u0131 bir anahtar sunucusu deneyebilir veya anahtar\u0131 do\u011frudan RVM web sitesinden indirip manuel olarak i\u00e7e aktarabilirsiniz. Ancak genellikle bu komut sorunsuz \u00e7al\u0131\u015f\u0131r.<\/p>\n<h4>RVM Kurulum Script&#8217;ini \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>GPG anahtar\u0131n\u0131 i\u00e7e aktard\u0131ktan sonra, RVM&#8217;yi y\u00fcklemek i\u00e7in resmi kurulum script&#8217;ini indirebilir ve \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu script, RVM&#8217;yi kullan\u0131c\u0131 dizininize (genellikle <code>~\/.rvm<\/code>) kurar.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">\\curl -sSL https:\/\/get.rvm.io | bash -s stable<\/code><\/pre>\n<p>*   <code>\\curl<\/code>: Sistemde <code>curl<\/code> i\u00e7in bir alias tan\u0131mlanm\u0131\u015f olsa bile, do\u011frudan <code>curl<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>-sSL<\/code>: <code>curl<\/code> i\u00e7in parametrelerdir:<br \/>\n    *   <code>-s<\/code> (silent): Sessiz modu etkinle\u015ftirir, ilerleme \u00e7ubu\u011funu veya hata mesajlar\u0131n\u0131 g\u00f6stermez.<br \/>\n    *   <code>-S<\/code> (show-error): Sessiz modda bile hatalar\u0131 g\u00f6sterir.<br \/>\n    *   <code>-L<\/code> (location): E\u011fer hedef URL bir y\u00f6nlendirme i\u00e7eriyorsa, <code>curl<\/code> y\u00f6nlendirmeyi takip eder.<br \/>\n*   <code>https:\/\/get.rvm.io<\/code>: RVM kurulum script&#8217;inin indirildi\u011fi URL&#8217;dir.<br \/>\n*   <code>|<\/code>: Pipe operat\u00f6r\u00fc. <code>curl<\/code> komutunun \u00e7\u0131kt\u0131s\u0131n\u0131 (yani kurulum script&#8217;inin i\u00e7eri\u011fini) <code>bash<\/code> komutuna girdi olarak y\u00f6nlendirir.<br \/>\n*   <code>bash -s stable<\/code>: <code>bash<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131r ve <code>stable<\/code> parametresini RVM&#8217;ye iletir, bu da RVM&#8217;nin kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc y\u00fcklemesini sa\u011flar.<\/p>\n<p>Bu komutun tamamlanmas\u0131 biraz zaman alabilir, \u00e7\u00fcnk\u00fc RVM dosyalar\u0131n\u0131 indirir ve sisteminizde gerekli yap\u0131land\u0131rmalar\u0131 yapar.<\/p>\n<h4>RVM&#8217;yi Shell Ortam\u0131na Y\u00fckleme<\/h4>\n<p>RVM kurulumu tamamland\u0131ktan sonra, RVM komutlar\u0131n\u0131n terminalinizde kullan\u0131labilir olmas\u0131 i\u00e7in RVM&#8217;yi mevcut shell oturumunuza y\u00fcklemeniz gerekir. RVM, genellikle <code>.bashrc<\/code> veya <code>.profile<\/code> gibi kabuk yap\u0131land\u0131rma dosyalar\u0131n\u0131za otomatik olarak bir sat\u0131r ekler, ancak bu de\u011fi\u015fikli\u011fin mevcut oturumda ge\u00e7erli olmas\u0131 i\u00e7in manuel olarak kaynak g\u00f6stermeniz gerekebilir.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">source ~\/.rvm\/scripts\/rvm<\/code><\/pre>\n<p>*   <code>source<\/code>: Belirtilen script dosyas\u0131n\u0131 mevcut shell oturumunda \u00e7al\u0131\u015ft\u0131r\u0131r. Bu, script&#8217;in tan\u0131mlad\u0131\u011f\u0131 fonksiyonlar\u0131n ve ortam de\u011fi\u015fkenlerinin ge\u00e7erli oturumda kullan\u0131labilir olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>~\/.rvm\/scripts\/rvm<\/code>: RVM&#8217;nin ana script dosyas\u0131d\u0131r.<\/p>\n<p>Bu komutu her yeni terminal oturumu ba\u015flatt\u0131\u011f\u0131n\u0131zda \u00e7al\u0131\u015ft\u0131rmamak i\u00e7in, RVM kurulum script&#8217;i genellikle bunu otomatik olarak <code>~\/.bashrc<\/code> veya <code>~\/.profile<\/code> dosyan\u0131za ekler. Do\u011frulama i\u00e7in bu dosyalar\u0131 kontrol edebilirsiniz. E\u011fer eklenmemi\u015fse, yukar\u0131daki <code>source<\/code> komutunu bu dosyalardan birinin sonuna ekleyerek kal\u0131c\u0131 hale getirebilirsiniz. De\u011fi\u015fiklikleri kaydettikten sonra, yeni bir terminal oturumu a\u00e7man\u0131z veya <code>source ~\/.bashrc<\/code> komutunu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir.<\/p>\n<h4>RVM Kurulumunu Do\u011frulama<\/h4>\n<p>RVM&#8217;nin ba\u015far\u0131l\u0131 bir \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 ve shell ortam\u0131n\u0131za do\u011fru bir \u015fekilde y\u00fcklendi\u011fini do\u011frulamak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">rvm -v<\/code><\/pre>\n<p>Bu komut, y\u00fckl\u00fc RVM s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir (\u00f6rne\u011fin, <code>rvm 1.29.12 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https:\/\/rvm.io]<\/code>). E\u011fer b\u00f6yle bir \u00e7\u0131kt\u0131 al\u0131rsan\u0131z, RVM ba\u015far\u0131yla kurulmu\u015ftur. E\u011fer &#8220;command not found&#8221; (komut bulunamad\u0131) hatas\u0131 al\u0131rsan\u0131z, \u00f6nceki ad\u0131mlar\u0131 (\u00f6zellikle <code>source<\/code> komutunu) dikkatlice kontrol edin.<\/p>\n<h3>Ruby 2.1.0 Kurulumu (RVM ile)<\/h3>\n<p>RVM ba\u015far\u0131yla kurulduktan sonra, \u015fimdi as\u0131l amac\u0131m\u0131z olan Ruby 2.1.0 s\u00fcr\u00fcm\u00fcn\u00fc y\u00fckleyebiliriz. RVM, farkl\u0131 Ruby s\u00fcr\u00fcmlerini izole bir \u015fekilde y\u00f6netme yetene\u011fi sayesinde bu i\u015flemi olduk\u00e7a basitle\u015ftirir.<\/p>\n<h4>Ruby Ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n Kurulumu<\/h4>\n<p>Ruby&#8217;nin kaynak koddan ba\u015far\u0131yla derlenebilmesi i\u00e7in baz\u0131 ek sistem k\u00fct\u00fcphanelerine ihtiyac\u0131 vard\u0131r. RVM, bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 otomatik olarak tespit edip y\u00fcklemek i\u00e7in kullan\u0131\u015fl\u0131 bir komut sa\u011flar.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">rvm requirements install<\/code><\/pre>\n<p>Bu komut, sisteminizdeki eksik Ruby derleme ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (\u00f6rne\u011fin, OpenSSL, Zlib, Readline, LibYAML, Autoconf vb.) kontrol eder ve bunlar\u0131 <code>apt-get<\/code> kullanarak y\u00fcklemeye \u00e7al\u0131\u015f\u0131r. Bu ad\u0131m, \u00f6zellikle Ubuntu 13 gibi daha eski bir sistemde, Ruby&#8217;nin sorunsuz bir \u015fekilde derlenmesi i\u00e7in kritik \u00f6neme sahiptir. Komutun \u00e7al\u0131\u015fmas\u0131 biraz zaman alabilir ve y\u00f6netici \u015fifrenizi girmeniz gerekebilir.<\/p>\n<h4>Ruby 2.1.0 S\u00fcr\u00fcm\u00fcn\u00fc Kurma<\/h4>\n<p>\u015eimdi, RVM kullanarak Ruby 2.1.0&#8217;\u0131 y\u00fckleyebiliriz. RVM, belirtilen Ruby s\u00fcr\u00fcm\u00fcn\u00fc indirir, derler ve kullan\u0131c\u0131 dizininizdeki kendi izole konumuna kurar.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">rvm install ruby-2.1.0<\/code><\/pre>\n<p>*   <code>rvm install<\/code>: RVM&#8217;ye belirtilen Ruby s\u00fcr\u00fcm\u00fcn\u00fc y\u00fcklemesini s\u00f6yler.<br \/>\n*   <code>ruby-2.1.0<\/code>: Y\u00fcklenecek Ruby s\u00fcr\u00fcm\u00fcn\u00fc belirtir.<\/p>\n<p>Bu i\u015flem olduk\u00e7a zaman alabilir (10-30 dakika veya daha fazla), \u00e7\u00fcnk\u00fc Ruby&#8217;nin kaynak kodunun indirilmesi, derlenmesi ve kurulmas\u0131 gerekir. Terminalde derleme s\u00fcrecinin ilerlemesini g\u00f6receksiniz. Sab\u0131rla bekleyin.<\/p>\n<h4>Ruby 2.1.0&#8217;\u0131 Varsay\u0131lan Olarak Ayarlama<\/h4>\n<p>Ruby 2.1.0 ba\u015far\u0131yla y\u00fcklendikten sonra, onu mevcut shell oturumunuz i\u00e7in kullanmaya ba\u015flayabilir ve ayn\u0131 zamanda RVM&#8217;ye bu s\u00fcr\u00fcm\u00fc gelecekteki t\u00fcm yeni shell oturumlar\u0131 i\u00e7in varsay\u0131lan olarak ayarlamas\u0131n\u0131 s\u00f6yleyebilirsiniz.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">rvm use ruby-2.1.0 --default<\/code><\/pre>\n<p>*   <code>rvm use ruby-2.1.0<\/code>: Mevcut shell oturumunuz i\u00e7in Ruby 2.1.0&#8217;\u0131 aktif hale getirir.<br \/>\n*   <code>--default<\/code>: Bu bayrak, RVM&#8217;nin bu Ruby s\u00fcr\u00fcm\u00fcn\u00fc gelecekte a\u00e7\u0131lacak t\u00fcm yeni terminal oturumlar\u0131 i\u00e7in varsay\u0131lan olarak ayarlamas\u0131n\u0131 sa\u011flar. Bu sayede, her yeni oturumda <code>rvm use<\/code> komutunu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekmez.<\/p>\n<h4>Ruby Kurulumunu Do\u011frulama<\/h4>\n<p>Ruby 2.1.0&#8217;\u0131n ba\u015far\u0131yla kuruldu\u011funu ve do\u011fru s\u00fcr\u00fcm\u00fcn aktif oldu\u011funu do\u011frulamak i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">ruby -v\ngem env<\/code><\/pre>\n<p>*   <code>ruby -v<\/code>: Bu komut, aktif Ruby s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir. \u00c7\u0131kt\u0131 <code>ruby 2.1.0p0 (2013-12-25 revision 44468) [x86_64-linux]<\/code> veya benzeri bir \u015fey olmal\u0131d\u0131r.<br \/>\n*   <code>gem env<\/code>: Bu komut, RubyGems ortam de\u011fi\u015fkenleri hakk\u0131nda ayr\u0131nt\u0131l\u0131 bilgi sa\u011flar. \u00d6zellikle <code>RUBY VERSION<\/code> ve <code>INSTALLATION DIRECTORY<\/code> gibi alanlar\u0131 kontrol ederek Ruby&#8217;nin RVM taraf\u0131ndan y\u00f6netilen do\u011fru konuma kuruldu\u011fundan emin olabilirsiniz (\u00f6rne\u011fin, <code>~\/.rvm\/rubies\/ruby-2.1.0<\/code>).<\/p>\n<p>Bu ad\u0131mlarla Ruby 2.1.0, Ubuntu 13 sisteminize RVM arac\u0131l\u0131\u011f\u0131yla ba\u015far\u0131l\u0131 bir \u015fekilde kurulmu\u015f ve yap\u0131land\u0131r\u0131lm\u0131\u015f olmal\u0131d\u0131r.<\/p>\n<h3>Sinatra Kurulumu ve Basit Bir Uygulama<\/h3>\n<p>Ruby 2.1.0 ba\u015far\u0131yla kurulduktan sonra, \u015fimdi hafif ve esnek bir web \u00e7er\u00e7evesi olan Sinatra&#8217;y\u0131 kurabilir ve basit bir web uygulamas\u0131 olu\u015fturabiliriz. Sinatra, daha k\u00fc\u00e7\u00fck projeler veya API&#8217;ler i\u00e7in idealdir ve Ruby&#8217;nin web geli\u015ftirme yeteneklerini ke\u015ffetmek i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h4>Bundler&#8217;\u0131 Anlamak ve Kurmak<\/h4>\n<p>Ruby projelerinde ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netmek i\u00e7in Bundler ad\u0131nda bir ara\u00e7 kullan\u0131l\u0131r. Bundler, projenizin ihtiya\u00e7 duydu\u011fu t\u00fcm gem&#8217;leri (Ruby k\u00fct\u00fcphaneleri) izler ve do\u011fru s\u00fcr\u00fcmlerinin y\u00fckl\u00fc oldu\u011fundan emin olur. Bu, farkl\u0131 projelerin farkl\u0131 gem versiyonlar\u0131na ihtiya\u00e7 duymas\u0131 durumunda \u00e7ak\u0131\u015fmalar\u0131 \u00f6nler.<\/p>\n<p>\u00d6ncelikle, Bundler&#8217;\u0131 gem olarak y\u00fcklememiz gerekiyor:<\/p>\n<pre><code class=\"language-bash\">gem install bundler<\/code><\/pre>\n<p>Bu komut, Bundler gem&#8217;ini aktif Ruby s\u00fcr\u00fcm\u00fcn\u00fcz (yani Ruby 2.1.0) i\u00e7in y\u00fckleyecektir.<\/p>\n<h4>Proje Dizini Olu\u015fturma<\/h4>\n<p>Sinatra uygulamam\u0131z i\u00e7in bir proje dizini olu\u015ftural\u0131m. Bu, uygulaman\u0131n dosyalar\u0131n\u0131 d\u00fczenli tutmam\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">mkdir my_sinatra_app\ncd my_sinatra_app<\/code><\/pre>\n<p>*   <code>mkdir my_sinatra_app<\/code>: <code>my_sinatra_app<\/code> ad\u0131nda yeni bir dizin olu\u015fturur.<br \/>\n*   <code>cd my_sinatra_app<\/code>: Olu\u015fturulan dizine ge\u00e7er.<\/p>\n<h4>Gemfile Olu\u015fturma<\/h4>\n<p>\u015eimdi, projemizin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 tan\u0131mlayan bir <code>Gemfile<\/code> olu\u015fturaca\u011f\u0131z. Bu dosya, Bundler&#8217;\u0131n hangi gem&#8217;leri y\u00fcklemesi gerekti\u011fini bilmesini sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">touch Gemfile<\/code><\/pre>\n<p>Ard\u0131ndan, favori metin d\u00fczenleyicinizle (\u00f6rne\u011fin, <code>nano<\/code>, <code>vim<\/code> veya <code>gedit<\/code>) <code>Gemfile<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code class=\"language-ruby\">source 'https:\/\/rubygems.org'\n\ngem 'sinatra'\ngem 'thin' # Sinatra uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in hafif bir web sunucusu<\/code><\/pre>\n<p>*   <code>source 'https:\/\/rubygems.org'<\/code>: Gem&#8217;lerin hangi kaynaktan indirilece\u011fini belirtir. RubyGems.org, Ruby gem&#8217;leri i\u00e7in resmi depodur.<br \/>\n*   <code>gem 'sinatra'<\/code>: Projemizin Sinatra gem&#8217;ine ba\u011f\u0131ml\u0131 oldu\u011funu belirtir.<br \/>\n*   <code>gem 'thin'<\/code>: Sinatra uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in \u00f6nerilen hafif ve h\u0131zl\u0131 bir web sunucusu olan Thin&#8217;i de ekliyoruz. Bu, geli\u015ftirme ortam\u0131nda uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h4>Gem&#8217;leri Bundler ile Y\u00fckleme<\/h4>\n<p><code>Gemfile<\/code>&#8216;\u0131 tan\u0131mlad\u0131ktan sonra, Bundler&#8217;\u0131 kullanarak belirtilen gem&#8217;leri y\u00fckleyebiliriz.<\/p>\n<pre><code class=\"language-bash\">bundle install<\/code><\/pre>\n<p>*   <code>bundle install<\/code>: Bundler&#8217;\u0131 \u00e7a\u011f\u0131r\u0131r ve <code>Gemfile<\/code>&#8216;da listelenen t\u00fcm gem&#8217;leri (ve onlar\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131) indirip kurar. Bu i\u015flem, Ruby 2.1.0&#8217;\u0131n gem dizinine y\u00fcklenir.<br \/>\n*   Bu komut ayr\u0131ca, y\u00fckl\u00fc gem&#8217;lerin tam versiyonlar\u0131n\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kilitleyen bir <code>Gemfile.lock<\/code> dosyas\u0131 olu\u015fturur. Bu dosya, projenin farkl\u0131 geli\u015ftiriciler aras\u0131nda veya farkl\u0131 ortamlarda tutarl\u0131 ba\u011f\u0131ml\u0131l\u0131k setleriyle \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Bu komutun tamamlanmas\u0131 da biraz zaman alabilir, \u00e7\u00fcnk\u00fc Sinatra ve Thin&#8217;in yan\u0131 s\u0131ra onlar\u0131n t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 da indirilir ve derlenir.<\/p>\n<h4>Basit Bir Sinatra Uygulamas\u0131 Olu\u015fturma<\/h4>\n<p>\u015eimdi, <code>my_sinatra_app<\/code> dizininde basit bir Sinatra uygulamas\u0131 olu\u015ftural\u0131m. Bu uygulama, web taray\u0131c\u0131s\u0131ndan gelen isteklere yan\u0131t verecektir.<\/p>\n<p><code>app.rb<\/code> ad\u0131nda yeni bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-bash\">touch app.rb<\/code><\/pre>\n<p>Ard\u0131ndan, <code>app.rb<\/code> dosyas\u0131n\u0131 metin d\u00fczenleyicinizle a\u00e7\u0131n ve a\u015fa\u011f\u0131daki kodu ekleyin:<\/p>\n<pre><code class=\"language-ruby\">require 'sinatra'\n\n<h2>Ana sayfa i\u00e7in bir GET iste\u011fi tan\u0131mlar<\/h2>\nget '\/' do\n  \"Merhaba, D\u00fcnya! Ruby 2.1.0 ve Sinatra ile Ubuntu 13 \u00fczerinde!\"\nend\n\n<h2>Dinamik bir URL segmenti ile GET iste\u011fi tan\u0131mlar<\/h2>\nget '\/merhaba\/:ad' do\n  \"Merhaba, #{params['ad']}! Nas\u0131ls\u0131n?\"\nend\n\n<h2>Uygulaman\u0131n \u00e7al\u0131\u015faca\u011f\u0131 varsay\u0131lan portu belirt (iste\u011fe ba\u011fl\u0131, Thin sunucusu i\u00e7in)<\/h2>\n<h2>set :port, 4567 # Varsay\u0131lan olarak 4567 portunu kullan\u0131r<\/code><\/pre>\n<\/h2>\n<p>*   <code>require 'sinatra'<\/code>: Sinatra k\u00fct\u00fcphanesini uygulamaya dahil eder.<br \/>\n*   <code>get '\/' do ... end<\/code>: K\u00f6k URL&#8217;ye (<code>\/<\/code>) yap\u0131lan bir HTTP GET iste\u011fine nas\u0131l yan\u0131t verilece\u011fini tan\u0131mlar. Bu durumda, basit bir metin dizesi d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>get '\/merhaba\/:ad' do ... end<\/code>: <code>\/merhaba\/<\/code> ile ba\u015flayan ve ard\u0131ndan dinamik bir segment (<code>:ad<\/code>) i\u00e7eren bir URL&#8217;ye yap\u0131lan GET iste\u011fine yan\u0131t verir. <code>params['ad']<\/code> ile bu dinamik de\u011feri alabilir ve yan\u0131t i\u00e7inde kullanabiliriz.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n.<\/p>\n<h4>Sinatra Uygulamas\u0131n\u0131 \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>Uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in, <code>my_sinatra_app<\/code> dizininde oldu\u011funuzdan emin olun ve a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">bundle exec ruby app.rb<\/code><\/pre>\n<p>*   <code>bundle exec<\/code>: Bu komut, Bundler&#8217;\u0131n projenin <code>Gemfile.lock<\/code> dosyas\u0131nda belirtilen gem versiyonlar\u0131n\u0131 kullanarak <code>ruby app.rb<\/code> komutunu \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar. Bu, uygulaman\u0131n do\u011fru ba\u011f\u0131ml\u0131l\u0131klarla \u00e7al\u0131\u015fmas\u0131n\u0131 garanti eder.<br \/>\n*   <code>ruby app.rb<\/code>: Ruby yorumlay\u0131c\u0131s\u0131n\u0131 kullanarak <code>app.rb<\/code> dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<p>Uygulama ba\u015far\u0131yla ba\u015flat\u0131ld\u0131\u011f\u0131nda, terminalde a\u015fa\u011f\u0131dakine benzer bir \u00e7\u0131kt\u0131 g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-\">[2024-01-01 12:00:00] INFO  WEBrick::HTTPServer#start: pid=1234 port=4567\n== Sinatra (v2.1.0) has taken the stage on 4567 for development with backup from Thin<\/code><\/pre>\n<p>(Not: Sinatra&#8217;n\u0131n varsay\u0131lan olarak kulland\u0131\u011f\u0131 sunucu WEBrick veya Thin olabilir, y\u00fckledi\u011finiz gem&#8217;lere ve Sinatra versiyonuna ba\u011fl\u0131d\u0131r.)<\/p>\n<p>Bu \u00e7\u0131kt\u0131, Sinatra uygulaman\u0131z\u0131n varsay\u0131lan olarak 4567 portunda \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h4>Uygulamay\u0131 Test Etme<\/h4>\n<p>Uygulaman\u0131z \u00e7al\u0131\u015f\u0131rken, web taray\u0131c\u0131n\u0131zdan veya <code>curl<\/code> komutunu kullanarak test edebilirsiniz.<\/p>\n<p>1.  <strong>Web Taray\u0131c\u0131n\u0131zdan:<\/strong><br \/>\n    *   Taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve adres \u00e7ubu\u011funa <code>http:\/\/localhost:4567\/<\/code> yaz\u0131n. &#8220;Merhaba, D\u00fcnya! Ruby 2.1.0 ve Sinatra ile Ubuntu 13 \u00fczerinde!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<br \/>\n    *   Ard\u0131ndan, <code>http:\/\/localhost:4567\/merhaba\/kullanici<\/code> adresini ziyaret edin. &#8220;Merhaba, kullanici! Nas\u0131ls\u0131n?&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>2.  <strong>Terminalden <code>curl<\/code> ile:<\/strong><br \/>\n    *   Yeni bir terminal penceresi a\u00e7\u0131n (uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 terminali kapatmay\u0131n).<br \/>\n    *   A\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">curl http:\/\/localhost:4567\/\n    curl http:\/\/localhost:4567\/merhaba\/ali<\/code><\/pre>\n<p>    \u0130lk komut &#8220;Merhaba, D\u00fcnya! Ruby 2.1.0 ve Sinatra ile Ubuntu 13 \u00fczerinde!&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131, ikinci komut ise &#8220;Merhaba, ali! Nas\u0131ls\u0131n?&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 vermelidir.<\/p>\n<p>Uygulamay\u0131 durdurmak i\u00e7in, uygulaman\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 terminale d\u00f6n\u00fcn ve <code>Ctrl+C<\/code> tu\u015f kombinasyonuna bas\u0131n.<\/p>\n<h3>Sorun Giderme (Troubleshooting)<\/h3>\n<p>Kurulum s\u00fcrecinde veya uygulama \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken baz\u0131 yayg\u0131n sorunlarla kar\u015f\u0131la\u015fabilirsiniz. \u0130\u015fte bu sorunlardan baz\u0131lar\u0131 ve olas\u0131 \u00e7\u00f6z\u00fcmleri:<\/p>\n<h4>1. GPG Anahtar\u0131 \u0130\u00e7e Aktarma Sorunlar\u0131<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>gpg --keyserver<\/code> komutu bir hata veriyor veya anahtar\u0131 alam\u0131yor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   \u0130nternet ba\u011flant\u0131n\u0131z\u0131 kontrol edin.<br \/>\n    *   Farkl\u0131 bir anahtar sunucusu deneyin: <code>gpg --keyserver hkp:\/\/pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3<\/code><br \/>\n    *   G\u00fcvenlik duvar\u0131 veya proxy ayarlar\u0131n\u0131z\u0131n GPG ileti\u015fimini engellemedi\u011finden emin olun.<\/p>\n<h4>2. RVM &#8220;command not found&#8221; Hatas\u0131<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>rvm -v<\/code> veya di\u011fer <code>rvm<\/code> komutlar\u0131 \u00e7al\u0131\u015fm\u0131yor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <code>source ~\/.rvm\/scripts\/rvm<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n    *   Bu komutu <code>~\/.bashrc<\/code> veya <code>~\/.profile<\/code> dosyan\u0131za eklediyseniz, yeni bir terminal oturumu a\u00e7\u0131n veya <code>source ~\/.bashrc<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<br \/>\n    *   RVM kurulum script&#8217;inin ba\u015far\u0131l\u0131 bir \u015fekilde tamamland\u0131\u011f\u0131n\u0131 kontrol edin.<\/p>\n<h4>3. Ruby Derleme Hatalar\u0131 (<code>rvm install ruby-2.1.0<\/code>)<\/h4>\n<p>*   <strong>Sorun:<\/strong> Ruby&#8217;yi y\u00fcklerken derleme hatalar\u0131 al\u0131yorsunuz (\u00f6rne\u011fin, &#8220;missing header files&#8221;, &#8220;cannot find -lcrypto&#8221;, &#8220;OpenSSL missing&#8221;).<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <code>rvm requirements install<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan ve t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n y\u00fcklendi\u011finden emin olun. Bu komut eksik olanlar\u0131 y\u00fcklemeye \u00e7al\u0131\u015facakt\u0131r.<br \/>\n    *   Gerekirse <code>sudo apt-get install<\/code> ile eksik olabilecek ek geli\u015ftirme k\u00fct\u00fcphanelerini (\u00f6rne\u011fin <code>libyaml-dev<\/code>, <code>libffi-dev<\/code>) manuel olarak y\u00fckleyin.<br \/>\n    *   Derleme loglar\u0131n\u0131 dikkatlice inceleyin (genellikle terminalde g\u00f6sterilir) ve hangi k\u00fct\u00fcphanenin eksik oldu\u011funu veya hangi hatan\u0131n olu\u015ftu\u011funu anlamaya \u00e7al\u0131\u015f\u0131n.<br \/>\n    *   Ubuntu 13&#8217;\u00fcn eski bir s\u00fcr\u00fcm olmas\u0131 nedeniyle, baz\u0131 k\u00fct\u00fcphanelerin g\u00fcncel versiyonlar\u0131 RVM&#8217;nin beklentileriyle \u00e7ak\u0131\u015fabilir. Bu durumda, daha spesifik paket versiyonlar\u0131n\u0131 araman\u0131z gerekebilir.<\/p>\n<h4>4. <code>bundle install<\/code> Sorunlar\u0131<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>bundle install<\/code> \u00e7al\u0131\u015f\u0131rken hatalar al\u0131yorsunuz (\u00f6rne\u011fin, &#8220;Could not find gem &#8216;sinatra&#8217; in any of the sources&#8221;, &#8220;SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B&#8221;).<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   \u0130nternet ba\u011flant\u0131n\u0131z\u0131 kontrol edin.<br \/>\n    *   <code>Gemfile<\/code>&#8216;\u0131n\u0131zdaki <code>source 'https:\/\/rubygems.org'<\/code> sat\u0131r\u0131n\u0131n do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   SSL sertifika sorunlar\u0131 i\u00e7in, sisteminizin sertifika paketlerinin g\u00fcncel oldu\u011fundan emin olun: <code>sudo apt-get install ca-certificates<\/code>.<br \/>\n    *   Bazen, <code>bundle config --global mirror.https:\/\/rubygems.org https:\/\/rubygems.org<\/code> komutu yard\u0131mc\u0131 olabilir (ancak bu genellikle daha yeni Ruby s\u00fcr\u00fcmlerinde ortaya \u00e7\u0131kan bir sorundur).<\/p>\n<h4>5. Sinatra Uygulamas\u0131 Ba\u015flam\u0131yor veya Hata Veriyor<\/h4>\n<p>*   <strong>Sorun:<\/strong> <code>bundle exec ruby app.rb<\/code> komutu hata veriyor veya uygulama ba\u015flam\u0131yor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <code>app.rb<\/code> dosyan\u0131zdaki Ruby kodunun s\u00f6zdizimi hatalar\u0131 i\u00e7erip i\u00e7ermedi\u011fini kontrol edin.<br \/>\n    *   Terminaldeki hata mesajlar\u0131n\u0131 dikkatlice okuyun. Genellikle hangi sat\u0131rda ve ne t\u00fcr bir hata oldu\u011funu belirtir.<br \/>\n    *   Uygulaman\u0131n \u00e7al\u0131\u015fmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131 portun (varsay\u0131lan 4567) ba\u015fka bir uygulama taraf\u0131ndan kullan\u0131lmad\u0131\u011f\u0131ndan emin olun. Gerekirse <code>set :port, 5000<\/code> gibi bir sat\u0131r ekleyerek farkl\u0131 bir port deneyebilirsiniz.<br \/>\n    *   <code>Gemfile<\/code>&#8216;daki <code>sinatra<\/code> ve <code>thin<\/code> gem&#8217;lerinin y\u00fckl\u00fc oldu\u011fundan emin olun (<code>bundle install<\/code> komutunun ba\u015far\u0131l\u0131 oldu\u011funu kontrol edin).<\/p>\n<h4>6. Ubuntu 13&#8217;e \u00d6zel Notlar<\/h4>\n<p>*   Ubuntu 13, art\u0131k resmi olarak desteklenmeyen eski bir i\u015fletim sistemidir. Bu, baz\u0131 paketlerin depolar\u0131nda bulunmayabilece\u011fi veya g\u00fcncel s\u00fcr\u00fcmlerinin olmayabilece\u011fi anlam\u0131na gelir. Nadir durumlarda, eski paketleri manuel olarak indirip kurman\u0131z gerekebilir.<br \/>\n*   Sistem g\u00fcvenli\u011fi a\u00e7\u0131s\u0131ndan, desteklenmeyen bir i\u015fletim sistemi kullanmak risklidir. E\u011fer m\u00fcmk\u00fcnse, daha g\u00fcncel bir Ubuntu s\u00fcr\u00fcm\u00fcne y\u00fckseltmeyi d\u00fc\u015f\u00fcnebilirsiniz. Ancak bu makalenin kapsam\u0131 d\u0131\u015f\u0131ndad\u0131r ve mevcut gereksinimlerinize ba\u011fl\u0131d\u0131r.<\/p>\n<p>Bu sorun giderme ipu\u00e7lar\u0131, kar\u015f\u0131la\u015fabilece\u011finiz yayg\u0131n engelleri a\u015fman\u0131za yard\u0131mc\u0131 olmal\u0131d\u0131r. Her zaman terminaldeki hata mesajlar\u0131n\u0131 dikkatlice okumak ve Google&#8217;da aramak, \u00e7\u00f6z\u00fcme ula\u015fman\u0131n en h\u0131zl\u0131 yoludur.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, Ruby 2.1.0&#8217;\u0131 ve Sinatra&#8217;y\u0131 Ubuntu 13 i\u015fletim sistemi \u00fczerine RVM (Ruby Version Manager) kullanarak nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. RVM&#8217;nin sa\u011flad\u0131\u011f\u0131 esneklik sayesinde, sisteminizde farkl\u0131 Ruby versiyonlar\u0131n\u0131 izole bir \u015fekilde y\u00f6netebilir, b\u00f6ylece farkl\u0131 projeler i\u00e7in farkl\u0131 ba\u011f\u0131ml\u0131l\u0131k setlerini sorunsuzca kullanabilirsiniz.<\/p>\n<p>Kurulum s\u00fcrecinde, \u00f6ncelikle sisteminizi g\u00fcncelledik ve gerekli temel geli\u015ftirme paketlerini y\u00fckledik. Ard\u0131ndan, RVM&#8217;yi kurduk ve onu shell ortam\u0131m\u0131za entegre ettik. RVM&#8217;nin ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisini kullanarak Ruby 2.1.0&#8217;\u0131 ba\u015far\u0131yla derledik ve varsay\u0131lan Ruby versiyonu olarak ayarlad\u0131k. Son olarak, Bundler&#8217;\u0131 kullanarak Sinatra ve Thin gem&#8217;lerini kurduk ve basit bir &#8220;Merhaba, D\u00fcnya!&#8221; uygulamas\u0131 olu\u015fturup \u00e7al\u0131\u015ft\u0131rd\u0131k.<\/p>\n<p>Bu kurulum, Ruby geli\u015ftirme yolculu\u011funuz i\u00e7in sa\u011flam bir temel olu\u015fturur. Sinatra gibi hafif bir \u00e7er\u00e7eve ile web uygulamalar\u0131 geli\u015ftirmeye ba\u015flayabilir veya RVM&#8217;nin sundu\u011fu yetenekleri kullanarak daha karma\u015f\u0131k Ruby projelerine ad\u0131m atabilirsiniz. Unutmay\u0131n, RVM&#8217;nin g\u00fcc\u00fc, farkl\u0131 Ruby s\u00fcr\u00fcmleri ve gemset&#8217;leri aras\u0131nda kolayca ge\u00e7i\u015f yapabilme yetene\u011fidir, bu da onu her Ruby geli\u015ftiricisinin ara\u00e7 setinde vazge\u00e7ilmez k\u0131lar.<\/p>\n<p>Bu rehberin, belirli bir ortam ve versiyon kombinasyonuyla \u00e7al\u0131\u015fanlar i\u00e7in de\u011ferli bir kaynak olmas\u0131n\u0131 umuyoruz. Ruby ve Sinatra d\u00fcnyas\u0131na ho\u015f geldiniz!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ruby 2.1.0 ve Sinatra&#8217;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi\nGiri\u015f\nYaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, \u00f6zellikle web uygulamal","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-39077","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ruby 2.1.0 ve Sinatra&#039;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ruby 2.1.0 ve Sinatra&#039;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi\" \/>\n<meta property=\"og:description\" content=\"Ruby 2.1.0 ve Sinatra&#039;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi Giri\u015f Yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, \u00f6zellikle web uygulamal\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-13T18:40:54+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ruby 2.1.0 ve Sinatra&#8217;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi\",\"datePublished\":\"2026-02-13T18:40:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/\"},\"wordCount\":3476,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/\",\"name\":\"Ruby 2.1.0 ve Sinatra'n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-13T18:40:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ruby 2.1.0 ve Sinatra&#8217;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ruby 2.1.0 ve Sinatra'n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Ruby 2.1.0 ve Sinatra'n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi","og_description":"Ruby 2.1.0 ve Sinatra'n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi Giri\u015f Yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, \u00f6zellikle web uygulamal","og_url":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-13T18:40:54+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ruby 2.1.0 ve Sinatra&#8217;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi","datePublished":"2026-02-13T18:40:54+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/"},"wordCount":3476,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/","name":"Ruby 2.1.0 ve Sinatra'n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-13T18:40:54+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ruby-2-1-0-ve-sinatranin-ubuntu-13-uzerine-rvm-ile-kurulumu-kapsamli-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ruby 2.1.0 ve Sinatra&#8217;n\u0131n Ubuntu 13 \u00dczerine RVM ile Kurulumu Kapsaml\u0131 Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39077"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39077\/revisions"}],"predecessor-version":[{"id":39078,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39077\/revisions\/39078"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}