الاحتفاظ بالملفات الثابتة في الخادم عند النشر باستخدام Capistrano
-
06-07-2019 - |
سؤال
أقوم برفع الملفات إلى جهازي public/files
مجلد تطبيق Rails بشكل مستمر من خلال واجهة الويب.
لا أريد الاحتفاظ بها في التحكم بالمصادر نظرًا لأن حجمها يصل إلى 2 جيجابايت تقريبًا، لذلك في كل مرة أقوم فيها بذلك cap deploy
فإنه سيتم حفظ تلك الملفات بعيدا في releases/
واستبدل الدليل بالنسخة الأصلية المخزنة في المستودع.
أتساءل ما هي أفضل طريقة للاحتفاظ بهذه الملفات في الخادم، في ملف current
الدليل.بعض أفكاري هي:
- قم بإزالة الدليل من التحكم بالمصادر واستبدله برابط إلى دليل خارجي لا تتم إدارته بواسطة Capistrano.
- قم بإنشاء مهمة Capistrano لنسخ الدليل إلى /tmp قبل النشر ثم نسخه مرة أخرى إلى /public بعد الانتهاء من النشر.
هل هناك طريقة قياسية للقيام بذلك؟
المحلول
يمكنك إنشاء ارتباط رمزي للملفات إلى دليل آخر على جهازك، على سبيل المثال الدليل /shared على نفس مستوى /current و/releases.
تحقق من أن capistrano يدير الدلائل /log و/tmp.
نصائح أخرى
بالنسبة للسجل المستقبلي، هذه هي المهمة التي استخدمتها للقيام بذلك باستخدام دليل مشترك:
task :link_shared_directories do
run "ln -s #{shared_path}/files #{release_path}/public/files"
end
after "deploy:update_code", :link_shared_directories
يمكننا الآن ببساطة استخدام :linked_files في Deploy.rb:
set :linked_files, %w{config/database.yml}
في هذه الحالة، يجب أن يكون الملف [target_dir]/shared/config/database.yml موجودًا على الخادم.