ตามค่าเริ่มต้น งาน deploy
ของ Capistrano จะสร้างลิงก์สัญลักษณ์จากไดเร็กทอรี shared/log
, shared/system
และ shared/pids
ลงในไดเร็กทอรี release ฉันจะป้องกันสิ่งนี้ได้อย่างไร?
จะป้องกันไม่ให้ Capistrano สร้าง symlink ในไดเรกทอรี 'shared' ในการปรับใช้ได้อย่างไร
คำตอบ (2)
หากคุณดูที่ซอร์สโค้ดสำหรับ ปรับใช้สูตรที่บรรทัด 52 คุณสามารถดู:
=========================================================================
These variables should NOT be changed unless you are very confident in
what you are doing. Make sure you understand all the implications of your
changes if you do decide to muck with these!
=========================================================================
...
_cset :shared_children, %w(system log pids)
...
นี่คือวิธีการกำหนดโฟลเดอร์ที่ใช้ร่วมกัน ฉันคิดว่าคุณสามารถเพิ่มบรรทัดต่อไปนี้ลงในสูตร capistrano ของคุณเพื่อป้องกันไม่ให้ไดเรกทอรีเหล่านี้เชื่อมโยงกัน:
set :shared_children, %w()
อัปเดต: เกี่ยวกับความคิดเห็นด้านล่าง: ด้วย capistrano เวอร์ชัน Edge ตอนนี้น่าจะใช้งานได้แล้ว ดูคำขอดึงนี้ เพื่อทำให้ symlink มีฮาร์ดโค้ดน้อยลง
person
HectorMalot
schedule
10.11.2011
ตามเคล็ดลับของคุณ ฉันได้ตรวจสอบแหล่งที่มาแล้ว และดูเหมือนว่าแม้ว่า
:shared_children
จะอนุญาตให้คุณเปลี่ยนไดเร็กทอรีที่สร้างขึ้น แต่บิตการเชื่อมโยงที่แท้จริงนั้นทำได้โดยการเข้ารหัสฮาร์ดโค้ดแบบหยาบ: github.com/capistrano/capistrano/blob/
- person mjs; 10.11.2011
จับดี! สอนฉันว่าฉันควรทดสอบข้อเสนอแนะก่อนส่ง ฉันคิดว่าคุณสามารถแทนที่งาน
finalize_update
เพื่อป้องกันการเชื่อมโยงไดเรกทอรีเหล่านี้ได้ แต่ดูเหมือนจะไม่ใช่วิธีที่ถูกต้อง
- person HectorMalot; 11.11.2011
โปรดทราบว่าคำขอดึงนี้ทำให้เป็นเวอร์ชัน 2.10 (และไม่ได้อยู่ในเวอร์ชัน 2.9) คุณอาจต้องอัปเดต capistrano ของคุณด้วย: Bundle update capistrano
- person Mike Schroll; 23.05.2012
เป็นไปไม่ได้ที่จะหลีกเลี่ยงสัญลักษณ์เหล่านี้ มันทำได้โดยการเข้ารหัสยากที่ค่อนข้างหยาบ (!) ใน deploy.rb
อาจได้รับการแก้ไขใน capistrano 2.10; ดู วิธีป้องกันการสร้าง Capistrano symlink ในไดเร็กทอรี 'shared' ในการปรับใช้หรือไม่
person
mjs
schedule
16.11.2011