Takip et

RVM ile VPS Üzerinde Ruby Kurulumlarını ve Ortamlarını Yönetme Rehberi

RVM ile VPS Üzerinde Ruby Kurulumlarını ve Ortamlarını Yönetme Rehberi Giriş Ruby on Rails veya diğer Ruby tabanlı uygulamalar geliştiren

RVM ile VPS Üzerinde Ruby Kurulumlarını ve Ortamlarını Yönetme Rehberi

Giriş

Ruby on Rails veya diğer Ruby tabanlı uygulamalar geliştiren ve dağıtan her geliştirici, farklı projelerin farklı Ruby sürümleri ve bağımlılık setleri gerektirdiği karmaşık bir ortamla karşılaşabilir. Bu durum, özellikle bir Sanal Özel Sunucu (VPS) üzerinde birden fazla uygulamayı barındırırken yönetilmesi zor bir “bağımlılık cehennemine” dönüşebilir. İşte tam bu noktada RVM (Ruby Version Manager) devreye girer. RVM, Ruby sürümlerini ve gemset’leri kolayca kurmanıza, yönetmenize ve aralarında geçiş yapmanıza olanak tanıyan güçlü bir komut satırı aracıdır. Bu kapsamlı rehberde, bir VPS üzerinde RVM’yi nasıl kuracağınızı, Ruby sürümlerini ve gemset’leri nasıl yöneteceğinizi ve Ruby uygulamalarınızı nasıl dağıtacağınızı adım adım öğreneceksiniz.

Ön Koşullar

RVM kurulumuna başlamadan önce, VPS’nizin belirli gereksinimleri karşıladığından emin olmanız önemlidir.
Öncelikle, bir VPS’e SSH erişiminizin olması ve temel Linux komut satırı bilgisine sahip olmanız gerekmektedir. Sunucunuzda sudo ayrıcalıklarına sahip bir kullanıcı olarak oturum açmış olmalısınız. Kurulum sırasında çeşitli paketler derleneceği için, sisteminizin güncel olması ve gerekli derleme araçlarının yüklü olması şarttır. Bu adımları tamamlamak için genellikle apt (Debian/Ubuntu tabanlı sistemler için) veya yum/dnf (CentOS/Fedora tabanlı sistemler için) gibi paket yöneticilerini kullanırız.

RVM Kurulumu

RVM’yi VPS’inize kurmak, birkaç basit adımdan oluşur. Bu adımlar, RVM’nin düzgün çalışması için gerekli bağımlılıkları yüklemeyi ve RVM’nin kendisini kurmayı içerir.

GPG Anahtarını Ekleme

RVM kurulum betiğini indirmeden önce, RVM’nin geliştiricileri tarafından sağlanan GPG anahtarını sisteminize eklemeniz önerilir. Bu, indirdiğiniz betiğin güvenilir olduğunu ve kötü amaçlı yazılım içermediğini doğrulamanızı sağlar. GPG anahtarını eklemek için aşağıdaki komutu kullanabilirsiniz:

gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Bu komut, RVM projesiyle ilişkili GPG anahtarlarını güvendiğiniz anahtar sunucusundan alır ve sisteminize ekler. Bu adım, RVM kurulumunun güvenliğini artırmak için kritik öneme sahiptir.

RVM’yi Kurma

GPG anahtarını ekledikten sonra, RVM’yi kurmak için resmi kurulum betiğini kullanabilirsiniz. Bu betik, RVM’nin en kararlı sürümünü indirir ve sisteminize yükler. Kurulum betiğini çalıştırmak için aşağıdaki komutu kullanın:

\curl -sSL https://get.rvm.io | bash -s stable

Bu komut, curl ile RVM kurulum betiğini indirir ve doğrudan bash ile çalıştırır. \curl kullanılması, sistemdeki herhangi bir curl takma adını (alias) atlayarak betiğin doğru şekilde indirilmesini sağlar. Kurulum tamamlandıktan sonra, RVM’nin kabuk ortamınıza doğru şekilde entegre edildiğinden emin olmak için kabuk yapılandırma dosyanızı (örneğin .bashrc veya .zshrc) yeniden kaynaklamanız veya yeni bir terminal oturumu açmanız gerekebilir.

source ~/.rvm/scripts/rvm

Bu komut, RVM’nin kabuk fonksiyonlarını ve ortam değişkenlerini mevcut oturumunuza yükler. Artık RVM komutlarını kullanmaya hazırsınız.

RVM Kurulumunu Doğrulama

RVM kurulumunun başarılı olduğunu doğrulamak için, RVM sürümünü kontrol edebilir ve bilinen Ruby sürümlerini listeleyebilirsiniz. Bu, RVM’nin doğru şekilde yüklendiğini ve çalışmaya hazır olduğunu gösterir.

rvm -v

Bu komut, yüklü RVM sürümünü görüntüler. Ayrıca, RVM’nin şu anda yükleyebileceği bilinen Ruby sürümlerini görmek için aşağıdaki komutu kullanabilirsiniz:

rvm list known

Bu komut, RVM’nin desteklediği tüm Ruby sürümlerini listeler ve size hangi sürümleri kurabileceğiniz konusunda bir fikir verir. Kurulumun bu aşaması tamamlandığında, Ruby sürümlerini yönetmeye hazırsınız demektir.

Ruby Sürümlerini Yönetme

RVM’nin temel amacı, farklı Ruby sürümlerini kolayca kurmak ve bunlar arasında geçiş yapmaktır. Bu bölüm, Ruby sürümlerini nasıl yöneteceğinizi detaylandırır.

Mevcut Ruby Sürümlerini Listeleme

RVM, kullanıcının yükleyebileceği çok sayıda Ruby sürümünü destekler. Hangi Ruby sürümlerinin RVM tarafından bilindiğini ve yüklenebilir olduğunu görmek için rvm list known komutunu kullanabilirsiniz. Bu komut, kararlı sürümlerden geliştirme sürümlerine kadar geniş bir yelpazeyi gösterir.

rvm list known

Bu liste, ihtiyacınız olan belirli bir Ruby sürümünü seçmenize yardımcı olur. Genellikle, ruby-3.x.x gibi kararlı sürümler tercih edilir.

Ruby Sürümü Kurma

Belirli bir Ruby sürümünü kurmak için rvm install komutunu kullanırsınız. RVM, seçtiğiniz Ruby sürümünü indirir, derler ve sisteminize kurar. Bu işlem, sunucunuzun işlem gücüne ve internet hızına bağlı olarak biraz zaman alabilir. Örneğin, Ruby 3.1.4 sürümünü kurmak için:

rvm install ruby-3.1.4

RVM, kurulum sırasında gerekli olabilecek ek bağımlılıkları otomatik olarak yüklemenizi isteyebilir. Bu durumda, talimatları takip ederek bu bağımlılıkları yüklemelisiniz. Başarılı bir kurulumun ardından, Ruby’nin yeni sürümü kullanıma hazır olacaktır.

Varsayılan Ruby Sürümünü Ayarlama

Birden fazla Ruby sürümü yüklediğinizde, varsayılan olarak hangi sürümün kullanılacağını belirlemeniz gerekebilir. Bu, her yeni kabuk oturumu açtığınızda otomatik olarak etkinleştirilecek Ruby sürümüdür. Varsayılan Ruby sürümünü ayarlamak için rvm use --default komutunu kullanın:

rvm use ruby-3.1.4 --default

Bu komut, ruby-3.1.4 sürümünü varsayılan olarak ayarlar. Eğer sadece mevcut oturumunuz için bir Ruby sürümünü kullanmak isterseniz, --default bayrağı olmadan rvm use komutunu kullanabilirsiniz:

rvm use ruby-2.7.6

Bu, mevcut kabuk oturumunuz için Ruby 2.7.6’yı etkinleştirir, ancak yeni bir oturum açtığınızda varsayılan Ruby sürümüne geri dönersiniz.

Yüklü Ruby Sürümlerini Listeleme

Sisteminizde RVM aracılığıyla yüklü olan tüm Ruby sürümlerini görmek için rvm list komutunu kullanabilirsiniz. Bu komut, hangi Ruby sürümlerinin etkin olduğunu, hangi sürümün varsayılan olarak ayarlandığını ve diğer yüklü sürümleri gösterir.

rvm list

Çıktıda, yıldız (*) ile işaretlenmiş sürüm mevcut oturumunuzda etkin olanı, => ile işaretlenmiş sürüm ise varsayılan olarak ayarlanmış olanı gösterir. Bu liste, Ruby ortamlarınızı genel bir bakışla yönetmenize yardımcı olur.

Ruby Sürümünü Kaldırma

Artık kullanmadığınız veya yanlışlıkla yüklediğiniz bir Ruby sürümünü kaldırmak isteyebilirsiniz. RVM, bu işlemi de oldukça basitleştirir. Bir Ruby sürümünü kaldırmak için rvm uninstall komutunu kullanın:

rvm uninstall ruby-2.6.10

Bu komut, belirtilen Ruby sürümünü ve onunla ilişkili tüm gemset’leri ve gem’leri sisteminizden kaldırır. Kaldırma işleminden önce dikkatli olmanız önemlidir, çünkü bu işlem geri alınamaz ve ilgili tüm verileri siler.

Gemset’leri Kullanma

RVM’nin Ruby sürümlerini yönetme yeteneği kadar önemli bir diğer özelliği de gemset’lerdir. Gemset’ler, her bir Ruby sürümü altında bağımsız gem koleksiyonları oluşturmanıza olanak tanır. Bu, farklı projelerin aynı Ruby sürümünü kullanmasına rağmen kendi bağımlılık setlerine sahip olmasını sağlar.

Gemset Nedir?

Gemset, belirli bir Ruby sürümü altında izole edilmiş bir gem (Ruby kütüphanesi) koleksiyonudur. Her proje için ayrı bir gemset kullanmak, “bağımlılık çakışması” sorununu ortadan kaldırır. Örneğin, bir projenin Rails 6 ve diğer bir projenin Rails 7 gerektirmesi durumunda, aynı Ruby sürümünü kullanıyor olsalar bile, her bir projenin kendi gemset’inde ilgili Rails sürümünü ve diğer bağımlılıklarını izole edebilirsiniz. Bu, geliştirme ve dağıtım süreçlerinde büyük bir esneklik ve düzen sağlar.

Gemset Oluşturma

Yeni bir gemset oluşturmak için öncelikle kullanmak istediğiniz Ruby sürümünü etkinleştirmeniz gerekir. Ardından rvm gemset create komutunu kullanarak yeni bir gemset oluşturabilirsiniz:

rvm use ruby-3.1.4
rvm gemset create my_project_gems

Bu komutlar, ruby-3.1.4 sürümü altında my_project_gems adında yeni bir gemset oluşturur. Artık bu gemset’e özel gem’ler yükleyebilirsiniz.

Gemset’i Kullanma

Oluşturduğunuz bir gemset’i etkinleştirmek için, Ruby sürümünü ve gemset adını birlikte belirtmeniz gerekir:

rvm use ruby-3.1.4@my_project_gems

Bu komut, mevcut kabuk oturumunuz için ruby-3.1.4 sürümünü ve my_project_gems gemset’ini etkinleştirir. Bu gemset etkin olduğunda yüklediğiniz tüm gem’ler bu gemset içinde depolanır ve diğer gemset’leri veya Ruby sürümlerini etkilemez.

Varsayılan Gemset’i Ayarlama

Tıpkı Ruby sürümlerinde olduğu gibi, belirli bir Ruby sürümü için varsayılan bir gemset de ayarlayabilirsiniz. Bu, o Ruby sürümünü her etkinleştirdiğinizde otomatik olarak belirli bir gemset’in de etkinleştirilmesini sağlar.

rvm use ruby-3.1.4@my_project_gems --default

Bu komut, ruby-3.1.4 sürümü her kullanıldığında my_project_gems gemset’inin varsayılan olarak etkinleştirilmesini sağlar. Bu, proje bazlı ortamları otomatik olarak kurmak için oldukça kullanışlıdır.

Gemset’leri Listeleme

Etkin Ruby sürümünüzle ilişkili tüm gemset’leri listelemek için rvm gemset list komutunu kullanabilirsiniz:

rvm gemset list

Bu komut, o anki Ruby sürümü altında oluşturulmuş tüm gemset’leri ve mevcut oturumda etkin olan gemset’i gösterir. Bu, hangi gemset’lerin mevcut olduğunu ve hangisinin kullanıldığını takip etmenize yardımcı olur.

Gemset’i Silme

Bir gemset’i ve içinde yüklü olan tüm gem’leri silmek için rvm gemset delete komutunu kullanabilirsiniz. Bu işlem geri alınamaz, bu yüzden dikkatli olun:

rvm gemset delete old_project_gems

Bu komut, old_project_gems adındaki gemset’i ve içindeki tüm gem’leri kalıcı olarak siler. Bu, artık ihtiyacınız olmayan proje ortamlarını temizlemenize yardımcı olur.

Proje Bazlı Gemset Kullanımı

RVM, proje dizinlerinde .ruby-version ve .ruby-gemset dosyaları oluşturarak ortam yönetimini otomatikleştirme yeteneğine sahiptir. Bu dosyalar, RVM’ye o dizine girdiğinizde hangi Ruby sürümünü ve gemset’i kullanması gerektiğini söyler.

Örneğin, bir projenin kök dizininde şu dosyaları oluşturabilirsiniz:
.ruby-version dosyası:

ruby-3.1.4

.ruby-gemset dosyası:

my_project_gems

Bu dosyaları oluşturduktan sonra, proje dizinine her girdiğinizde (örneğin cd my_project_dir), RVM otomatik olarak ruby-3.1.4 sürümünü ve my_project_gems gemset’ini etkinleştirecektir. Bu özellik, geliştiricilerin farklı projeler arasında sorunsuz bir şekilde geçiş yapmasını sağlar ve her projenin doğru ortamda çalıştığından emin olur.

Ruby Uygulamalarını RVM ile Dağıtma

RVM, Ruby uygulamalarını VPS üzerinde dağıtırken ortamı doğru bir şekilde kurmanın anahtarıdır. Bu bölüm, RVM’yi kullanarak Ruby uygulamalarınızı nasıl dağıtacağınızı açıklar.

Proje Dizinini Hazırlama

Uygulamanızı dağıtmadan önce, genellikle Git gibi bir sürüm kontrol sistemi kullanarak projenizi VPS’nize klonlamanız gerekir. Ardından, proje dizinine geçiş yapın.

git clone https://github.com/your-username/your-ruby-app.git
cd your-ruby-app

Bu adım, uygulamanızın kaynak kodunu sunucunuza getirir ve çalışma dizininizi ayarlar.

Ruby Sürümünü ve Gemset’i Belirleme

Eğer projenizin kök dizininde .ruby-version ve .ruby-gemset dosyaları varsa, RVM bu dizine girdiğinizde otomatik olarak doğru Ruby sürümünü ve gemset’i etkinleştirecektir. Bu dosyalar yoksa veya manuel kontrol sağlamak isterseniz, rvm use komutunu kullanarak doğru ortamı manuel olarak ayarlamanız gerekir:

rvm use ruby-3.1.4@my_project_gems

Bu, uygulamanızın beklenen Ruby ortamında çalıştığından emin olmak için hayati öneme sahiptir.

Bağımlılıkları Yükleme

Ruby uygulamaları genellikle bundler kullanarak bağımlılıklarını yönetir. Doğru Ruby sürümü ve gemset etkinleştirildikten sonra, uygulamanızın bağımlılıklarını yüklemek için bundle install komutunu çalıştırabilirsiniz:

bundle install --deployment --without development test

--deployment bayrağı, gem’lerin sistem genelinde değil, proje dizini içinde (genellikle vendor/bundle altında) yüklenmesini sağlar, bu da bağımlılıkların izole edilmesine yardımcı olur. --without development test ise üretim ortamında gereksiz olan geliştirme ve test bağımlılıklarını yüklemeyi atlar.

Uygulamayı Çalıştırma

Bağımlılıklar yüklendikten sonra, uygulamanızı çalıştırabilirsiniz. Ruby on Rails uygulamaları genellikle Puma, Unicorn veya Passenger gibi bir uygulama sunucusu ile çalıştırılır. Örneğin, Puma ile bir Rails uygulamasını başlatmak için:

bundle exec rails s -e production -p 3000

Ancak, bir VPS üzerinde genellikle systemd veya Upstart gibi bir init sistemi kullanarak uygulamayı bir servis olarak çalıştırmanız önerilir. Bu, uygulamanızın sunucu yeniden başlatıldığında otomatik olarak başlamasını ve arka planda sürekli çalışmasını sağlar.

Sürekli Çalışan Uygulamalar için RVM

Cron işleri veya sistem servisleri (systemd, Upstart) gibi sürekli çalışan süreçlerde RVM ortamının doğru bir şekilde ayarlandığından emin olmak önemlidir. Bu tür senaryolarda, RVM’nin kabuk entegrasyonu otomatik olarak devreye girmeyebilir. Bu durumu ele almak için iki ana yaklaşım vardır:

1. Tam RVM Ortamını Yüklemek: Betik veya servis tanımınızın başında RVM’nin kabuk betiğini kaynaklayarak tam RVM ortamını yükleyebilirsiniz:

#!/bin/bash
    source /usr/local/rvm/scripts/rvm # veya ~/.rvm/scripts/rvm
    rvm use ruby-3.1.4@my_project_gems
    bundle exec rails runner "MyModel.perform_task"

2. rvm-auto-ruby Kullanımı: RVM, RVM tarafından yönetilen Ruby’yi kullanmak için rvm-auto-ruby adlı bir yardımcı betik sağlar. Bu betik, .ruby-version ve .ruby-gemset dosyalarını kullanarak doğru Ruby ortamını otomatik olarak bulur ve çalıştırır.

#!/bin/bash
    cd /path/to/your/app
    /usr/local/rvm/bin/rvm-auto-ruby bundle exec rails runner "MyModel.perform_task"

Bu yöntem, özellikle cron işleri veya systemd servisleri için daha temiz ve güvenilir bir yol sunar. systemd servisi tanımlarken ExecStart komutunu bu şekilde yapılandırabilirsiniz.

RVM Bakımı ve Sorun Giderme

RVM’yi verimli bir şekilde kullanmak için düzenli bakım yapmak ve karşılaşılabilecek yaygın sorunları nasıl gidereceğinizi bilmek önemlidir.

RVM’yi Güncelleme

RVM, sürekli olarak güncellenir ve geliştirilir. En son özelliklere, hata düzeltmelerine ve güvenlik yamalarına sahip olmak için RVM’yi düzenli olarak güncellemeniz önerilir.

rvm get stable

Bu komut, RVM’nin en kararlı sürümünü indirir ve kurar. Güncelleme işleminden sonra, RVM’nin yeni sürümünün etkin olduğundan emin olmak için kabuk oturumunuzu yeniden kaynaklamanız gerekebilir.

Önbelleği Temizleme

RVM, indirilen Ruby kaynak kodlarını ve diğer geçici dosyaları önbelleğinde saklar. Zamanla bu önbellek büyüyebilir ve disk alanınızı tüketebilir. Önbelleği temizlemek için rvm cleanup komutunu kullanabilirsiniz:

rvm cleanup all

Bu komut, indirilen kaynak kodlarını, derleme günlüklerini ve diğer gereksiz dosyaları silerek disk alanınızı boşaltır.

Derleme Hataları

Yeni bir Ruby sürümünü kurarken derleme hatalarıyla karşılaşmak yaygın bir durumdur. Bu hatalar genellikle eksik sistem bağımlılıklarından kaynaklanır. RVM, bu tür sorunları teşhis etmenize yardımcı olmak için rvm requirements komutunu sağlar:

rvm requirements

Bu komut, mevcut sisteminiz için gerekli olabilecek tüm bağımlılıkları listeler ve bunları nasıl kuracağınıza dair talimatlar verir. Genellikle build-essential, libssl-dev, libreadline-dev, zlib1g-dev gibi paketlerin yüklü olması gerekir. Hata mesajlarını dikkatlice okumak ve Google’da arama yapmak da sorunu çözmenize yardımcı olabilir.

Ortam Değişkenleri Sorunları

Bazen RVM’nin doğru şekilde yüklenmediği veya ortam değişkenlerinin kabuk oturumunuzda düzgün ayarlanmadığı durumlarla karşılaşabilirsiniz. Bu genellikle .bashrc, .zshrc veya .profile gibi kabuk yapılandırma dosyalarının yanlış yapılandırılmasından kaynaklanır.

* RVM’nin doğru bir şekilde kaynaklandığından emin olun: source ~/.rvm/scripts/rvm komutunun kabuk başlangıç betiklerinizde olduğundan emin olun.
* Yeni bir terminal açtıktan sonra rvm -v komutunu çalıştırarak RVM’nin tanınıp tanınmadığını kontrol edin.
* echo $PATH komutuyla PATH ortam değişkeninizi kontrol edin. RVM’nin dizinlerinin PATH’de olduğundan emin olun.

RVM’yi Kaldırma

Eğer RVM’yi sisteminizden tamamen kaldırmak isterseniz, rvm implode komutunu kullanabilirsiniz. Bu komut, RVM’nin kendisini, tüm yüklü Ruby sürümlerini ve gemset’leri sisteminizden siler. Bu işlem geri alınamaz ve tüm RVM ile ilgili verileri kalıcı olarak kaldırır.

rvm implode

Bu komutu çalıştırmadan önce, tüm önemli verilerinizi yedeklediğinizden ve RVM’nin artık gerekli olmadığından emin olun.

RVM Alternatifleri

RVM, Ruby ortamlarını yönetmek için popüler bir araç olsa da, piyasada başka güçlü alternatifler de bulunmaktadır. Bu alternatifler, farklı yaklaşımlar ve özellik setleri sunar.

rbenv

rbenv, RVM’ye popüler bir alternatiftir. RVM’den farklı olarak, rbenv kabuk fonksiyonları yerine “shim” adı verilen küçük betikler kullanarak Ruby sürümlerini yönetir. Bu, rbenv‘in daha az müdahaleci ve daha basit bir yapıya sahip olduğu anlamına gelir. rbenv, gemset’leri doğrudan desteklemez; bunun yerine, bundler ve gem komutlarının kendi izole bağımlılıklarını yönetmesini bekler. rbenv genellikle daha hafif ve esnek olarak kabul edilir, ancak RVM’nin sunduğu bazı kolaylıkları (örneğin otomatik gemset yönetimi) manuel olarak yapılandırmanız gerekebilir.

chruby

chruby, rbenv‘den bile daha basit ve daha hafif bir Ruby sürüm yöneticisidir. Sadece kabuk fonksiyonları kullanarak Ruby sürümleri arasında geçiş yapmanızı sağlar ve gemset’ler veya otomatik geçiş gibi gelişmiş özelliklere sahip değildir. chruby‘nin temel amacı, hızlı ve minimum düzeyde bir Ruby sürüm değiştirme aracı sağlamaktır. Eğer sadece Ruby sürümleri arasında hızlıca geçiş yapmanız gerekiyorsa ve ekstra özelliklere ihtiyacınız yoksa, chruby iyi bir seçenek olabilir.

Her bir aracın kendine özgü avantajları ve dezavantajları vardır. Seçiminiz, kişisel tercihlerinize, projenizin gereksinimlerine ve VPS’nizin kaynaklarına bağlı olacaktır. Ancak RVM, sunduğu kapsamlı özellikler ve kullanım kolaylığı ile birçok geliştirici için hala tercih edilen bir çözümdür.

Sonuç

RVM, bir VPS üzerinde birden fazla Ruby uygulamasını yöneten geliştiriciler için vazgeçilmez bir araçtır. Bu rehberde, RVM’yi nasıl kuracağınızı, farklı Ruby sürümlerini ve gemset’leri nasıl yöneteceğinizi, Ruby uygulamalarınızı nasıl dağıtacağınızı ve RVM bakımını nasıl yapacağınızı ayrıntılı olarak ele aldık. RVM’nin sağladığı izolasyon ve esneklik sayesinde, farklı projelerinizi birbirine karıştırmadan, her birinin kendi gereksinimlerine uygun Ruby ve gem ortamında çalışmasını sağlayabilirsiniz.

Unutmayın ki düzenli bakım, RVM’nin sorunsuz çalışmasını sağlamak için kritik öneme sahiptir. RVM’yi güncel tutmak, önbelleği temizlemek ve derleme hatalarını gidermek, VPS’nizin sağlıklı ve verimli kalmasına yardımcı olacaktır. RVM’nin sunduğu bu güçlü özelliklerle, Ruby geliştirme ve dağıtım süreçlerinizde önemli ölçüde zaman kazanacak ve olası bağımlılık sorunlarını en aza indireceksiniz. RVM’yi etkin bir şekilde kullanarak, VPS’inizdeki Ruby ortamlarınızı tam kontrol altında tutabilir ve projelerinizi güvenle dağıtabilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.