2013-04-29 5 views
8

मैं सिर्फ एक Capistrano हमारे आवेदन के लिए तैनात की स्थापना की है और मैं इस त्रुटि में प्रदर्शन जारी रहे:Capistrano तैनाती की वजह से मैनिफ़ेस्ट फ़ाइल लापता करने में विफल रहता है जब संपत्ति का उपयोग उपसर्ग

* executing ["ls /path/to/app/shared/assets/manifest*"] 
    servers: ["web03"] 
    [web03] executing command 
[err :: web03] ls: /path/to/app/shared/assets/manifest* 
[err :: web03] : No such file or directory 

मैं मैन्युअल के साथ एक मैनिफ़ेस्ट फ़ाइल बनाते हैं touch /path/to/app/shared/assets/manifest.yml, तैनाती स्क्रिप्ट ठीक काम करता है। हालांकि, यह स्केची के सभी प्रकार लगता है।

मैंने इस से बाहर निकल लिया है और जितना मैं इकट्ठा कर सकता हूं वह यह है कि वह जिस मैनिफेस्ट फ़ाइल को ढूंढ रहा है वह संपत्ति पाइपलाइन का एक उत्पाद है। मैंने जांच की और वास्तव में, पाइपलाइन सक्षम है (config.assets.enabled = true), इसलिए मुझे नुकसान हुआ है।

क्या कोई मुझे समझने में मदद कर सकता है 1) यह प्रकट फ़ाइल क्या है और यह कैसे बनाया गया है; और 2) मेरे आवेदन के लिए क्यों नहीं बनाया जा रहा है?

अद्यतन: मुझे लगता है मैं जवाब पर में बंद कर रहा हूँ और मुझे लगता है कि इस लाइन के साथ कुछ है:

config.assets.prefix = "/some_other_path" 

हम "परिसंपत्ति" पथ नाम बदलने के लिए है क्योंकि हम एसेट है जरूरत हमारे सिस्टम में ऑब्जेक्ट्स और मैं अनुमान लगा रहा हूं कि कैप इसके कारण भ्रमित हो रहा है। कोई सुझाव?

उत्तर

15

मेरा संदेह सही था: यह नामित संपत्ति निर्देशिका के साथ एक समस्या थी। कैप के बजाय public/some_other_path में देखने के लिए नहीं पता था।

दूसरे शब्दों में, क्योंकि इस कतार में है मेरी application.rb:

config.assets.prefix = "some_other_path" 

मैं अपने deploy.rb को यह पंक्ति जोड़ने के लिए किया था: जहां एक प्रकट देखने के लिए

set :assets_prefix, "some_other_path" 

फिर, कैप जानता है , इसे shared/assets में कॉपी करता है, और सही ढंग से समाप्त होता है।

deploy.rbconfig वैरिएबल को दूसरी बार हार्ड-कोड करने के बजाय संदर्भित करने के लिए आसान होगा, लेकिन यह इस प्रश्न के दायरे से बाहर है।

0

यदि आप एडब्ल्यूएस साथ कॉन्फ़िगर करते हैं, यहाँ यह होना चाहिए ...

appname/config/environments/production.rb

config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com" 
config.assets.prefix = "/#{ENV['APP_NAME']}/assets" 

appname/config/deploy.rb

... 
set :keep_releases, 5 
set :assets_prefix, ->{ "#{fetch(:application)}/assets" } 

set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" } 
... 
संबंधित मुद्दे