2011-12-08 19 views
9

मैं रेल 3.1.3 चला रहा हूं, जिसमें स्प्राकेट्स 2.0.3 निर्भरता के रूप में शामिल है।स्टेजिंग पर रेल संपत्ति परिसंपत्ति पाइपलाइन: सही फिंगरप्रिंट लेकिन 404ing

मैंने अपने स्टेजिंग वातावरण को स्थापित करने के लिए रेल गाइड गाइड के तरीके को कॉन्फ़िगर करने के तरीके को कॉन्फ़िगर किया है।

config.serve_static_assets = false 
config.assets.compress = true 
config.assets.compile = false 
config.assets.digest = true 

मैं अपने Capfile

load 'deploy' 
load 'deploy/assets' 

में शामिल किया है और संपत्ति तैनाती पर अपेक्षा के अनुरूप precompiled मिलता है।

सार्वजनिक/संपत्तियों में, मुझे फिंगरप्रिंट के साथ अपेक्षित संपत्ति मिलती है।

application-bd402855d34fb61e0a1690da06f79f20.js 
application-bd402855d34fb61e0a1690da06f79f20.js.gz 
application-ed3f9a8d23992790841c11b6692fb576.css 
application-ed3f9a8d23992790841c11b6692fb576.css.gz 
...and a bunch of images... 

जब मैं पृष्ठ लोड करता हूं, तो मुझे सही संदर्भ, फिंगरप्रिंट और सभी दिखाई देते हैं।

<link href="/assets/application-ed3f9a8d23992790841c11b6692fb576.css" media="screen" rel="stylesheet" type="text/css"> 
<script src="/assets/application-bd402855d34fb61e0a1690da06f79f20.js" type="text/javascript"></script> 

हालांकि, सब कुछ 404s, सीएसएस, जेएस, छवियों, सबकुछ।

कोई भी जानता है कि सौदा क्या है? धन्यवाद!

+0

क्या आप 'उत्पादन' के रूप में स्टेजिंग चला रहे हैं या आपके पास एक staging.rb कॉन्फ़िगरेशन फ़ाइल है? यदि ऐसा है, तो आपके पास सही पाइपलाइन विकल्प नहीं हो सकते हैं। –

+0

स्टेजिंग उपरोक्त कॉन्फ़िगरेशन विकल्पों के साथ स्थापित की गई है, जो रेल गाइड गाइड के लिए सुझाव देता है। मुझे बहुत वही व्यवहार चाहिए। क्या यह सही नहीं है? – cotopaxi

+0

यह ठीक होना चाहिए। मैं इसके बारे में कुछ और सोचूंगा ... –

उत्तर

0
config.assets.compile = false 

होना चाहिए:

config.assets.compile = true 

इसके अलावा, सुनिश्चित करें कि आपके कैश को साफ़ करें:

bundle exec rake tmp:cache:clear 

और सर्वर को पुनरारंभ करें।

+2

परिसंपत्तियों पर ऑन-द-फ्लाई संकलन खराब प्रदर्शन की ओर जाता है। – Maarten

0
config.assets.compile = false 

यह अन्य उत्तर

config.assets.compile = true 

में सच

1

सुझाव के बावजूद होना चाहिए ... एक समाधान है, न कि एक समाधान है। यह विकल्प रेलों को संपत्तियों के ऑन-द-फ्लाई संकलन में वापस आने में सक्षम बनाता है जो सार्वजनिक/संपत्तियों में नहीं मिल सकते हैं। यह स्टेजिंग में आपकी समस्या को हल कर सकता है लेकिन रन-टाइम पर रेल संकलन संपत्तियां उत्पादन में बिल्कुल अनुकूल नहीं हैं।

मुझे रेल 3.1.x में नई संपत्ति पाइपलाइन के साथ काम करने के शुरुआती महीनों में याद है कि मुझे दोनों संपीड़न और पाचन की पीढ़ियों के साथ समस्याएं थीं जिन्हें मैंने बाद में संस्करणों में वास्तव में हल किया था। मैं

config.assets.compress = false 
config.assets.digest = false 

दोनों अलग-अलग और एक साथ प्रयास करने का सुझाव देना चाहता हूं। और/या रेल या संपत्ति पाइपलाइन रत्न के बाद के संस्करणों में अपग्रेड करें।

0

कुछ महीने पहले मैं उसी मुद्दे पर भाग गया था। कुछ कारणों से मैंने उत्पादन में परिसंपत्ति संकलन को मैन्युअल रूप से ट्रिगर करने का विकल्प चुना ताकि मेरा उत्पादन हो।rb

config.assets.compile = false 

है और Capistrano तैनाती से भी संपत्ति (और साथ rvm का प्रयोग करके) precompile करने के लिए एक कार्य है:

run "cd #{release_path} && RAILS_ENV=production bundle exec rake assets:precompile", shell: fetch(:rvm_shell) 

अंतिम चरण यह सुनिश्चित है कि हम परिसंपत्तियों फ़ोल्डर सांकेतिक रूप से लिंक कर रहा था ताकि हम बदले गए संपत्तियों को फिर से सम्मिलित करने की आवश्यकता नहीं है।

run "ln -nfs #{shared_path}/assets #{release_path}/public/assets" 
1

यदि आप निश्चित हैं कि संपत्तियां संकलित की जा रही हैं और सार्वजनिक निर्देशिका में मौजूद हैं, तो क्या यह आपकी वेब सर्वर सेटिंग्स हो सकती है? उत्पादन/स्टेजिंग वातावरण पर संपत्तियों को रेल ऐप नहीं मारा जाना चाहिए और सीधे वेब सर्वर से परोसा जाना चाहिए। एक उदाहरण apache कॉन्फ़िगरेशन स्निपेट है:

<LocationMatch "^/assets/.*$"> 
     Header unset ETag 
     FileETag None 
     # RFC says only cache for 1 year 
     ExpiresActive On 
     ExpiresDefault "access plus 1 year" 

     SetEnv no-gzip 
     RewriteEngine on 
     # Make sure the browser supports gzip encoding before we send it 
     RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b 
     RewriteCond %{REQUEST_FILENAME}.gz -s 
     RewriteRule ^(.+) $1.gz [L] 

    </LocationMatch> 

    <FilesMatch \.css\.gz$> 
     ForceType text/css 
     Header set Content-Encoding gzip 
    </FilesMatch> 

    <FilesMatch \.js\.gz$> 
     ForceType text/javascript 
     Header set Content-Encoding gzip 
    </FilesMatch> 
संबंधित मुद्दे