bundler - RVM - Mücevher - RubyGems - Mücevher - Sistem Ruby - Sistem Ruby [kapalı]


102

Ruby'de yeniyim ve kafamı şu kavramlar etrafında sarmalamaya çalışıyorum: paketleyici, RVM, mücevher, RubyGems, mücevher setleri, sistem ovma ve kafam karıştı.

Ubuntu'nun en son sürümünün yeni bir yüklemesinde tüm bunları nasıl yönetmem gerektiğine dair bir 'en iyi uygulama' açıklayabilir mi? Ne kurmalıyım ve hepsini nasıl kullanmalıyım?

A yapmanın sudo apt-get install rubytavsiye edilmediğini tahmin ediyorum , ancak emin değilim. Sistemimde 'tüm diğer Ruby şeylerine' ek olarak denedim. Bu sadece kafa karışıklığıma katkıda bulunuyor. Ben Rails'den bahsetmiyorum, sadece sıradan Ruby taşlarından (örn. Vagrant, Chef, scriptler) bahsediyorum.

Yanıtlar:


185

Bir önceki cevaba göre, bunu kapsayacak çok şey var, bu yüzden bunu kısa bir giriş olarak düşünün.

mücevherler , Ruby kitaplıklarının paketlenme şeklidir. Java için kavanozlar ne ise Ruby için öyleler. Bir gem dosyasında, Ruby kodunu (.rb dosyaları), ama aynı zamanda testleri ve adı, bağımlılıkları ve sürümü ( gemspec )gibi gem hakkında bilgi veren özel bir dosya bulursunuz . Herhangi bir Ruby projesi,sadece bağımlılıkları bildirmesi gerekenbir Gemfile aracılığıyla ihtiyaç duyduğu mücevherleri tanımlayabilir. Rubygems , paket yöneticisinin adıdır - paketleri kurmak için kullanılan araç (mücevherler paketlerin kendisidir). Rubygems artık Ruby'nin bir parçası.

Bundler , değerli taşların yönetimini katlanılabilir kılan şeydir. Gemfile'ınıza bağlı olarak, paket yüklemeyi kullanan basit bir paketleyici çağrısı, gerekli tüm mücevherleri indirip yükleyecektir. Standart gem komutunu kullanarak, her birini manuel olarakgem install <gem_name>. Bundler, Ruby'nin bir parçası değildir (kendisi bir mücevher olarak paketlenmiştir ), ancak çoğu uygulama için "fiili bir standarttır" (onu kullanmayan pek çok insan bulamayacaksınız ve aslında kullanmamak için iyi bir neden bulamayacaksınız).

RVM , Ruby'nin birden çok sürümünü bir makineye kurmanıza ve gerektiğinde aralarında geçiş yapmanıza olanak tanıyan bir araçtır. Bu, hem bir Ruby 1.8 hem de 1.9, hatta bir "MRI" (Matz's Ruby, varsayılan uygulama) ve alternatifler (JRuby veya Rubinius gibi) kurmak için kullanılabilir. RVM'nin bu alanda yalnız olmadığını unutmayın, örneğin bkz . Rbenv .

Bir gemset RVM belirli bir bağlamda, tipik olarak bir projeye taşlar spesifik bir kümesidir. Bu, örneğin her biri kendi mücevher setlerine sahip farklı uygulamalar geliştiriyorsanız ve bunları ayrı tutmak istiyorsanız kullanışlıdır.

sistem Ruby , RVM kullanılırken makineye kurulan Ruby sürümüdür (yani, RVM aracılığıyla değil).

Yeni başlıyorsanız, mücevherler ve paketleyici sizi ilgilendirir. RVM ve mücevher setlerini şimdilik bir kenara bırakabilirsiniz.


1
İyi yanıt, lütfen açıklığa kavuşturur musunuz: Değerli taşlar ile RubyGems arasındaki fark nedir? Ve gemspec ve Gemfile arasında? Ayrıca, yukarıda listelenen bu programlardan (örn. Paketleyici) hangisi 'Ruby'ye dahildir ve hangileri ayrı uygulamalardır (RVM'nin ayrı olduğuna inanıyorum)? Ve gemset yalnızca RVM içinde bir kavram mıdır yoksa çekirdek Ruby içinde mi (veya diğer yanıtta bahsedilen rbenv gibi başka şeyler) mi? Ve eğer paketleyici değerli taşları yönetmeyi kolaylaştırırsa, bunu yapmanın önceden paketleyici yolu neydi? (yani, paketleyici olmadan mücevherleri nasıl yönetirsiniz, sadece bileyim, bunu asla böyle yapmasam bile.) Teşekkürler!
user779159

Yani Rubygems, 'gem' komutuyla çağırdığınız paket yöneticisinin adı mı? Ve paketleyici de Rubygems gibi Ruby'nin kendisinin bir parçası mı yoksa onu bir şekilde eklemem mi gerekiyor?
user779159

2
"Eğer yeni başlıyorsanız ... RVM'yi şimdilik bir kenara bırakabilirsiniz." OS X'te değilseniz ve yüklemek ve çalıştırmak istediğiniz Ruby projesi, İşletim Sistemine önceden yüklenmiş olarak gelen Ruby'den daha sonraki bir Ruby sürümüne bağlıdır. O zaman RVM'ye ihtiyacınız olacak.
Hephaestus

Bu doğru değil: "Standart gem komutunu kullanarak, her birini manuel olarak kurmanız gerekir." Gemfile'daki tüm mücevherleri kesinlikle tek bir komut "gem install" kullanarak yükleyebilirsiniz
Andy

1

Bir soruda Stack Overflow için kapsam dahilinde olandan daha fazla bilgi istiyorsunuz. Her şeyi örtmek için bir kitap gerekir.

Ubuntu'da, Ruby'nin "sistem" sürümüne mücevherleri yüklemek ve kaldırmak kolaydır, bu nedenle, üzerinden normal mücevherleri kurmaya ve kaldırmaya alışın sudo. (Mac OS'de farklı bir tavsiye verirdim çünkü Apple Ruby'yi kendi kullanımları için bir araya getiriyor ve onunla uğraşmak harika bir fikir değil.) Sonra, tüm cevher fikrinin nasıl çalıştığı hakkında bir fikriniz olduğunda ve birden fazla Sisteminizdeki Ruby sürümleri, " rbenv " veya " RVM " yi deneyin ve sandbox'ınıza bir veya iki sürümü kurun.

Linux, bir dağıtım yoluyla Ruby eklemeyi / kaldırmayı kolaylaştırır, ancak biz dağıtım yöneticilerinin paketlediği sürümlerle sınırlıyız, bu yüzden genellikle kaynaktan yüklerim. Ancak, geliştirme, test ve üretim sistemleri için Ruby'nin çeşitli sürümlerini yönetirken bu bir acıdır, bu nedenle rbenv ve RVM icat edildi - programlamaya konsantre olmamızı sağlayan kirli ayrıntıları ele alıyorlar.

Her ikisi de kullandım rbenv ve RVM ve iyi sonuçlar ile, son altı ay kadar rbenv kullanarak olmuştur. Sevdiğim RVM'den daha az karmaşık. Her iki durumda da, ayrı Mücevher setleriyle farklı sürümlerin kurulmasını kolaylaştırırlar. İsterseniz farklı terminal pencerelerinde farklı Ruby sürümlerine sahip olabilirsiniz, bu da uyumluluğu test etmeyi kolaylaştırır.

Hata ayıklarken birinci kural, her seferinde bir değişiklik yapmaktır; bu, yeni bir dil programlamayı veya öğrenmeyi öğrenmek için doğrudur. Dikkatinizi dağıtmayın, sadece basit tutun.


1
Varsayılan sistem paket yöneticiniz (ör. Apt veya apt-get) dışında herhangi bir paket yöneticisini asla sudo yapmayın. Kaçınılmaz olarak sisteminizi bozacaksınız.
görüntü
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.