จะป้องกันไม่ให้ Capistrano สร้าง symlink ในไดเรกทอรี 'shared' ในการปรับใช้ได้อย่างไร

ตามค่าเริ่มต้น งาน deploy ของ Capistrano จะสร้างลิงก์สัญลักษณ์จากไดเร็กทอรี shared/log, shared/system และ shared/pids ลงในไดเร็กทอรี release ฉันจะป้องกันสิ่งนี้ได้อย่างไร?


person mjs    schedule 09.11.2011    source แหล่งที่มา


คำตอบ (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
comment
ตามเคล็ดลับของคุณ ฉันได้ตรวจสอบแหล่งที่มาแล้ว และดูเหมือนว่าแม้ว่า :shared_children จะอนุญาตให้คุณเปลี่ยนไดเร็กทอรีที่สร้างขึ้น แต่บิตการเชื่อมโยงที่แท้จริงนั้นทำได้โดยการเข้ารหัสฮาร์ดโค้ดแบบหยาบ: github.com/capistrano/capistrano/blob/ - person mjs; 10.11.2011
comment
จับดี! สอนฉันว่าฉันควรทดสอบข้อเสนอแนะก่อนส่ง ฉันคิดว่าคุณสามารถแทนที่งาน finalize_update เพื่อป้องกันการเชื่อมโยงไดเรกทอรีเหล่านี้ได้ แต่ดูเหมือนจะไม่ใช่วิธีที่ถูกต้อง - person HectorMalot; 11.11.2011
comment
โปรดทราบว่าคำขอดึงนี้ทำให้เป็นเวอร์ชัน 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