ฉันต้องการให้ Bundler โหลดอัญมณีในท้องถิ่น มีตัวเลือกสำหรับสิ่งนั้นหรือไม่? หรือฉันต้องย้ายโฟลเดอร์อัญมณีไปยังไดเรกทอรี. bundle หรือไม่
ฉันต้องการให้ Bundler โหลดอัญมณีในท้องถิ่น มีตัวเลือกสำหรับสิ่งนั้นหรือไม่? หรือฉันต้องย้ายโฟลเดอร์อัญมณีไปยังไดเรกทอรี. bundle หรือไม่
คำตอบ:
ฉันเชื่อว่าคุณสามารถทำได้:
gem "foo", path: "/path/to/foo"
spring stop
ดูว่าเป็นปัญหาหรือไม่
นอกเหนือจากการระบุเส้นทาง (ตามที่จิมมี่กล่าวไว้) คุณสามารถบังคับให้ Bundler ใช้อัญมณีท้องถิ่นสำหรับสภาพแวดล้อมของคุณเท่านั้นโดยใช้ตัวเลือกการกำหนดค่าต่อไปนี้:
$ bundle config local.GEM_NAME /path/to/local/git/repository
สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณกำลังพัฒนาสองอัญมณีหรือพลอยและแอพพลิเคชั่นรถไฟเคียงข้างกัน
อย่างไรก็ตามโปรดทราบว่าสิ่งนี้ใช้ได้เฉพาะเมื่อคุณใช้ git สำหรับการอ้างอิงของคุณแล้วเช่น:
# In Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In your terminal
$ bundle config local.rack ~/Work/git/rack
BUNDLE_PATH
(สร้างแพคเกจสำหรับการแจกจ่าย) เมื่อทำสิ่งที่คุณแนะนำหรือคำตอบของจิมมี่มันจะทำusing
และไม่ได้ติดตั้งในBUNDLE_PATH
โฟลเดอร์ของฉัน ฉันไม่สามารถคิดออกความช่วยเหลือใด ๆ
bundle config --delete local.GEM_NAME
bundle config disable_local_branch_check true
มิฉะนั้น Bundler จะบ่นเกี่ยวกับสาขา Gemfile.lock
ระมัดระวังกับแม้ว่านี้เช่นการตรวจสอบควรจะหยุดการกระทำที่ไม่ถูกต้องได้รับเป็น เอกสารที่นี่: bundler.io/v1.12/git.html
นอกจากนี้คุณยังสามารถอ้างอิงอัญมณีท้องถิ่นกับคอมไพล์หากคุณกำลังทำงานกับมัน
gem 'foo',
:git => '/Path/to/local/git/repo',
:branch => 'my-feature-branch'
จากนั้นถ้ามันเปลี่ยนฉันก็วิ่ง
bundle exec gem uninstall foo
bundle update foo
แต่ฉันไม่แน่ใจว่าทุกคนต้องใช้สองขั้นตอนนี้
bundle uninstall <gem> && bundle install
สำหรับการเปลี่ยนแปลงทุกอย่างที่คุณต้องการสะท้อนให้เห็นในแอปของคุณ
เพื่อใช้คลังเก็บอัญมณีท้องถิ่นในโครงการ Rails ให้ทำตามขั้นตอนด้านล่าง:
ตรวจสอบว่าโฟลเดอร์ gem ของคุณเป็นที่เก็บ git หรือไม่ (คำสั่งถูกเรียกใช้งานในโฟลเดอร์ gem)
git rev-parse --is-inside-work-tree
การรับพา ธ ที่เก็บข้อมูล (คำสั่งถูกเรียกใช้งานในโฟลเดอร์ gem)
git rev-parse --show-toplevel
การตั้งค่าการแทนที่แบบโลคัลสำหรับแอ็พพลิเคชันทางรถไฟ
bundle config local.GEM_NAME /path/to/local/git/repository
ที่GEM_NAME
เป็นชื่อของอัญมณีของคุณและ/path/to/local/git/repository
เป็นผลลัพธ์ของคำสั่งในจุด2
ในแอปพลิเคชันของคุณGemfile
เพิ่มบรรทัดต่อไปนี้:
gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
การวิ่งbundle install
ควรให้อะไรแบบนี้:
Using GEM_NAME (0.0.1) from git://github.com/GEM_NAME/GEM_NAME.git (at /path/to/local/git/repository)
ที่GEM_NAME
เป็นชื่อของอัญมณีของคุณและ/path/to/local/git/repository
จากจุด2
สุดท้ายbundle list
อย่าวิ่งgem list
และคุณควรเห็นสิ่งนี้:
GEM_NAME (0.0.1 5a68b88)
GEM_NAME
ชื่ออัญมณีของคุณอยู่ที่ไหน
กรณีสำคัญสองสามข้อที่ฉันใช้งานอยู่:
Rails 4.0.2
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Ubuntu 13.10
RubyMine 6.0.3
RubyMine
จะไม่แสดงอัญมณีในพื้นที่เป็นห้องสมุดภายนอก ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดสามารถพบได้ ที่นี่และที่นี่stop/start
ใช้เซิร์ฟเวอร์รถไฟถ้าฉันกำลังเปลี่ยนค่าversion
ของอัญมณีstopping/starting
เซิร์ฟเวอร์ Rails จะแจ้งข้อผิดพลาดให้ฉัน เพื่อแก้ไขมันฉันกำลังระบุรุ่น gem ในแอปพลิเคชันทางรถไฟGemfile
ดังนี้:
gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
คุณสามารถอ้างอิงอัญมณีมีแหล่งที่มา: และมีเส้นทางท้องถิ่นsource: 'https://source.com', git repository (:github => 'git/url')
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับGemfiles และวิธีใช้ในบทความนี้:path => '.../path/gem_name'
หากคุณต้องการสาขาเช่นกัน:
gem 'foo', path: "point/to/your/path", branch: "branch-name"
Only gems with a git source can specify a branch.