2013-10-19 11 views
11

मैंने हाल ही में रेल के उपयोग के लिए अपने रेल 3.2.13 अनुप्रयोगों में से एक को फिर से लिखा है। मैंने अपने रेल 3 एप्लिकेशन में ट्विटर-बूटस्ट्रैप-रेल 2.1.2 का उपयोग किया था। जब मैं रेल 4 संस्करण को फिर से लिखता हूं तो यह संस्करण 2.2.8 का उपयोग करना शुरू कर देता है। मैं अपने सभी रेल अनुप्रयोगों को होस्ट करने के लिए अपने विकास और उत्पादन सर्वर पर फ़्यूज़न पैसेंजर 4.0.20 का उपयोग कर रहा हूं।रेल 4 - पृष्ठभूमि छवि लोकलहोस्ट में दिखाई देती है लेकिन उत्पादन में नहीं

मेरे रेल 3 अनुप्रयोग में पृष्ठभूमि छवि स्थानीयहोस्ट और उत्पादन में सही ढंग से दिखाई दी। हालांकि जब मैं रेल 4 और ट्विटर-बूटस्ट्रैप-रेल के मौजूदा संस्करण का उपयोग करके एप्लिकेशन को फिर से लिखता हूं, मैंने देखा कि पृष्ठभूमि छवि सही ढंग से दिखाई देती है लेकिन जब मैं इसे उत्पादन में तैनात करता हूं तो पृष्ठभूमि छवि प्रदर्शित नहीं होती है।

मैंने निम्नलिखित सीएसएस की कोशिश की है लेकिन पृष्ठभूमि छवि केवल स्थानीयहोस्ट में दिखाई देती है। पहला कथन मूल सीएसएस कोड है जो स्थानीय रेल और उत्पादन में मेरे रेल 3 आवेदन में अच्छी तरह से काम कर रहा था।

<div class="header-cube-menu" style="position: relative;"> 

    <div class="header-store" style="position: absolute;"> 
    <p><%= link_to "Online Store", store_path %></p> 
    </div> 

    <div class="header-about" style="position: absolute;"> 
    <p><%= link_to "About", about_path %></p> 
    </div> 

    <div class="header-contact" style="position: absolute;"> 
    <p><%= link_to "Contact", contact_path %></p> 
    </div> 

    <div class="header-verse" style="position: absolute;"> 
    <p><a href="/verse">Bible<br>Verse</a></p> 
    </div> 

    <div class="header-app" style="position: absolute;"> 
    <p><a href="/app">Mobile<br>&nbsp;&nbsp;App</a></p> 
    </div> 

    <div class="header-home" style="position: absolute;"> 
    <p><a href="/home">Home<br>&nbsp;Page</a></p> 
    </div> 

    <div class="header-math" style="position: absolute;"> 
    <p><a href="/math">The<br>Math</a></p> 
    </div> 

    <div class="header-vision" style="position: absolute;"> 
    <p><a href="/vision">&nbsp;Vision<br>Mission</a></p> 
    </div> 

    <div class="header-pendant" style="position: absolute;"> 
    <p><a href="/pendant">Pendant<br>&nbsp;&nbsp;&nbsp;Desk Cross<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and more</a></p> 
    </div> 

    <div class="header-puzzle" style="position: absolute;"> 
    <p><a href="/puzzle">3D-Puzzle<br>&nbsp;&nbsp;eBook</a></p> 
    </div> 

</div> 

मैं साफ कर दिया:

.landing-cube-menu { 
    font-weight: bold; 
    font-size: 150%; 
    line-height: 100%;  
    background: url(/assets/landingpage2.jpg); width: 574px; height: 650px; 
    margin:0 auto; 
} 

यहाँ कोड है कि मैं मेरे विचार में उपयोग कर रहा हूँ है:

background: url(/assets/landingpage2.jpg); width: 574px; height: 650px; 

background: url(../assets/landingpage2.jpg); width: 574px; height: 650px; 

background-image: url(../assets/landingpage2.jpg); width: 574px; height: 650px; 

background-image: url("../assets/landingpage2.jpg"); width: 574px; height: 650px; 

background-image: url("/assets/landingpage2.jpg"); width: 574px; height: 650px; 

यहाँ वर्ग कि पृष्ठभूमि बयान है कि मूल रूप से काम किया भी शामिल है स्थानीय ब्राउज़र और मेरे डोमेन दोनों के लिए मेरे ब्राउज़र में कैश करें। मैं अभी भी स्थानीयहोस्ट में छवि देखता हूं लेकिन डोमेन के साथ नहीं। मैंने अपने मैक मिनी सर्वर पर सफारी, क्रोम, फ़ायरफ़ॉक्स और ओपेरा के नवीनतम संस्करण का उपयोग करने का प्रयास किया है। उन सभी को एक ही परिणाम मिलते हैं।

अगर मैं स्थानीयहोस्ट में पृष्ठभूमि छवि नहीं देख रहा था तो मैं इसे समझ सकता था। मैंने लोकहोस्ट का उपयोग कर रेल 4 ऐप के लिए अपना परीक्षण किया और माना कि यह उत्पादन में काम करेगा। हालांकि मैंने इसे तैनात करने के बाद पृष्ठभूमि छवि गायब थी। यह मेरे उत्पादन और विकास सर्वर दोनों पर हो रहा है। छवि फ़ाइल दोनों सर्वरों पर ऐप/संपत्ति/छवियों में है।

मेरा मूल कोड और यहां पोस्ट किए गए सभी उदाहरण स्थानीयहोस्ट में छवि प्रदर्शित होने के बाद से सही हैं। मेरे पास इस बिंदु पर जांच करने के लिए कोई सुराग नहीं है। मैं इसे यात्री Google समूह में पोस्ट कर सकता हूं। स्थानीयहोस्ट और उत्पादन के बीच यह एकमात्र अन्य चर है, विशेष रूप से मेरे विकास सर्वर पर विचार करना।

अद्यतन: मैंने इसे पोस्ट करने के बाद अन्य संभावनाओं को आजमाने का फैसला किया। अब स्थानीय छवि के लिए पृष्ठभूमि छवि अब प्रकट नहीं होती है। मैं इसके साथ पूरी तरह से निराश हूँ।

किसी भी मदद की सराहना की जाएगी।

अद्यतन 2013/10/19 8:05 pm CDT GMT-5

मैं अपने .less फ़ाइल में asset_url समाधान को लागू करने का प्रयास किया। यहाँ त्रुटियों मुझे मिल गया जब मैं रेक संपत्ति किया हैं: precompile RAILS_ENV = उत्पादन आदेश

I, [2013-10-19T19:59:05.384878 #69440] INFO -- : Writing /Users/myusername/Sites/myrailsapp/public/assets/application-f8821f5601f793a09e9373fb397df1b1.js 
    rake aborted! 
    undefined method `[]' for nil:NilClass 
     (in /Users/myusername/Sites/hypercubeoflove_RoR_4/app/assets/stylesheets/application.css) 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/sass_functions.rb:63:in `sprockets_context' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-rails-4.0.0/lib/sass/rails/helpers.rb:23:in `asset_url' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/script/funcall.rb:112:in `_perform' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/script/node.rb:40:in `perform' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:298:in `visit_prop' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100:in `visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `block in visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `map' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:121:in `with_environment' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:108:in `visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `block in visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:320:in `visit_rule' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100:in `visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `block in visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `map' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:121:in `with_environment' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:108:in `visit_children' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `block in visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:128:in `visit_root' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100:in `visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:7:in `visit' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/tree/root_node.rb:20:in `render' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/engine.rb:315:in `_render' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sass-3.2.12/lib/sass/engine.rb:262:in `render' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/sass_compressor.rb:24:in `evaluate' 
    /Users/myusername/.rvm/gems/[email protected]/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/context.rb:197:in `block in evaluate' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/context.rb:194:in `each' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/context.rb:194:in `evaluate' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/bundled_asset.rb:25:in `initialize' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/base.rb:377:in `new' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/base.rb:377:in `build_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/index.rb:94:in `block in build_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/caching.rb:58:in `cache_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/index.rb:93:in `build_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/base.rb:287:in `find_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/index.rb:61:in `find_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:211:in `block in find_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:257:in `benchmark' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:210:in `find_asset' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:119:in `block in compile' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:118:in `each' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:118:in `compile' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-rails-2.0.0/lib/sprockets/rails/task.rb:60:in `block (3 levels) in define' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-2.10.0/lib/rake/sprocketstask.rb:146:in `with_logger' 
    /Users/myusername/.rvm/gems/[email protected]/gems/sprockets-rails-2.0.0/lib/sprockets/rails/task.rb:59:in `block (2 levels) in define' 
    /Users/myusername/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `eval' 
    /Users/myusername/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `<main>' 
    Tasks: TOP => assets:precompile 
    (See full trace by running task with --trace) 
+1

आप ../assets हटाने और हैं: अच्छा उपाय rake assets:precompile RAILS_ENV=production

तो (मेरे मामले गेंडा में) अपने वेब/http सर्वर को पुनः आरंभ आपके मूल रूप से/संपत्तियों के साथ प्रतिस्थापित करें, अपने सर्वर को पुनरारंभ करें (बस कैशिंग के मामले में) और अपने ब्राउज़र में कैश डंप करें, क्या छवि फिर से विकास में लोड हो जाती है? – trh

+0

मैंने ब्राउज़र को रीसेट किया, कैश साफ़ किया और मेरे मैक मिनी सर्वर को रीबूट किया। छवि प्रकट नहीं होती है। शायद मैं इन दिनों के लिए कैश था जब मैं स्थानीयहोस्ट चला रहा था। अब मुझे इस बिंदु पर पृष्ठभूमि छवि बिल्कुल दिखाई नहीं दे रही है। –

+1

क्या आप संपत्ति को पचाने के साथ संकलित कर रहे हैं? यदि हां यह काम नहीं कर सकता है तो 'स्पॉकेट-रेल' https://github.com/rails/sprockets-rails/issues/49 के साथ कोई समस्या है, तो आप कोशिश कर सकते हैं - https://github.com/alexspeller/ गैर-बेवकूफ-पाचन-संपत्ति – swapab

उत्तर

23

साथ लगभग निश्चित रूप से rake assets:precompile & अपने उत्पादन वातावरण

से कोई लेना देना हो आपकी समस्या एक अच्छा परीक्षण किया जाएगा अपने उत्पादन ऐप पर Right-Click > View Source पर और सीएसएस फ़ाइल पर क्लिक करें जहां आपकी पृष्ठभूमि छवि कहा जाता है। यदि आपकी समस्या यह है कि आपका सीएसएस यूआरएल ("पृष्ठभूमि-छवि" कह रहा है।png ") & जब आप फ़ाइल पर क्लिक करें, यह प्रदर्शित नहीं करता है, समाधान एससीएसएस उपयोग करने के लिए संपत्ति गतिशील


एससीएसएस के साथ संपत्ति Precompiling

हम समस्या थी precompile करने के लिए है जहां आप सीएसएस में छवि फ़ाइलों तक नहीं पहुंच पा रहे थे, और पाया कि यह सीएसएस केवल स्थिर यूआरएल() स्थानों का संदर्भ दे रहा था; और प्रीकंपाइल में, हमारा ऐप छवियों को कॉल कर रहा था "बैकग्राउन-छवि -234234nsdfasfdjasdfk2jij234ij32i.png"

इसे ठीक करने का तरीकाहै संपत्तियों के गतिशील लिंक बनाने के लिए;

#application.css.scss (yes, you need to rename it) 
@import 'layout/body' 


#app/assets/stylesheets/layout/body.css.scss 
body { 
    background: asset_url('background-image.png') 
} 

आप ऐसा करते हैं, और फिर जब तुम उत्पादन करने के लिए धक्का, आप इन आदेशों करते हैं, यह काम करना चाहिए: छवियों, आदि यहाँ करने के लिए सही पथ डाल करने के लिए अपने अनुप्रयोग की इजाजत दी कुछ लाइव कोड है

rake assets:precompile RAILS_ENV=production 
+0

मणि का उपयोग करने के साथ मेरा सभी सीएसएस कोड bootstrap_and_overrides.css.less में है। मैं application.css का उपयोग नहीं कर रहा हूँ। क्या मैं उस अनुभाग के लिए जो उल्लेख कर रहा हूं उसे कार्यान्वित कर सकता हूं जहां मैं पृष्ठभूमि छवि का संदर्भ दे रहा हूं और बाकी कोड को bootstrap_and_overrides.css.less में छोड़ दूं जहां मेरे पास बहुत कम कोड है? –

+0

। रेल को "स्पॉकेट्स" कंपाइलर द्वारा समर्थित नहीं है (http://stackoverflow.com/questions/7341676/using-less-in-a-rails-3-1-app), जिसका अर्थ है कि आप वही प्राप्त करेंगे "abs_url" सामग्री को आपके .less फ़ाइलों को लागू करने के परिणाम –

+0

मैंने अपनी .less फ़ाइल में property_url समाधान का प्रयास किया। जब मैंने रेक संपत्तियां की: पर्यावरण के बिना प्रीकंपाइल कमांड के बिना निष्पादित आदेश। जब मैंने रेक संपत्तियां की: प्रीकंपाइल RAILS_ENV = उत्पादन (पहली बार मैंने पर्यावरण को शामिल किया है) प्रक्रियाओं को निरस्त करने वाली संपत्तियों/छवियों की सभी छवियों के लिए 'लेखन' कथन पोस्ट किया।मैंने अंतिम 'लेखन' कथन से शुरू त्रुटि लॉग जोड़ा। –

10

Fwiw, मैं तो बस सीएसएस फ़ाइल है कि तब styleblah.css.scss करने के लिए styleblah.css से पृष्ठभूमि छवि संदर्भित background: asset_url('imagetitle.png'); करने के लिए background: url('/assets/images/imagetitle.png'); बदल का नाम बदल दिया है और यह पूरी तरह से काम किया।

जैसा आदमी कहते हैं, इन पंक्तियों के साथ कुछ चलाएँ: sudo service unicorn restart

+0

एक ही समस्या है, क्या आप कृपया अपनी prodction.rb फ़ाइल डाल सकते हैं। Config.assets.compile सच है? –

+1

हाय इसके बारे में सुनने के लिए खेद है- मैंने अपनी रेल 4 एप (मैंडिल स्थापित करने के अलावा) के लिए डिफ़ॉल्ट उत्पादन.आरबी कॉन्फ़िगरेशन नहीं बदला है; config.assets.compile को गलत पर सेट किया गया है: 'config.assets.compile = false'। आप यहां मेरी पूर्ण उत्पादन.आरबी फ़ाइल पा सकते हैं: [गीथूब पर प्रोडक्शन.आरबी] (https://github.com/ryparty/productionrb/blob/master/production.rb)। क्या आप अपने .css.scss दस्तावेज़ में पथ को केवल छवि के नाम पर बदलना सुनिश्चित कर रहे हैं और आप अपनी छवि कहां रख रहे हैं? मैं भी सीख रहा हूं, लेकिन मुझे नहीं लगता कि यह क्यों काम नहीं करेगा। – user2398041

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

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