2010-04-03 8 views
7

मैं एक RoR ऐप को तैनात करने के लिए Capistrano और गिट का उपयोग कर रहा हूँ। मेरे पास एक फ़ोल्डर है जिसके अंतर्गत प्रत्येक उपयोगकर्ता का अपना फ़ोल्डर होता है। जब कोई उपयोगकर्ता फ़ाइल अपलोड या सहेजता है, तो यह अपने फ़ोल्डर में सहेजा जाता है।मैं कैपिस्ट्रानो को अपने स्वयं के फ़ोल्डरों में उपयोगकर्ताओं द्वारा अपलोड की गई फ़ाइलों को ओवरराइट करने से कैसे रोकूं?

जब मैं सर्वर के कोड के नए संस्करणों को तैनात करता हूं, तो उपयोगकर्ता फ़ाइलों और फ़ोल्डरों को मेरी dev मशीन पर क्या लिखा जाता है, इसके साथ ओवरराइट किया जाता है।

कैपिस्ट्रानो में कुछ फ़ोल्डरों को अनदेखा करने का कोई तरीका है, जैसे कि हम गिट में करते हैं? यह पोस्ट - http://www.ruby-forum.com/topic/97539 - सिमलिंक का उपयोग करने और साझा फ़ाइलों में उपयोगकर्ता फ़ाइलों को संग्रहीत करने का सुझाव देता है। लेकिन यह एक पुरानी पोस्ट है, इसलिए मैं सोच रहा हूं कि अब इसे करने का बेहतर तरीका है या नहीं।

इसके अलावा, क्या कोई भी RoR + git + capistrano का उपयोग करने के लिए अनुशंसा करने के लिए किसी भी अच्छे स्क्रीनकास्ट/ट्यूटोरियल के बारे में जानता है?

धन्यवाद।

उत्तर

10

आपको उपयोगकर्ता के फ़ोल्डरों को कैपिस्ट्रानो की releases निर्देशिका से बाहर ले जाना चाहिए। सामान्य दृष्टिकोण यह है कि कैपिस्ट्रानो निर्देशिकाओं के लिए प्रतीकात्मक लिंक बनाते हैं जिन्हें तैनाती में संरक्षित किया जाना चाहिए।

यहाँ मेरी रेल ब्लॉग आवेदन के config/deploy.rb जिससे पदों के भीतर इस्तेमाल ब्लॉग पोस्ट और छवियों के भीतर डाउनलोड के लिए फ़ाइलों को एक shared निर्देशिका में जमा हो जाती है से एक उदाहरण है:

after :deploy, 'deploy:link_dependencies' 

namespace :deploy do 
    desc <<-DESC 
    Creates symbolic links to configuration files and other dependencies 
    after deployment. 
    DESC 
    task :link_dependencies, :roles => :app do 
    run "ln -nfs #{shared_path}/public/files #{release_path}/public/files" 
    run "ln -nfs #{shared_path}/public/images/posts #{release_path}/public/images/posts" 
    end 
end 
  • अपने दूसरे सवाल का जवाब करने के लिए, मैं PeepCode की सिफारिश और Railscasts
+0

धन्यवाद जॉन, तब प्रतीकात्मक लिंक यह है। –

0

यह बहुत देर हो चुकी है लेकिन मैं इस समस्या में भाग गया। मैं रेल 5 और capistrano 3.6 का उपयोग करें। मैंने साझा फ़ोल्डर में symlink बनाकर इस समस्या को हल किया।

आप पहले से ही आप सार्वजनिक/images/user_images में उपयोगकर्ता के चित्रों को सहेजने और उसके बाद (एक स्थान के साथ फ़ोल्डर का नाम जोड़ने के साझा फ़ोल्डर में यह सिमलिंक चाहते हैं अपने deploy.rb

set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle} 

में इस लाइन हो सकता है इस तरह):

set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/images/user_images} 

अब cap production deploy चलाने के लिए और आप साझा फ़ोल्डर में छवियों उपयोग करने में सक्षम होना चाहिए।

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

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