ฉันจะ "เปิดใช้งาน" อัญมณีเวอร์ชันอื่นได้อย่างไร


85

ฉันต้องการสลับระหว่างราง 2.3.10 เป็นอัญมณีที่ "ใช้งานอยู่" สำหรับระบบปฏิบัติการของฉันเพื่อที่ฉันจะได้เรียกใช้ที่บรรทัดคำสั่ง

เป็นไปได้ไหมที่จะทำเช่นนี้? ฉันไม่ได้ใช้ rvm อาจถึงเวลาเริ่มต้น

ฉันพยายามแต่ที่จะทำให้แน่ใจว่ารุ่นของอัญมณีที่มีการติดตั้งก็ไม่ได้ใส่ไว้ในgem install rails --version=2.3.10/usr/bin/rails

(ฉันใช้บันเดิลเลอร์สำหรับแอพของฉันอยู่แล้ว - แต่ยังไม่ต้องการการควบคุมอัญมณีที่แม่นยำในระดับ OS จนถึงตอนนี้)

คำตอบ:


154

หากปัญหาของคุณคือการเรียกใช้ไบนารีของบางเวอร์ชันให้ทำดังนี้

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

รูปแบบนี้ ( gem-binary _gem-version_) ใช้ได้กับไบนารีอัญมณีใด ๆ

หวังว่าจะช่วยได้


1
โอ้นี่เพิ่งช่วยฉันได้ในวันหยุดยาวในออฟฟิศขอบคุณ!
Lachlan McD.

2
ดูเหมือนจะใช้ไม่ได้กับทุกคน: rackup _1.4.3_ --version<br> Rack 1.1 (Release: 1.4)
Chloe

1
แร็คอัพพิมพ์เฉพาะเวอร์ชันรีลีส (ดูRack.versionและRack.release github.com/rack/rack/blob/master/lib/rack.rb ) ลองgem install rack --version=1.3 && rackup _1.3.0_ --versionพิมพ์Rack 1.1 (Release: 1.3)
Daniel Vartanov

และในกรณีนี้คือวิธีการทำงาน:which rackup | xargs cat
Daniel Vartanov

12

ใช้ RVM

RVM ช่วยให้คุณจัดการ Ruby and Gems เวอร์ชันต่างๆได้ คุณสามารถติดตั้งเวอร์ชันของทับทิมโดยใช้ตัวอย่างเช่น

rvm install 1.9.2

จากนั้นคุณสามารถใช้งานได้โดยใช้:

rvm use 1.9.2

ใช้อัญมณีเฉพาะในแต่ละโครงการด้วยอัญมณี

หากคุณต้องการเนมสเปซเพิ่มเติมคุณสามารถตั้งค่าอัญมณี ไดเรกทอรีที่จะมีอัญมณีเฉพาะสำหรับโครงการเฉพาะ

rvm gemset create myproject

จากนั้นคุณสามารถใช้งานได้ดังนี้:

rvm use 1.9.2@myproject

ระบบอัตโนมัติ

หากต้องการทำให้กระบวนการสลับอัญมณีเป็นไปโดยอัตโนมัติให้เปิดไฟล์. ruby-versionและ.ruby-gemsetในรูทโปรเจ็กต์ของคุณ เปิดเวอร์ชันของ Ruby และชื่อของอัญมณีที่คุณต้องการใช้ภายในพวกเขาจากนั้น RVM จะเลือกอัญมณีที่ถูกต้องเมื่อคุณซีดีลงในไดเร็กทอรีโปรเจ็กต์ของคุณ

การติดตั้งอัญมณีลงในอัญมณีของคุณ

ติดตั้งอัญมณีของคุณลงในอัญมณีของคุณตามปกติโดยใช้บันเดิลเลอร์หากคุณใช้งาน:

bundle install

หรือเพียงแค่ใช้แบบเก่าปกติ:

gem install mygem

อัญมณีจะไปอยู่ในอัญมณีที่ถูกต้อง

ทางเลือก RVM

คุณอาจต้องการตรวจสอบ rbenv ซึ่งทำงานคล้ายกัน


1
ปัญหาเกี่ยวกับ rvm คือ (ตามที่คุณกล่าวถึง) ที่จัดการรุ่นทับทิมและรุ่นอัญมณี rbenv จัดการเวอร์ชันทับทิมและให้บันเดิลจัดการกับเวอร์ชันอัญมณี
daslicious

7

คุณสามารถใช้RVM

หลังจากนั้นคุณยังสามารถใช้Bundlerซึ่งจัดการการอ้างอิงอัญมณีได้ดี

ในไฟล์ Gemfile

gem "rails", "2.3.10"

และในใบสมัครของคุณ

require 'rubygems'
require 'bundler/setup'

และเสร็จแล้ว


นอกจากนี้หากคุณต้องการให้สคริปต์บางสคริปต์ "เห็น" เวอร์ชันที่ประกาศใน Gemfile ของคุณให้เรียกใช้เป็น "bundle exec <script-name>" เช่นbundle exec warble
rustyx

3

แก้ไข: เพิ่งเห็นการพูดถึง RVM ของคุณในโพสต์ ทางไปแน่นอน

คุณจะต้องติดตั้งRVMซึ่งเป็นแพ็คเกจที่ยอดเยี่ยมที่จะช่วยให้คุณจัดการ Rubys และอัญมณีต่างๆในเครื่องเดียวกันได้ คุณสามารถสลับไปมาได้อย่างง่ายดาย

นี่คือคู่มือการติดตั้ง: http://rvm.beginrescueend.com/rvm/install/

เมื่อคุณมีทุกอย่างเรียบร้อยแล้วคุณสามารถดูทับทิมที่ติดตั้งทั้งหมดได้ที่บรรทัดคำสั่งด้วยด้วยrvm listและสลับไปrvm use ruby-headมาเช่น RVM แยกอัญมณีในทับทิมแต่ละเม็ดออกจากกันซึ่งจะช่วยตอบคำถามของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.