gem install xx.gem
ฉันมีสองไฟล์อัญมณีซึ่งผมติดตั้งผ่านทาง ฉันสามารถบอก Bundler ให้ใช้งานได้หรือไม่ หรือฉันจะต้องระบุเส้นทางที่มา?
gem install xx.gem
ฉันมีสองไฟล์อัญมณีซึ่งผมติดตั้งผ่านทาง ฉันสามารถบอก Bundler ให้ใช้งานได้หรือไม่ หรือฉันจะต้องระบุเส้นทางที่มา?
คำตอบ:
นี้ไม่ได้เป็นอย่างเคร่งครัดคำตอบสำหรับคำถามของคุณเกี่ยวกับการติดตั้ง.gem
แพคเกจ, แต่คุณสามารถระบุทุกชนิดของสถานที่บนพื้นฐานอัญมณีโดยอัญมณีโดยการแก้ไขของคุณGemfile
:path
ททริบิวต์จะติดตั้งอัญมณีจากพา ธ นั้นในเครื่องของคุณgem "foreman", path: "/Users/pje/my_foreman_fork"
:git
แอตทริบิวต์จะติดตั้ง gem จากที่เก็บ git ระยะไกลgem "foreman", git: "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"
# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"
# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
( ดังที่@JHurrahพูดถึงในความคิดเห็นของเขา )
gem "foreman", :git => "https://github.com/pje/foreman.git"
ดูเหมือนว่า Bundler ไม่สามารถใช้ไฟล์. gem นอกกรอบได้ การชี้ไปที่: เส้นทางไปยังไดเรกทอรีที่มีไฟล์. gem ไม่ทำงาน บางคนแนะนำให้ตั้งค่าเซิร์ฟเวอร์ภายในเครื่อง (geminabox, stickler) เพื่อจุดประสงค์นั้น
อย่างไรก็ตามสิ่งที่ฉันพบว่าง่ายกว่ามากคือการใช้ "เซิร์ฟเวอร์" ในระบบไฟล์จาก gem: เพียงแค่ใส่ไฟล์. gem ของคุณลงในไดเรกทอรีภายในเครื่องจากนั้นใช้ "gem generate_index" เพื่อทำให้มันเป็นที่เก็บของ Gem
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
ในที่สุดก็ชี้ไปที่สถานที่นี้โดยการเพิ่มบรรทัดต่อไปนี้ใน Gemfile ของคุณ
source "file://path/to/repo"
หากคุณอัปเดตพลอยในที่เก็บตรวจสอบให้แน่ใจว่าได้สร้างดัชนีใหม่
gem server
และฉันต้องการโฮสต์โครงการทั้งหมดเพียงแค่ไฟล์. gem
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
ฉันจะเอาอัญมณีของคุณออกจากโฟลเดอร์ผู้ขายแอปพลิเคชัน
gem unpack your.gem --target /path_to_app/vendor/gems/
จากนั้นเพิ่มเส้นทางบน Gemfile เพื่อลิงก์อัญมณีที่ไม่ได้แพ็ค
gem 'your', '2.0.1', :path => 'vendor/gems/your'
โดยค่าเริ่มต้น Bundler จะตรวจสอบระบบของคุณเป็นอันดับแรกและหากไม่พบอัญมณีมันจะใช้แหล่งข้อมูลที่ระบุใน Gemfile ของคุณ
คุณสามารถบังคับให้ Bundler ใช้พลอยที่คุณนำไปใช้โดยใช้ "แพ็คเกจแพ็คเกจ" และ "บันเดิลติดตั้ง --local"
บนเครื่องพัฒนาของคุณ:
bundle install
(ติดตั้งพลอยที่จำเป็นและทำให้ Gemfile.lock)
bundle package
(แคชอัญมณีในผู้ขาย / แคช)
บนเซิร์ฟเวอร์:
bundle install --local
(- เฉพาะหมายความว่า "ใช้อัญมณีจากผู้ขาย / แคช")
bundle install
หลังจากนั้นคัดลอก gemfile ไปยังผู้ขาย / แคชเพิ่มอัญมณีกลับไปที่ gemfile และดำเนินการ bundle install --local
bundle package
เป็นข้อเสนอแนะที่ดีแม้ตอนนี้สามปีต่อมา หากรุ่น Bundler ของคุณเก่ากว่า 2.0 (ยังไม่วางจำหน่ายในการเขียนนี้) คุณจะต้องใช้bundle package --all
หากคุณต้องการรวมอัญมณีด้วยpath
หรือการgit
อ้างอิง มันจะให้คำเตือนที่เป็นประโยชน์หากตรวจพบการพึ่งพาดังกล่าว
--local
เอกสาร: "โปรดทราบว่าหากอัญมณีเฉพาะแพลตฟอร์มที่เหมาะสมมีอยู่ใน rubygems.org จะไม่พบอัญมณี"
การเพิ่ม.gem
ลงไปvendor/cache
ดูเหมือนว่าจะใช้งานได้ Gemfile
ไม่มีตัวเลือกที่จำเป็นในการ