الاحتفاظ بالملفات الثابتة في الخادم عند النشر باستخدام Capistrano

StackOverflow https://stackoverflow.com/questions/263026

سؤال

أقوم برفع الملفات إلى جهازي 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 موجودًا على الخادم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top