Bagaimana mencegah Capistrano menghasilkan symlink di direktori `bersama` saat penerapan?

Secara default, tugas deploy Capistrano membuat symlink dari direktori shared/log, shared/system dan shared/pids ke dalam direktori rilis. Bagaimana saya bisa mencegah hal ini?


person mjs    schedule 09.11.2011    source sumber


Jawaban (2)


Jika Anda melihat kode sumber untuk menyebarkan resep di baris 52, Anda dapat melihat:

=========================================================================
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)
...

Ini adalah bagaimana folder bersama didefinisikan. Saya kira Anda dapat menambahkan baris berikut ke resep capistrano Anda untuk mencegah direktori ini disinkronkan:

set :shared_children, %w()

Pembaruan: Mengenai komentar di bawah: Dengan capistrano versi edge, ini sekarang seharusnya dapat berfungsi. Lihat permintaan penarikan ini untuk membuat symlink tidak terlalu sulit dikodekan.

person HectorMalot    schedule 10.11.2011
comment
Mengikuti tip Anda, saya memeriksa sumbernya, dan tampaknya meskipun :shared_children memungkinkan Anda mengubah direktori yang dibuat, bit symlinking sebenarnya dilakukan oleh beberapa hardcoding kasar: github.com/capistrano/capistrano/blob/ - person mjs; 10.11.2011
comment
Tangkapan yang bagus! Mengajari saya bahwa saya harus menguji saran saya sebelum mengirimkannya. Saya kira Anda dapat mengganti tugas finalize_update untuk mencegah menghubungkan direktori-direktori ini, tetapi sepertinya itu bukan cara yang tepat. - person HectorMalot; 11.11.2011
comment
Sekadar catatan bahwa permintaan tarik ini berhasil masuk ke versi 2.10 (dan bukan di versi 2.9) Anda mungkin perlu memperbarui capistrano Anda dengan: bundle update capistrano - person Mike Schroll; 23.05.2012

Tidak mungkin menghindari symlink ini; itu dilakukan oleh beberapa hard-coding yang cukup kasar (!) di deploy.rb

Mungkin telah diperbaiki di capistrano 2.10; lihat Cara mencegah pembuatan Capistrano symlink di direktori `bersama` saat penerapan?.

person mjs    schedule 16.11.2011