2008-11-04 13 views
6

के साथ तैनाती करते समय सर्वर में स्थैतिक फ़ाइलों को रखते हुए मैं एक वेब इंटरफेस के माध्यम से निरंतर आधार पर अपने public/files रेल अनुप्रयोग के फ़ोल्डर में फ़ाइलें अपलोड कर रहा हूं।Capistrano

मैं इन्हें लगभग 2 जीबी तक जाने के बाद स्रोत नियंत्रण में रखना नहीं चाहता, इसलिए हर बार जब मैं cap deploy करता हूं तो यह उन फ़ाइलों को releases/ में सहेज लेगा और निर्देशिका में संग्रहीत प्राचीन प्रतिलिपि के साथ निर्देशिका को प्रतिस्थापित करेगा ।

मुझे आश्चर्य है कि current निर्देशिका में उन फ़ाइलों को सर्वर में रखने का सबसे अच्छा तरीका क्या है। मेरे कुछ विचार हैं:

  • स्रोत नियंत्रण से निर्देशिका को हटाएं और इसे बाहरी निर्देशिका के लिंक से प्रतिस्थापित करें जो कैपिस्ट्रानो द्वारा प्रबंधित नहीं है।
  • तैनाती से पहले/tmp निर्देशिका को कॉपी करने के लिए एक कैपिस्ट्रानो कार्य बनाएं और फिर इसे तैनात करने के बाद इसे वापस/सार्वजनिक रूप से कॉपी करें।

क्या ऐसा करने का कोई मानक तरीका है?

उत्तर

6

आप फ़ाइलों को अपनी मशीन पर दूसरी निर्देशिका में एक सिम्लिंक बना सकते हैं, उदाहरण के लिए/वर्तमान/रिलीज़ के समान स्तर पर साझा/साझा निर्देशिका।

देखें कैपिस्ट्रानो/लॉग और/tmp निर्देशिकाओं का प्रबंधन करता है।

task :link_shared_directories do  
    run "ln -s #{shared_path}/files #{release_path}/public/files" 
end  

after "deploy:update_code", :link_shared_directories 
7

भविष्य रिकॉर्ड के लिए, इस कार्य को मैं एक साझा निर्देशिका के साथ यह करने के लिए प्रयोग किया जाता है इस मामले में, फ़ाइल [target_dir] /shared/config/database.yml सर्वर पर मौजूद होना चाहिए।

2

अब हम बस का उपयोग कर सकते हैं:: deploy.rb में linked_files:

set :linked_files, %w{config/database.yml} 

में

संबंधित मुद्दे