Belirli bir mücevherin farklı bir versiyonunu nasıl "etkinleştiririm"?


85

İşletim sistemim için "aktif" taş olarak raylar 2.3.10 arasında geçiş yapmak istiyorum, böylece onu komut satırından çalıştırabilirim.

Bunu yapmak mümkün mü? Rvm kullanmıyorum. Belki başlama zamanıdır.

Denedim gem install rails --version=2.3.10, ama bu sadece gem'in o sürümünün kurulu olduğundan emin oluyor, koymuyor /usr/bin/rails.

(Uygulamalarım için zaten paketleyici kullanıyorum, ancak şimdiye kadar işletim sistemi düzeyinde mücevherler üzerinde hassas bir kontrole ihtiyacım yoktu)

Yanıtlar:


154

Sorununuz belirli bir sürümün ikili dosyalarını çalıştırmaksa, o zaman:

rails --version # => the latest version
rails _2.3.10_ --version # => Rails 2.3.10

Bu pattern ( gem-binary _gem-version_) herhangi bir mücevher ikili dosyası için çalışır.

Umarım yardımcı olur.


1
Oh, bu beni ofiste uzun bir hafta sonu kurtardı, teşekkürler!
Lachlan McD.

2
Bu hepsi için işe yaramıyor gibi görünüyor: rackup _1.4.3_ --version<br> Rack 1.1 (Release: 1.4)
Chloe

1
rafa yalnızca yayın sürümünü yazdırır (bkz. Rack.versionve Rack.release github.com/rack/rack/blob/master/lib/rack.rb ). Deneyin gem install rack --version=1.3 && rackup _1.3.0_ --version, yazdıracakRack 1.1 (Release: 1.3)
Daniel Vartanov

Her ihtimale karşı, işte şu şekilde çalışıyor:which rackup | xargs cat
Daniel Vartanov

12

RVM kullan

RVM, Ruby ve Gems'in farklı sürümlerini yönetmenize izin verir. Örneğin, Ruby'nin bir sürümünü kurabilirsiniz.

rvm install 1.9.2

Daha sonra bunu kullanarak kullanabilirsiniz:

rvm use 1.9.2

Mücevher setleriyle proje bazında belirli mücevherleri kullanın.

Daha fazla ad aralığı istiyorsanız, değerli taşlar kurabilirsiniz; Belirli bir proje için belirli mücevherler içerecek dizinler.

rvm gemset create myproject

sonra bunları şu şekilde kullanabilirsiniz:

rvm use 1.9.2@myproject

Otomasyon

Mücevher değiştirme işlemini otomatikleştirmek için proje kökünüzde .ruby-version ve .ruby-gemset dosyalarını açın. Ruby'nin sürümünü ve içinde kullanmak istediğiniz mücevher setinin adını açın ve RVM, proje dizininize cd koyduğunuzda doğru mücevher setini seçecektir.

Mücevher setinize mücevher yükleme

Taşlarınızı, paketleyiciyi kullanıyorsanız her zamanki gibi mücevher setinize yükleyin:

bundle install

veya sadece normal eskiyi kullanarak:

gem install mygem

Taşlar doğru mücevher setine girecek.

RVM Alternatifleri

Aynı işi yapan rbenv'e de göz atmak isteyebilirsiniz.


1
rvm ile ilgili sorun (bahsettiğiniz gibi) ruby ​​sürümlerini ve gem sürümlerini ele almasıdır. rbenv yalnızca ruby ​​sürümlerini işler ve paketleyicinin mücevher sürümlerini işlemesine izin verir.
daslicious

7

RVM'yi kullanabilirsiniz

Ardından , daha sonra mücevher bağımlılıklarını iyi yöneten Bundler'ı da kullanabilirsiniz .

Senin içinde Gemfile

gem "rails", "2.3.10"

ve uygulamanızda

require 'rubygems'
require 'bundler/setup'

ve bitirdiniz.


Buna ek olarak, bazı betiklerin yalnızca Gemfile'ınızda belirtilen sürümleri "görmesini" istiyorsanız, bunları "bundle exec <script-name>" olarak çalıştırın, örneğinbundle exec warble
rustyx

3

DÜZENLEME: Gönderide RVM'den bahsettiğinizi gördüm. Kesinlikle gidilecek yol.

RVM'yi kurmak isteyeceksiniz - bu, aynı makinede farklı Ruby'leri ve farklı mücevher setlerini yönetmenize izin verecek harika bir paket. Tamamen kolaylıkla ileri geri geçiş yapabilirsiniz.

İşte kurulum kılavuzu: http://rvm.beginrescueend.com/rvm/install/

Her şeyi aldıktan sonra, yüklü ruby'lerin tümünü komut satırında ile görebilir rvm listve rvm use ruby-headörneğin ile geçiş yapabilirsiniz . RVM, her bir yakuttaki mücevherleri ayrı tutar, bu da sorunuza yardımcı olur.

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.