ฉันจะติดตั้งอัญมณีท้องถิ่นได้อย่างไร


คำตอบ:


288

เมื่อคุณทำเช่นgem installนั้นมันจะค้นหาไดเรกทอรีปัจจุบันก่อนดังนั้นหากไฟล์. gem ของคุณอยู่ที่นั่นมันจะมารับมัน ฉันพบมันในการอ้างอิงอัญมณีซึ่งคุณอาจพบว่ามีประโยชน์เช่นกัน:

gem install จะติดตั้ง gem ที่มีชื่อ มันจะพยายามติดตั้งภายในเครื่อง (เช่นไฟล์. gem ในไดเรกทอรีปัจจุบัน) และหากไม่สำเร็จจะพยายามดาวน์โหลดและติดตั้งอัญมณีรุ่นล่าสุดที่คุณต้องการ


2
ลิงก์สิ้นสุดในการเปลี่ยนเส้นทางแบบไม่สิ้นสุด :(
Ain Tohvri

2
เช็คอินเพื่อบอกว่านี่ใช้งานได้สำหรับฉันในปี 2019
Charles Wood

1
ฉันมีGemfileแต่ไม่ใช่.gemไฟล์ .gemไฟล์นี้คืออะไร? มันควรมีอะไร? - รอ - ฉันเห็น คุณหมายถึงgem-name.gemไฟล์ จำไว้ว่าในยูนิกซ์เป็นเรื่องปกติที่จะมีไฟล์ขึ้นต้นด้วย '.' ดังนั้นจึงเป็นการดีกว่าที่จะสะกดออก
Martin

ฉันสามารถยืนยันได้จากอนาคตของปี 2020 ลิงก์นี้ใช้งานได้สำหรับฉัน ในกรณีที่มันไม่สามารถทำงานได้ในอนาคตอันไกลนี่คือภาพรวม
Jed Burke

329

นอกจากนี้คุณสามารถใช้ gem install --local path_to_gem/filename.gem

--localนี้จะข้ามปกติอัญมณีสแกนพื้นที่เก็บข้อมูลที่เกิดขึ้นเมื่อคุณออกนอก

คุณสามารถค้นหามายากลอื่น ๆ gem install --helpที่มี


ฉันดาวน์โหลดอัญมณีเช่น rubygems ในรูปแบบ zip ดังนั้นจึงไม่มีไฟล์. gem ที่นี่ ฉันจะติดตั้งสิ่งนี้จากภายในเครื่องได้อย่างไร ขอบคุณ.
Erran Morad

3
@BoratSagdiyev ไฟล์ zip ไม่ใช่อัญมณี เช่นเดียวกับไฟล์ zip ส่วนใหญ่คุณต้องคลายซิปก่อนจึงจะสามารถทำได้หลายอย่าง หากมีอัญมณีคุณสามารถใช้ gem ติดตั้งในไฟล์. gem ที่คลายบีบอัดได้ ฉันจำไม่ได้ว่าภายในของรูปแบบอัญมณี เป็นไปได้ว่าอาจเป็นไฟล์ zip ที่มีส่วนหัวพิเศษ แต่ rubygems ไม่รู้จักไฟล์ zip เช่นนั้น
JasonTrue

62

คุณยังสามารถใช้ชื่อไฟล์แบบเต็มไปยังไฟล์อัญมณีของคุณ:

gem install /full/path/to/your.gem

ใช้งานได้เช่นกัน - อาจเป็นวิธีที่ง่ายที่สุด


38

หากคุณสร้างอัญมณีด้วย Bundler:

# do this in the proper directory
bundle gem foobar

คุณสามารถติดตั้งด้วยเรคหลังจากเขียน:

# cd into your gem directory
rake install

โอกาสที่อัญมณีที่คุณดาวน์โหลดจะต้องรู้rake installเช่นกัน


3
ดูเหมือนว่าคำตอบที่ทันสมัยที่สุด คำตอบที่ยอมรับคือจาก 8 ปีที่แล้ว
sixty4bit

14

หากคุณดาวน์โหลดไฟล์โครงการจาก github หรือไซต์โฮสต์ scm อื่น ๆ ให้ใช้ gem build เพื่อสร้างโครงการก่อนเพื่อให้คุณสามารถรับไฟล์ Anything.gem ในไดเรกทอรีปัจจุบัน จากนั้นติดตั้งอัญมณี!


13

หากคุณต้องการทำงานกับอัญมณีที่ได้รับการดัดแปลงในท้องถิ่นวิธีที่ดีที่สุดคือ

gem 'pry', path: './pry'

ใน Gemfile

... ที่ซึ่ง./pryจะเป็นที่เก็บโคลนของคุณ เรียกใช้เพียงbundle installครั้งเดียวและการเปลี่ยนแปลงใด ๆ ในแหล่งอัญมณีที่คุณทำจะมีผลทันที ด้วยgem install pry/pry.gemแหล่งที่มาจะยังคงถูกย้ายเข้าไปGEM_PATHและคุณจะต้องเรียกใช้ทั้งสองbundle gem pryและgem updateทดสอบ



0

นี่คือการติดตั้งแบบแห้งของฉัน:

  1. มองหาคอมพิวเตอร์ที่มีอัญมณีติดตั้งอยู่แล้วซึ่งจำเป็นในแคชไดเรกทอรี (โดยค่าเริ่มต้น: [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache )
  2. คัดลอก " *.gemsไฟล์" ทั้งหมดไปยังคอมพิวเตอร์โดยไม่มีอัญมณีในตำแหน่งแคชอัญมณีของตนเอง (โดยค่าเริ่มต้นจะใช้เส้นทางผู้อุปถัมภ์เดียวกันในขั้นตอนแรก:[Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache )
  3. ในคอนโซลจะอยู่ในอัญมณีแคช (cd [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache) และดำเนินการgem install anygemwithdependencieshere(ตามตัวอย่างcucumber-2.99.0)

เป็น DRY เพราะหลังจากติดตั้ง gem ใด ๆ โดยค่าเริ่มต้น rubygems จะใส่ไฟล์ gem ลงในไดเร็กตอรี่ cache gem และไม่เหมาะสมกับไฟล์ที่ซ้ำกันมันจะง่ายกว่าถ้าคุณต้องการคอมพิวเตอร์ทั้งสองรุ่นเดียวกัน (หรือ bloqued โดยกฎความปลอดภัย

แก้ไข: ในบางรุ่นของ rubygems หรือ rubygems มันไม่ทำงานและไฟแจ้งเตือนหรือข้อผิดพลาดคุณสามารถใส่อัญมณีในสถานที่อื่น แต่ไม่ได้รับ DRY ทางเลือกอื่นคือการใช้คำสั่งเปิดตัวแบบบูรณาการgem serverและเพิ่ม url localhost ในแหล่งอัญมณี ข้อมูลใน: https://guides.rubygems.org/run-your-own-gem-server/


0

คุณสามารถดาวน์โหลดอัญมณีได้จากhttps://rubygems.org/gems/หรือสร้างอัญมณีประจำท้องถิ่นของคุณผ่านชุดและชั้นวาง

เช่น:

  • มัดอัญมณี yourGemName
  • เรคติดตั้ง

ดูแลการติดตั้งการพึ่งพาก่อนติดตั้งพลอยจริง

  • gem install --local /pathToFolder/xxx-2.6.1.gem

หมายเหตุ: หากใช้ fluentd td-agent และ ruby ​​บนเครื่องเดียวกัน โปรดตรวจสอบให้แน่ใจว่าใช้คำสั่ง td-agent-gem ของ td-agent td-agent มีรูบีของตัวเอง

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