{"id":32765,"date":"2025-10-25T18:41:06","date_gmt":"2025-10-25T15:41:06","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32765"},"modified":"2025-10-25T18:41:06","modified_gmt":"2025-10-25T15:41:06","slug":"ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/","title":{"rendered":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu<\/h2>\n<p>Bu makale, Ruby on Rails 5 \u00e7at\u0131s\u0131n\u0131n g\u00fc\u00e7l\u00fc arka y\u00fcz yeteneklerini React&#8217;in dinamik ve modern \u00f6n y\u00fcz geli\u015ftirme kabiliyetleriyle birle\u015ftirerek Ubuntu 18.04 i\u015fletim sistemi \u00fczerinde nas\u0131l bir uygulama olu\u015fturulaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r. Rails ve React&#8217;in birle\u015fimi, geli\u015ftiricilere hem h\u0131zl\u0131 API geli\u015ftirme imkan\u0131 sunan sa\u011flam bir arka u\u00e7 hem de zengin, etkile\u015fimli kullan\u0131c\u0131 deneyimleri sa\u011flayan bir \u00f6n u\u00e7 olu\u015fturma esnekli\u011fi tan\u0131r.<\/p>\n<h3>Giri\u015f: Rails, React ve Entegrasyonun \u00d6nemi<\/h3>\n<p>Ruby on Rails, &#8220;Convention over Configuration&#8221; (Yap\u0131land\u0131rma Yerine Kural) felsefesiyle bilinen, web uygulamalar\u0131n\u0131 h\u0131zl\u0131 bir \u015fekilde geli\u015ftirmek i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynakl\u0131 bir web uygulama \u00e7at\u0131s\u0131d\u0131r. Geli\u015ftiricilerin tekrarlayan g\u00f6revler yerine i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131yan bir dizi ara\u00e7, k\u00fct\u00fcphane ve yap\u0131sal desen sunar. Rails 5 s\u00fcr\u00fcm\u00fcyle birlikte Action Cable (ger\u00e7ek zamanl\u0131 ileti\u015fim), API modu ve Webpacker gibi modern \u00f6zellikler entegre edilmi\u015ftir, bu da onu modern web geli\u015ftirme ihtiya\u00e7lar\u0131 i\u00e7in daha da g\u00fc\u00e7l\u00fc k\u0131lmaktad\u0131r.<\/p>\n<p>React ise Facebook taraf\u0131ndan geli\u015ftirilen, kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kullan\u0131lan bir JavaScript k\u00fct\u00fcphanesidir. Bile\u015fen tabanl\u0131 yap\u0131s\u0131, sanal DOM (Document Object Model) kullan\u0131m\u0131 ve tek y\u00f6nl\u00fc veri ak\u0131\u015f\u0131 sayesinde y\u00fcksek performansl\u0131, \u00f6l\u00e7eklenebilir ve bak\u0131m\u0131 kolay \u00f6n y\u00fcz uygulamalar\u0131 geli\u015ftirmeye olanak tan\u0131r. \u00d6zellikle tek sayfal\u0131k uygulamalar (Single Page Applications &#8211; SPA) ve karma\u015f\u0131k kullan\u0131c\u0131 aray\u00fczleri i\u00e7in tercih edilen bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p>Rails&#8217;i bir arka u\u00e7 API&#8217;si olarak kullan\u0131p React&#8217;i ayr\u0131 bir \u00f6n u\u00e7 olarak konumland\u0131rmak, uygulaman\u0131n farkl\u0131 katmanlar\u0131n\u0131n ba\u011f\u0131ms\u0131z olarak geli\u015ftirilmesine ve \u00f6l\u00e7eklenmesine olanak tan\u0131r. Bu ayr\u0131m, geli\u015ftirme ekiplerinin farkl\u0131 alanlara odaklanmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r, kod taban\u0131n\u0131 daha d\u00fczenli hale getirir ve gelecekteki de\u011fi\u015fiklikler i\u00e7in daha fazla esneklik sunar. Rails 5.1 ile tan\u0131t\u0131lan Webpacker gem&#8217;i, Rails projelerine modern JavaScript ara\u00e7 zincirini (\u00f6zellikle Webpack) sorunsuz bir \u015fekilde entegre etmeyi m\u00fcmk\u00fcn k\u0131larak bu entegrasyonu b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirmi\u015ftir.<\/p>\n<p>Bu makalede, Ubuntu 18.04 \u00fczerinde gerekli t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 kurmaktan, yeni bir Rails 5 projesi olu\u015fturmaya, React bile\u015fenlerini entegre etmeye ve basit bir etkile\u015fimli uygulama geli\u015ftirmeye kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.<\/p>\n<h3>\u00d6n Ko\u015fullar ve Sistem G\u00fcncelleme<\/h3>\n<p>Bu kurulum rehberini takip etmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n ko\u015fullara sahip olman\u0131z gerekmektedir:<\/p>\n<p>*   <strong>Ubuntu 18.04 LTS:<\/strong> Bu makale \u00f6zellikle Ubuntu 18.04 i\u00e7in yaz\u0131lm\u0131\u015ft\u0131r. Ancak, genel ad\u0131mlar di\u011fer Debian tabanl\u0131 Linux da\u011f\u0131t\u0131mlar\u0131 i\u00e7in de benzer olacakt\u0131r.<br \/>\n*   <strong>Temel Linux Komut Bilgisi:<\/strong> Terminalde temel komutlar\u0131 (cd, ls, sudo vb.) kullanma yetene\u011fi.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Gerekli paketleri ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 indirmek i\u00e7in.<\/p>\n<p>Kuruluma ba\u015flamadan \u00f6nce, sisteminizin g\u00fcncel oldu\u011fundan emin olmak her zaman iyi bir uygulamad\u0131r. Terminali a\u00e7\u0131n (Ctrl+Alt+T) ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p>Bu komutlar, paket listelerinizi g\u00fcncelleyecek ve mevcut t\u00fcm paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltecektir.<\/p>\n<h3>Sistem Ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n Kurulumu<\/h3>\n<p>Ruby, Node.js ve di\u011fer geli\u015ftirme ara\u00e7lar\u0131n\u0131 derlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in \u00e7e\u015fitli sistem ba\u011f\u0131ml\u0131l\u0131klar\u0131na ihtiyac\u0131m\u0131z olacak.<\/p>\n<h4>Gerekli Derleme Ara\u00e7lar\u0131n\u0131 Kurma<\/h4>\n<p>Ruby ve di\u011fer yaz\u0131l\u0131mlar\u0131 kaynak koddan derlemek i\u00e7in <code>build-essential<\/code> paketi ve \u00e7e\u015fitli k\u00fct\u00fcphaneler gereklidir.<\/p>\n<pre><code class=\"language-bash\">sudo apt install -y build-essential git curl libssl-dev libreadline-dev zlib1g-dev \\\nlibyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev \\\nsoftware-properties-common libffi-dev nodejs npm<\/code><\/pre>\n<p>Bu komut, derleme ara\u00e7lar\u0131n\u0131n yan\u0131 s\u0131ra, Ruby&#8217;nin ihtiya\u00e7 duyabilece\u011fi SSL, readline, zlib, YAML, SQLite, XML\/XSLT, cURL gibi k\u00fct\u00fcphaneleri ve Node.js ile npm&#8217;i kurar. Node.js ve npm&#8217;i bu \u015fekilde kurmak yerine, daha esnek bir s\u00fcr\u00fcm y\u00f6netimi i\u00e7in <code>nvm<\/code> kullanmay\u0131 tercih edece\u011fiz.<\/p>\n<h4>Node.js ve npm (veya Yarn) Kurulumu (nvm ile \u00d6nerilen)<\/h4>\n<p>Node.js ve npm, React uygulamalar\u0131n\u0131 derlemek ve y\u00f6netmek i\u00e7in gereklidir. Birden fazla Node.js s\u00fcr\u00fcm\u00fcn\u00fc y\u00f6netmek i\u00e7in Node Version Manager (nvm) kullanmak en iyi y\u00f6ntemdir.<\/p>\n<p>1.  <strong>nvm Kurulumu:<\/strong><\/p>\n<pre><code class=\"language-bash\">curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.1\/install.sh | bash<\/code><\/pre>\n<p>    Kurulumdan sonra, terminali kapat\u0131p yeniden a\u00e7man\u0131z veya a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">source ~\/.bashrc<\/code><\/pre>\n<p>2.  <strong>Node.js Kurulumu:<\/strong><\/p>\n<p>    \u015eimdi <code>nvm<\/code> kullanarak Node.js&#8217;in en son LTS (Uzun S\u00fcreli Destek) s\u00fcr\u00fcm\u00fcn\u00fc kurabiliriz:<\/p>\n<pre><code class=\"language-bash\">nvm install --lts\n    nvm use --lts<\/code><\/pre>\n<p>    Kurulumu do\u011frulamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">node -v\n    npm -v<\/code><\/pre>\n<p>    Bu komutlar Node.js ve npm s\u00fcr\u00fcmlerini g\u00f6stermelidir.<\/p>\n<p>3.  <strong>Yarn Kurulumu (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir):<\/strong><\/p>\n<p>    Yarn, npm&#8217;e alternatif olarak daha h\u0131zl\u0131 ve g\u00fcvenilir bir paket y\u00f6neticisidir. Webpacker genellikle Yarn ile daha iyi \u00e7al\u0131\u015f\u0131r.<\/p>\n<pre><code class=\"language-bash\">npm install -g yarn<\/code><\/pre>\n<p>    Kurulumu do\u011frulamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">yarn -v<\/code><\/pre>\n<h4>Ruby Kurulumu (rbenv ile \u00d6nerilen)<\/h4>\n<p>Benzer \u015fekilde, Ruby&#8217;nin farkl\u0131 s\u00fcr\u00fcmlerini y\u00f6netmek i\u00e7in Ruby Version Manager (rbenv) kullanmak en iyi y\u00f6ntemdir. Bu, farkl\u0131 projeler i\u00e7in farkl\u0131 Ruby s\u00fcr\u00fcmlerine ihtiyac\u0131n\u0131z oldu\u011funda esneklik sa\u011flar.<\/p>\n<p>1.  <strong>rbenv ve ruby-build Kurulumu:<\/strong><\/p>\n<pre><code class=\"language-bash\">git clone https:\/\/github.com\/rbenv\/rbenv.git ~\/.rbenv\n    echo 'export PATH=\"$HOME\/.rbenv\/bin:$PATH\"' >> ~\/.bashrc\n    echo 'eval \"$(rbenv init -)\"' >> ~\/.bashrc\n\n    git clone https:\/\/github.com\/rbenv\/ruby-build.git ~\/.rbenv\/plugins\/ruby-build\n    echo 'export PATH=\"$HOME\/.rbenv\/plugins\/ruby-build\/bin:$PATH\"' >> ~\/.bashrc\n\n    source ~\/.bashrc<\/code><\/pre>\n<p>2.  <strong>Ruby Kurulumu:<\/strong><\/p>\n<p>    Rails 5.x serisi genellikle Ruby 2.5.x veya 2.6.x ile uyumludur. Bu makalede Ruby 2.5.3 kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">rbenv install 2.5.3\n    rbenv global 2.5.3<\/code><\/pre>\n<p>    Kurulumu do\u011frulamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">ruby -v<\/code><\/pre>\n<p>    Bu komut Ruby 2.5.3 s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir.<\/p>\n<p>3.  <strong>Bundler Kurulumu:<\/strong><\/p>\n<p>    Bundler, Ruby projelerinin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131lan bir gem&#8217;dir.<\/p>\n<pre><code class=\"language-bash\">gem install bundler\n    rbenv rehash # rbenv'e yeni gem'leri tan\u0131tmak i\u00e7in<\/code><\/pre>\n<h4>PostgreSQL Veritaban\u0131 Kurulumu<\/h4>\n<p>Rails projeleri i\u00e7in genellikle PostgreSQL tercih edilir. Sa\u011flaml\u0131\u011f\u0131 ve geli\u015fmi\u015f \u00f6zellikleri nedeniyle b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalar i\u00e7in idealdir.<\/p>\n<p>1.  <strong>PostgreSQL Sunucusunu Kurma:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo apt install -y postgresql postgresql-contrib libpq-dev<\/code><\/pre>\n<p>    <code>libpq-dev<\/code> paketi, Ruby&#8217;nin PostgreSQL ile etkile\u015fime girmesi i\u00e7in gereken geli\u015ftirme ba\u015fl\u0131klar\u0131n\u0131 i\u00e7erir.<\/p>\n<p>2.  <strong>PostgreSQL Kullan\u0131c\u0131s\u0131 Olu\u015fturma:<\/strong><\/p>\n<p>    PostgreSQL varsay\u0131lan olarak <code>postgres<\/code> adl\u0131 bir s\u00fcper kullan\u0131c\u0131 olu\u015fturur. Kendi sistem kullan\u0131c\u0131n\u0131zla veritaban\u0131 olu\u015fturabilmek i\u00e7in bir PostgreSQL kullan\u0131c\u0131s\u0131 olu\u015fturman\u0131z gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo -u postgres createuser -s $(whoami)<\/code><\/pre>\n<p>    Bu komut, mevcut Linux kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 (\u00f6rne\u011fin, <code>kullaniciadi<\/code>) PostgreSQL&#8217;de bir s\u00fcper kullan\u0131c\u0131 olarak olu\u015fturur. Alternatif olarak, etkile\u015fimli olarak bir kullan\u0131c\u0131 olu\u015fturmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo -u postgres createuser --interactive<\/code><\/pre>\n<p>    Soruldu\u011funda, kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 girin ve s\u00fcper kullan\u0131c\u0131 yetkileri verin.<\/p>\n<h3>Rails Projesi Kurulumu<\/h3>\n<p>Art\u0131k t\u00fcm \u00f6n ko\u015fullar ve ba\u011f\u0131ml\u0131l\u0131klar y\u00fcklendi\u011fine g\u00f6re, yeni bir Rails projesi olu\u015fturmaya ba\u015flayabiliriz.<\/p>\n<h4>Rails Gem&#8217;ini Kurma<\/h4>\n<p>\u0130lk olarak, Rails gem&#8217;ini kurmal\u0131y\u0131z. Rails 5.2.4 s\u00fcr\u00fcm\u00fcn\u00fc hedefleyece\u011fiz.<\/p>\n<pre><code class=\"language-bash\">gem install rails -v 5.2.4\nrbenv rehash # rbenv'e yeni gem'i tan\u0131tmak i\u00e7in<\/code><\/pre>\n<h4>Yeni Bir Rails Projesi Olu\u015fturma<\/h4>\n<p>\u015eimdi, React \u00f6n y\u00fcz\u00fc ve PostgreSQL veritaban\u0131 ile yeni bir Rails projesi olu\u015ftural\u0131m. <code>--webpack=react<\/code> bayra\u011f\u0131, Rails&#8217;in Webpacker gem&#8217;ini React ile birlikte kurmas\u0131n\u0131 sa\u011flar ve React bile\u015fenleri i\u00e7in varsay\u0131lan bir yap\u0131land\u0131rma yapar.<\/p>\n<pre><code class=\"language-bash\">rails new my_react_app --webpack=react --database=postgresql<\/code><\/pre>\n<p>Bu komut \u015funlar\u0131 yapacakt\u0131r:<\/p>\n<p>*   <code>my_react_app<\/code> ad\u0131nda yeni bir Rails projesi dizini olu\u015fturur.<br \/>\n*   Gerekli t\u00fcm Rails gem&#8217;lerini kurar (Bundler arac\u0131l\u0131\u011f\u0131yla).<br \/>\n*   PostgreSQL veritaban\u0131 adapt\u00f6r\u00fcn\u00fc yap\u0131land\u0131r\u0131r.<br \/>\n*   Webpacker gem&#8217;ini ekler ve React ile \u00e7al\u0131\u015fmak \u00fczere yap\u0131land\u0131r\u0131r.<br \/>\n*   React i\u00e7in \u00f6rnek dosyalar\u0131 (<code>hello_react.jsx<\/code> gibi) olu\u015fturur.<\/p>\n<p>Proje dizinine ge\u00e7in:<\/p>\n<pre><code class=\"language-bash\">cd my_react_app<\/code><\/pre>\n<h4>Veritaban\u0131 Olu\u015fturma<\/h4>\n<p>Rails projesi olu\u015fturulduktan sonra, veritaban\u0131n\u0131 olu\u015fturmam\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">rails db:create<\/code><\/pre>\n<p>Bu komut, <code>config\/database.yml<\/code> dosyas\u0131nda tan\u0131mlanan geli\u015ftirme ve test veritabanlar\u0131n\u0131 PostgreSQL&#8217;de olu\u015fturacakt\u0131r.<\/p>\n<h3>React Frontend&#8217;i Webpacker ile Kurulumu<\/h3>\n<p>Rails 5.1 ile birlikte tan\u0131t\u0131lan Webpacker gem&#8217;i, modern JavaScript ara\u00e7 zincirini (Webpack, Babel, PostCSS vb.) Rails projelerine sorunsuz bir \u015fekilde entegre etmenin standart yoludur. <code>--webpack=react<\/code> bayra\u011f\u0131 ile bir Rails projesi olu\u015fturdu\u011fumuzda, Webpacker zaten React i\u00e7in yap\u0131land\u0131r\u0131lm\u0131\u015f olarak gelir.<\/p>\n<h4>Webpacker Yap\u0131s\u0131n\u0131 Anlama<\/h4>\n<p>Projenizin dizin yap\u0131s\u0131nda, React ile ilgili \u00f6nemli dosyalar\u0131 <code>app\/javascript<\/code> alt\u0131nda bulacaks\u0131n\u0131z:<\/p>\n<p>*   <code>app\/javascript\/packs\/<\/code>: Bu dizin, Webpack&#8217;in giri\u015f noktalar\u0131 olan &#8220;pack&#8221; dosyalar\u0131n\u0131 i\u00e7erir. Her <code>pack<\/code> dosyas\u0131, uygulaman\u0131z\u0131n bir b\u00f6l\u00fcm\u00fcn\u00fc veya t\u00fcm\u00fcn\u00fc temsil edebilir. \u00d6rne\u011fin, <code>application.js<\/code> veya <code>hello_react.jsx<\/code>.<br \/>\n*   <code>app\/javascript\/components\/<\/code>: Genellikle React bile\u015fenlerinizi d\u00fczenlemek i\u00e7in kullan\u0131lan bir dizin.<br \/>\n*   <code>config\/webpacker.yml<\/code>: Webpacker&#8217;\u0131n ana yap\u0131land\u0131rma dosyas\u0131d\u0131r. Geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 i\u00e7in farkl\u0131 ayarlar\u0131 i\u00e7erir.<br \/>\n*   <code>package.json<\/code>: Node.js paket y\u00f6neticisi (npm veya Yarn) i\u00e7in ba\u011f\u0131ml\u0131l\u0131klar\u0131 ve script&#8217;leri tan\u0131mlayan dosya.<\/p>\n<h4>Basit Bir React Bile\u015feni Olu\u015fturma<\/h4>\n<p>\u015eimdi, projemizde basit bir React bile\u015feni olu\u015ftural\u0131m ve onu Rails g\u00f6r\u00fcn\u00fcm\u00fcm\u00fcze entegre edelim.<\/p>\n<p>1.  <strong>React Bile\u015feni Olu\u015fturma:<\/strong><\/p>\n<p>    <code>app\/javascript\/components<\/code> dizinini olu\u015fturun ve i\u00e7ine <code>App.jsx<\/code> ad\u0131nda bir dosya ekleyin:<\/p>\n<pre><code class=\"language-bash\">mkdir -p app\/javascript\/components\n    touch app\/javascript\/components\/App.jsx<\/code><\/pre>\n<p>    <code>app\/javascript\/components\/App.jsx<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\n\n    const App = (props) => {\n      return (\n        <div>\n          \n          <p>Bu, Rails 5 ve React ile olu\u015fturulmu\u015f basit bir uygulamad\u0131r.<\/p>\n          <p>Props'tan gelen mesaj: {props.message}<\/p>\n        <\/div>\n      );\n    };\n\n    export default App;<\/code><\/pre>\n<p>2.  <strong><code>application.js<\/code> Pack Dosyas\u0131n\u0131 G\u00fcncelleme:<\/strong><\/p>\n<p>    <code>app\/javascript\/packs\/application.js<\/code> dosyas\u0131, uygulaman\u0131z\u0131n ana JavaScript giri\u015f noktas\u0131d\u0131r. Burada React bile\u015fenimizi i\u00e7e aktaraca\u011f\u0131z ve DOM&#8217;a render edece\u011fiz.<\/p>\n<p>    <code>app\/javascript\/packs\/application.js<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code class=\"language-javascript\">\/\/ Rails'in varsay\u0131lan Webpacker pack dosyas\u0131\n    require(\"@rails\/ujs\").start()\n    require(\"turbolinks\").start()\n    require(\"@rails\/activestorage\").start()\n    require(\"channels\")\n\n    \/\/ React entegrasyonu i\u00e7in gerekli import'lar\n    import React from 'react';\n    import ReactDOM from 'react-dom';\n    import App from '..\/components\/App'; \/\/ Kendi App bile\u015fenimizi import ediyoruz\n\n    document.addEventListener('DOMContentLoaded', () => {\n      ReactDOM.render(\n        <App message=\"Bu bir prop mesaj\u0131d\u0131r!\" \/>, \/\/ App bile\u015fenimize bir prop ge\u00e7iyoruz\n        document.getElementById('react-root'),\n      );\n    });<\/code><\/pre>\n<p>    Yukar\u0131daki kod, DOM y\u00fcklendi\u011finde <code>App<\/code> bile\u015fenini <code>react-root<\/code> id&#8217;sine sahip bir HTML eleman\u0131na render edecektir.<\/p>\n<p>3.  <strong>Rails G\u00f6r\u00fcn\u00fcm\u00fcn\u00fc Olu\u015fturma:<\/strong><\/p>\n<p>    React bile\u015fenimizi g\u00f6sterecek bir Rails g\u00f6r\u00fcn\u00fcm\u00fcne ihtiyac\u0131m\u0131z var. Bir <code>Welcome<\/code> kontrolc\u00fcs\u00fc ve <code>index<\/code> eylemi olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">rails generate controller Welcome index<\/code><\/pre>\n<p>    Bu komut, <code>app\/controllers\/welcome_controller.rb<\/code> ve <code>app\/views\/welcome\/index.html.erb<\/code> dosyalar\u0131n\u0131 olu\u015fturacakt\u0131r.<\/p>\n<p>    <code>config\/routes.rb<\/code> dosyas\u0131n\u0131 g\u00fcncelleyerek <code>index<\/code> eylemini uygulaman\u0131n k\u00f6k yolu yapal\u0131m:<\/p>\n<pre><code class=\"language-ruby\"># config\/routes.rb\n    Rails.application.routes.draw do\n      root 'welcome#index'\n      # Di\u011fer rotalar buraya gelebilir\n    end<\/code><\/pre>\n<p>    \u015eimdi <code>app\/views\/welcome\/index.html.erb<\/code> dosyas\u0131n\u0131 d\u00fczenleyerek React bile\u015fenimizin yerle\u015fece\u011fi <code>div<\/code> eleman\u0131n\u0131 ve Webpacker taraf\u0131ndan olu\u015fturulan JavaScript pack dosyas\u0131n\u0131 ekleyelim:<\/p>\n<pre><code class=\"language-erb\"><!-- app\/views\/welcome\/index.html.erb -->\n    <div id=\"react-root\"><\/div>\n\n    <%= javascript_pack_tag 'application' %><\/code><\/pre>\n<p>    <code>javascript_pack_tag 'application'<\/code> yard\u0131mc\u0131 y\u00f6ntemi, Webpacker&#8217;\u0131n <code>app\/javascript\/packs\/application.js<\/code> dosyas\u0131n\u0131 derleyip taray\u0131c\u0131ya sunmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Uygulamay\u0131 Geli\u015ftirme ve \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Art\u0131k Rails ve React entegrasyonumuzun temelini att\u0131\u011f\u0131m\u0131za g\u00f6re, uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rabilir ve geli\u015ftirmeye ba\u015flayabiliriz.<\/p>\n<h4>Rails Sunucusunu Ba\u015flatma<\/h4>\n<p>Terminalde proje dizininizdeyken Rails sunucusunu ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">rails s<\/code><\/pre>\n<p>Bu komut, Rails uygulamas\u0131n\u0131 varsay\u0131lan olarak <code>http:\/\/localhost:3000<\/code> adresinde ba\u015flat\u0131r. Taray\u0131c\u0131n\u0131zda bu adrese gitti\u011finizde, React bile\u015feninizin i\u00e7eri\u011fini g\u00f6rmelisiniz.<\/p>\n<h4>Webpack Geli\u015ftirme Sunucusunu Ba\u015flatma (Hot Reloading i\u00e7in)<\/h4>\n<p>React bile\u015fenlerinde yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fikliklerin an\u0131nda taray\u0131c\u0131da g\u00f6r\u00fcnmesini sa\u011flamak i\u00e7in Webpack geli\u015ftirme sunucusunu ayr\u0131 bir terminalde \u00e7al\u0131\u015ft\u0131rman\u0131z \u00f6nerilir. Bu, &#8220;Hot Module Replacement&#8221; (HMR) veya &#8220;Hot Reloading&#8221; olarak bilinen \u00f6zelli\u011fi etkinle\u015ftirir.<\/p>\n<p>Yeni bir terminal a\u00e7\u0131n, proje dizininize gidin ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">bin\/webpack-dev-server<\/code><\/pre>\n<p>Bu sunucu varsay\u0131lan olarak <code>http:\/\/localhost:8080<\/code> adresinde \u00e7al\u0131\u015f\u0131r ve JavaScript\/React dosyalar\u0131n\u0131zdaki de\u011fi\u015fiklikleri izler. De\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda, sayfan\u0131n tamam\u0131n\u0131 yenilemeden yaln\u0131zca ilgili mod\u00fcl\u00fc g\u00fcnceller.<\/p>\n<p><strong>\u00d6nemli Not:<\/strong> <code>rails s<\/code> ve <code>bin\/webpack-dev-server<\/code> komutlar\u0131n\u0131n ayn\u0131 anda \u00e7al\u0131\u015f\u0131yor olmas\u0131 gerekmektedir. Rails sunucusu HTML&#8217;i ve API isteklerini sunarken, Webpack geli\u015ftirme sunucusu JavaScript ve CSS varl\u0131klar\u0131n\u0131 y\u00f6netir.<\/p>\n<h4>Basit Bir API Entegrasyonu<\/h4>\n<p>Rails&#8217;in API yeteneklerini kullanarak React \u00f6n y\u00fcz\u00fcm\u00fczden veri \u00e7ekelim. Bir <code>Post<\/code> modeli olu\u015ftural\u0131m ve bu post&#8217;lar\u0131 React bile\u015fenimizde g\u00f6sterelim.<\/p>\n<p>1.  <strong>Post Kayna\u011f\u0131 Olu\u015fturma:<\/strong><\/p>\n<pre><code class=\"language-bash\">rails generate scaffold Post title:string content:text\n    rails db:migrate<\/code><\/pre>\n<p>    Bu komutlar, <code>Post<\/code> modeli, kontrolc\u00fcs\u00fc, g\u00f6r\u00fcn\u00fcmleri ve veritaban\u0131 migrasyonunu olu\u015fturur. Ayr\u0131ca, API u\u00e7 noktalar\u0131n\u0131 da tan\u0131mlar.<\/p>\n<p>2.  <strong>\u00d6rnek Veri Ekleme (Rails Konsolu):<\/strong><\/p>\n<pre><code class=\"language-bash\">rails console<\/code><\/pre>\n<pre><code class=\"language-ruby\">Post.create(title: \"\u0130lk G\u00f6nderi\", content: \"Bu bir Rails API'sinden gelen ilk g\u00f6nderidir.\")\n    Post.create(title: \"\u0130kinci G\u00f6nderi\", content: \"React taraf\u0131ndan g\u00f6r\u00fcnt\u00fclenecek ikinci g\u00f6nderi.\")\n    exit<\/code><\/pre>\n<p>3.  <strong>React Bile\u015fenini G\u00fcncelleme:<\/strong><\/p>\n<p>    <code>app\/javascript\/components\/App.jsx<\/code> dosyas\u0131n\u0131, Rails API&#8217;sinden post&#8217;lar\u0131 \u00e7ekecek \u015fekilde g\u00fcncelleyelim. <code>useState<\/code> ve <code>useEffect<\/code> hook&#8217;lar\u0131n\u0131 kullanaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-jsx\">\/\/ app\/javascript\/components\/App.jsx\n    import React, { useState, useEffect } from 'react';\n\n    const App = (props) => {\n      const [posts, setPosts] = useState([]);\n      const [loading, setLoading] = useState(true);\n      const [error, setError] = useState(null);\n\n      useEffect(() => {\n        fetch('\/posts') \/\/ Rails API'sinden post'lar\u0131 \u00e7ekiyoruz\n          .then(response => {\n            if (!response.ok) {\n              throw new Error(<code>HTTP error! status: ${response.status}<\/code>);\n            }\n            return response.json();\n          })\n          .then(data => {\n            setPosts(data);\n            setLoading(false);\n          })\n          .catch(error => {\n            setError(error);\n            setLoading(false);\n          });\n      }, []); \/\/ Bo\u015f ba\u011f\u0131ml\u0131l\u0131k dizisi, yaln\u0131zca bile\u015fen ilk y\u00fcklendi\u011finde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar\n\n      if (loading) return <p>Y\u00fckleniyor...<\/p>;\n      if (error) return <p>Hata: {error.message}<\/p>;\n\n      return (\n        <div>\n          \n          <p>Bu, Rails 5 ve React ile olu\u015fturulmu\u015f basit bir uygulamad\u0131r.<\/p>\n          <p>Props'tan gelen mesaj: {props.message}<\/p>\n\n          <h2>G\u00f6nderiler<\/h2>\n          {posts.length === 0 ? (\n            <p>Hen\u00fcz g\u00f6nderi yok.<\/p>\n          ) : (\n            <ul>\n              {posts.map(post => (\n                <li key={post.id}>\n                  <h3>{post.title}<\/h3>\n                  <p>{post.content}<\/p>\n                <\/li>\n              ))}\n            <\/ul>\n          )}\n        <\/div>\n      );\n    };\n\n    export default App;<\/code><\/pre>\n<p>    De\u011fi\u015fiklikleri kaydettikten sonra, taray\u0131c\u0131n\u0131zda <code>http:\/\/localhost:3000<\/code> adresini ziyaret etti\u011finizde, Rails API&#8217;sinden \u00e7ekilen g\u00f6nderileri React bile\u015feninizde g\u00f6rmelisiniz.<\/p>\n<h3>Da\u011f\u0131t\u0131m Hususlar\u0131<\/h3>\n<p>Geli\u015ftirme ortam\u0131nda her \u015fey yolunda gitse de, uygulamay\u0131 \u00fcretim ortam\u0131na da\u011f\u0131t\u0131rken baz\u0131 farkl\u0131l\u0131klar olacakt\u0131r.<\/p>\n<p>*   <strong>Varl\u0131klar\u0131n Derlenmesi:<\/strong> \u00dcretim ortam\u0131nda, Webpack geli\u015ftirme sunucusunu \u00e7al\u0131\u015ft\u0131rmazs\u0131n\u0131z. Bunun yerine, t\u00fcm JavaScript ve CSS varl\u0131klar\u0131n\u0131 tek bir seferde derlemeniz gerekir. Bu i\u015flem genellikle a\u015fa\u011f\u0131daki komutla yap\u0131l\u0131r:<\/p>\n<pre><code class=\"language-bash\">RAILS_ENV=production bundle exec rails assets:precompile\n    # veya sadece Webpacker varl\u0131klar\u0131 i\u00e7in\n    RAILS_ENV=production bundle exec rails webpacker:compile<\/code><\/pre>\n<p>    Bu komut, t\u00fcm varl\u0131klar\u0131 optimize eder ve \u00fcretim i\u00e7in uygun hale getirir.<br \/>\n*   <strong>Web Sunucusu:<\/strong> Geli\u015ftirme s\u0131ras\u0131nda Puma (Rails&#8217;in varsay\u0131lan\u0131) kullan\u0131rken, \u00fcretimde genellikle Nginx gibi bir ters proxy sunucu ile Puma veya Passenger gibi bir uygulama sunucusu kullan\u0131l\u0131r. Nginx, statik varl\u0131klar\u0131 sunarken, uygulama sunucusu dinamik Rails isteklerini i\u015fler.<br \/>\n*   <strong>Veritaban\u0131 Yap\u0131land\u0131rmas\u0131:<\/strong> <code>config\/database.yml<\/code> dosyas\u0131ndaki \u00fcretim ortam\u0131 ayarlar\u0131n\u0131n do\u011fru oldu\u011fundan ve veritaban\u0131 kimlik bilgilerinin g\u00fcvenli bir \u015fekilde y\u00f6netildi\u011finden emin olun (\u00f6rne\u011fin, ortam de\u011fi\u015fkenleri kullanarak).<br \/>\n*   <strong>Ortam De\u011fi\u015fkenleri:<\/strong> API anahtarlar\u0131, gizli s\u0131rlar gibi hassas bilgileri do\u011frudan kodunuza yazmak yerine ortam de\u011fi\u015fkenleri (\u00f6rne\u011fin, <code>SECRET_KEY_BASE<\/code>) arac\u0131l\u0131\u011f\u0131yla y\u00f6netin.<\/p>\n<p>Bu makale, da\u011f\u0131t\u0131m\u0131n ayr\u0131nt\u0131lar\u0131na girmeyecektir, ancak bu noktalar\u0131n fark\u0131nda olmak \u00f6nemlidir.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum ve geli\u015ftirme s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong><code>rbenv: command not found<\/code> veya <code>nvm: command not found<\/code>:<\/strong> <code>~\/.bashrc<\/code> dosyan\u0131za ekledi\u011finiz sat\u0131rlar\u0131n do\u011fru oldu\u011fundan ve <code>source ~\/.bashrc<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun. Terminali kapat\u0131p yeniden a\u00e7mak da yard\u0131mc\u0131 olabilir.<br \/>\n*   <strong><code>bundle install<\/code> hatalar\u0131:<\/strong> Genellikle eksik sistem ba\u011f\u0131ml\u0131l\u0131klar\u0131ndan (\u00f6rne\u011fin, <code>libpq-dev<\/code> gibi) kaynaklan\u0131r. Hata mesaj\u0131n\u0131 dikkatlice okuyun ve eksik paketi <code>sudo apt install<\/code> ile kurun.<br \/>\n*   <strong><code>Webpacker::Manifest::MissingEntryError<\/code>:<\/strong> Bu hata, Webpack&#8217;in bir pack dosyas\u0131n\u0131 bulamad\u0131\u011f\u0131 anlam\u0131na gelir. <code>bin\/webpack-dev-server<\/code> komutunun \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun veya <code>RAILS_ENV=development bundle exec rails webpacker:compile<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak varl\u0131klar\u0131 manuel olarak derlemeyi deneyin. <code>yarn install<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak t\u00fcm Node.js ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n kurulu oldu\u011fundan emin olun.<br \/>\n*   <strong>React bile\u015feni g\u00f6r\u00fcnm\u00fcyor:<\/strong><br \/>\n    *   Taray\u0131c\u0131n\u0131z\u0131n geli\u015ftirici ara\u00e7lar\u0131n\u0131 (F12) a\u00e7\u0131n ve konsolda hata olup olmad\u0131\u011f\u0131n\u0131 kontrol edin.<br \/>\n    *   <code>app\/views\/welcome\/index.html.erb<\/code> dosyas\u0131nda <code><\/p>\n<div id=\"react-root\"><\/div>\n<p><\/code> ve <code><%= javascript_pack_tag &#039;application&#039; %><\/code> sat\u0131rlar\u0131n\u0131n do\u011fru yerle\u015ftirildi\u011finden emin olun.<br \/>\n    *   <code>app\/javascript\/packs\/application.js<\/code> dosyas\u0131nda <code>ReactDOM.render<\/code> \u00e7a\u011fr\u0131s\u0131n\u0131n do\u011fru oldu\u011fundan ve <code>react-root<\/code> id&#8217;sini hedefledi\u011finden emin olun.<br \/>\n*   <strong>API \u00e7a\u011fr\u0131lar\u0131 ba\u015far\u0131s\u0131z oluyor:<\/strong><br \/>\n    *   Rails sunucusunun \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun (<code>rails s<\/code>).<br \/>\n    *   Taray\u0131c\u0131n\u0131z\u0131n geli\u015ftirici ara\u00e7lar\u0131ndaki &#8220;Network&#8221; sekmesinde API iste\u011finin durumunu kontrol edin (404 Not Found, 500 Internal Server Error vb.).<br \/>\n    *   Rails sunucu konsolunda hata mesajlar\u0131n\u0131 kontrol edin.<br \/>\n    *   <code>config\/routes.rb<\/code> dosyas\u0131nda API rotalar\u0131n\u0131n do\u011fru tan\u0131mland\u0131\u011f\u0131ndan emin olun.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 makale boyunca, Ubuntu 18.04 i\u015fletim sistemi \u00fczerinde Ruby on Rails 5 arka y\u00fcz\u00fc ile modern bir React \u00f6n y\u00fcz\u00fcn\u00fc birle\u015ftiren bir uygulaman\u0131n nas\u0131l kurulaca\u011f\u0131n\u0131 ve geli\u015ftirilece\u011fini ad\u0131m ad\u0131m \u00f6\u011frendiniz. Sistem ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n kurulumundan, Rails ve React projelerinin yap\u0131land\u0131r\u0131lmas\u0131na, basit bir React bile\u015feninin entegrasyonuna ve Rails API&#8217;si ile veri al\u0131\u015fveri\u015fine kadar bir\u00e7ok \u00f6nemli konuyu ele ald\u0131k.<\/p>\n<p>Rails&#8217;in sa\u011flam API yetenekleri ve React&#8217;in dinamik kullan\u0131c\u0131 aray\u00fcz\u00fc olu\u015fturma g\u00fcc\u00fc, modern ve \u00f6l\u00e7eklenebilir web uygulamalar\u0131 geli\u015ftirmek i\u00e7in m\u00fckemmel bir kombinasyon sunar. Webpacker gem&#8217;i sayesinde bu entegrasyon hi\u00e7 olmad\u0131\u011f\u0131 kadar kolay ve verimli hale gelmi\u015ftir.<\/p>\n<p>Bu ba\u015flang\u0131\u00e7 noktas\u0131ndan itibaren, uygulaman\u0131z\u0131 daha da geli\u015ftirebilirsiniz:<\/p>\n<p>*   <strong>React Router:<\/strong> Tek sayfal\u0131k uygulama deneyimi i\u00e7in React Router kullanarak \u00f6n y\u00fcz rotalar\u0131n\u0131 y\u00f6netin.<br \/>\n*   <strong>Durum Y\u00f6netimi:<\/strong> Uygulaman\u0131z b\u00fcy\u00fcd\u00fck\u00e7e Redux veya Context API gibi durum y\u00f6netim k\u00fct\u00fcphanelerini entegre edin.<br \/>\n*   <strong>Kimlik Do\u011frulama:<\/strong> Devise gem&#8217;i ve JWT (JSON Web Tokens) kullanarak Rails API&#8217;nizde kullan\u0131c\u0131 kimlik do\u011frulama ve yetkilendirme uygulay\u0131n.<br \/>\n*   <strong>Testler:<\/strong> Hem Rails arka y\u00fcz\u00fcn\u00fcz hem de React \u00f6n y\u00fcz\u00fcn\u00fcz i\u00e7in kapsaml\u0131 testler yaz\u0131n.<\/p>\n<p>Unutmay\u0131n, web geli\u015ftirme s\u00fcrekli evrilen bir aland\u0131r. Yeni ara\u00e7lar\u0131 ve en iyi uygulamalar\u0131 \u00f6\u011frenmeye devam etmek, becerilerinizi g\u00fcncel tutmak i\u00e7in hayati \u00f6neme sahiptir. Bu kurulum rehberi, Rails ve React ile sa\u011flam bir ba\u015flang\u0131\u00e7 yapman\u0131z i\u00e7in gereken temeli sa\u011flam\u0131\u015ft\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu\nBu makale, Ruby on Rails 5 \u00e7at\u0131s\u0131n\u0131n g\u00fc\u00e7l\u00fc arka y\u00fcz yeteneklerini","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-32765","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>Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu - 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\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu Bu makale, Ruby on Rails 5 \u00e7at\u0131s\u0131n\u0131n g\u00fc\u00e7l\u00fc arka y\u00fcz yeteneklerini\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-25T15:41:06+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu\",\"datePublished\":\"2025-10-25T15:41:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/\"},\"wordCount\":2613,\"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\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/\",\"name\":\"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-25T15:41:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu\"}]},{\"@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":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu - 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\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu","og_description":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu Bu makale, Ruby on Rails 5 \u00e7at\u0131s\u0131n\u0131n g\u00fc\u00e7l\u00fc arka y\u00fcz yeteneklerini","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-25T15:41:06+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu","datePublished":"2025-10-25T15:41:06+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/"},"wordCount":2613,"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\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/","name":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-25T15:41:06+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ruby-on-rails-v5-projesi-ve-react-frontend-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 18.04 \u00dczerinde Ruby on Rails v5 Projesi ve React Frontend Kurulumu"}]},{"@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\/32765","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=32765"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32765\/revisions"}],"predecessor-version":[{"id":32766,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32765\/revisions\/32766"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}