रेल 4: संपत्ति उत्पादन में लोड नहीं हो रही है


116

मैं अपने ऐप को प्रोडक्शन और इमेज में डालने की कोशिश कर रहा हूं और सीएसएस एसेट पाथ काम नहीं कर रहा है।

यहाँ मैं वर्तमान में क्या कर रहा हूँ:

  • छवि परिसंपत्तियाँ /app/assets/images/image.jpg में रहती हैं
  • Stylesheets /app/assets/stylesheets/style.css में रहते हैं
  • अपने लेआउट में, मैं सीएसएस फ़ाइल को इस तरह संदर्भित करता हूं: <%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
  • गेंडा को पुनः आरंभ करने से पहले, मैं दौड़ता हूं RAILS_ENV=production bundle exec rake assets:precompileऔर यह सफल होता है और मैं public/assetsनिर्देशिका में फ़िंगरप्रिंटेड फ़ाइलों को देखता हूं ।

जब मैं अपनी साइट पर ब्राउज़ करता हूं, तो मुझे 404 की त्रुटि नहीं मिलती है mysite.com/stylesheets/styles.css

मैं क्या गलत कर रहा हूं?

अद्यतन: मेरे लेआउट में, यह इस तरह दिखता है:

<%= stylesheet_link_tag    "bootstrap.min", media: "all", "data-turbolinks-track" => true %>
<%= stylesheet_link_tag    "styles", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

उत्पन्न स्रोत यह है:

<link data-turbolinks-track="true" href="/stylesheets/bootstrap.min.css" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/stylesheets/styles.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/assets/application-0c647c942c6eff10ad92f1f2b0c64efe.js"></script>

लगता है कि रेल ठीक से संकलित सीएसएस फ़ाइलों की तलाश में नहीं है। लेकिन यह बहुत भ्रमित है कि यह जावास्क्रिप्ट ( /assets/****.jsपथ को नोटिस करें ) के लिए सही तरीके से क्यों काम कर रहा है ।


क्या आप हमें बता सकते हैं कि आप अपनी css फ़ाइल को कैसे लोड करते हैं? यह आपकी त्रुटि से लगता है कि आप उपयोग करने के बजाय इसे हार्डलिंक करने का प्रयास करते हैं stylesheet_link_tag
किक सिप

1
बस ऊपर जोड़ा गया। मैं कर रहा हूँ<%= stylesheet_link_tag "style", media: "all", "data-turbolinks-track" => true %>
emersonthis

ठीक है, तो मैं दो बातें recommand हैं: 1. उत्पन्न स्रोत में जांच कर लें कि इस लाइन के लिए पथ के रूप में लिखा गया है public/assetsऔर 2 दोहरी जांच वहाँ एक अन्य अनुदेश कि सीएसएस फ़ाइल (संभवतः हार्ड-कोडेड) लोड करने का प्रयास कहीं नहीं है अगर
किक

मैं यह नहीं कह सकता कि अगर .erb का उपयोग करना एक समस्या है क्योंकि मैं ऐसा कभी नहीं करता: .home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; }वास्तव में स्प्रोकेट के साथ प्रतिस्थापित किया जा सकता है .home {background: #FFF url(image-path('hippopotamus.jpg')) no-repeat; }। शायद आप कोशिश कर सकते हैं अगर यह मदद करता है।
किक सिप

क्या आप कह रहे हैं कि मैं। Cb एक्सटेंशन को जोड़े बिना अपनी css फ़ाइल में उस संदर्भ को गतिशील बना सकता हूँ? मैंने इसे बदल दिया क्योंकि मैं नहीं चाहता था कि जब मैं विकास मोड में हूं तो लिंक टूट जाए।
एमुथोथेनिस

जवाबों:


105

रेल 4 में आपको नीचे परिवर्तन करने की आवश्यकता है:

config.assets.compile = true
config.assets.precompile =  ['*.js', '*.css', '*.css.erb'] 

यह मेरे साथ काम करता है। पूर्व-संकलित परिसंपत्तियों के लिए निम्नलिखित आदेश का उपयोग करें

RAILS_ENV=production bundle exec rake assets:precompile

शुभकामनाएँ!


11
मैंने सोचा था कि config.assets.compile को सही पर सेट करना उत्पादन में प्रदर्शन को मार देगा। भी, css.erb? कौन प्रयोग करता है? और सैस और कॉफी के बारे में क्या?
एहनबिजद

जब कॉफ़ी और सैस फ़ाइलों का अनुरोध किया जाता है, तो उन्हें कॉफ़ी-स्क्रिप्ट और सैस-रेल रत्न द्वारा प्रदान किए गए प्रोसेसर द्वारा संसाधित किया जाता है और फिर क्रमशः ब्राउज़र में जावास्क्रिप्ट और सीएसएस के रूप में वापस भेजा जाता है।
रामेश्वर वायेवारे

1
यह समस्या पहले से ही रेल 4 के लिए हल हो गई है और इसलिए टर्बो-स्प्रोकेट-रेल्स 3 मणि का उपयोग करने की आवश्यकता नहीं है
रामेश्वर वायवेहर

4
क्षमा करें, आपने मेरे प्रश्न का उत्तर देने के लिए जो कहा था, मैं उसका संबंध नहीं बना पा रहा हूं।
अहानिबेक्स्ड

1
आम तौर पर, जब आप उत्पादन सर्वर चलाते हैं, तो आप Apache या nginx webverver के पीछे यात्री या गेंडा या प्यूमा के साथ रेल चलाएंगे। Apache या nginx को स्टेटिक फाइल्स (js, css, images) और रेल्स एप्लिकेशन सर्वर (प्यूमा, यूनिकॉर्न) को रेल कोड और टेम्प्लेट की सेवा करने देना बेहतर है। ऐसा करने के लिए, आपको बंद कर देना चाहिए config.serve_static_files, और इससे निपटने के लिए Apache और nginx में अन्य कॉन्फ़िगर करें assets
चनु हो Châ लग्ने

85

मुझे बस एक ही समस्या थी और यह विन्यास / वातावरण / उत्पादन में पाया गया।

# Rails 4:
config.serve_static_assets = false

# Or for Rails 5:
config.public_file_server.enabled = false

इसे बदलना true इसे काम कर रहा है। ऐसा लगता है कि डिफ़ॉल्ट रूप से रेल की उम्मीद है कि आपने अपने फ्रंट-एंड वेबसर्वर को सार्वजनिक फ़ोल्डर से फ़ाइलों के लिए अनुरोधों को संभालने के बजाय उन्हें रेल ऐप के लिए प्रॉक्सिफाई करने के लिए कॉन्फ़िगर किया है। शायद आपने अपनी जावास्क्रिप्ट फ़ाइलों के लिए ऐसा किया है, लेकिन आपकी CSS स्टाइलशीट के लिए नहीं?

( रेल 5 दस्तावेज देखें )। जैसा कि टिप्पणियों में उल्लेख किया गया है, रेल 5 के साथ आप बस RAILS_SERVE_STATIC_FILESपर्यावरण चर सेट कर सकते हैं , क्योंकि डिफ़ॉल्ट सेटिंग है config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?


1
समीक्षा चेतावनी: इसकी भूमिका स्पष्ट config.serve_static_assetsकरने के config.serve_static_filesलिए कॉन्फ़िगरेशन विकल्प का नाम बदल दिया गया है (यह केवल publicफ़ोल्डर में सब कुछ सेवा करने में सक्षम है और परिसंपत्ति पाइपलाइन से संबंधित नहीं है)। serve_static_assetsउर्फ रेल 5.0 में निकाल दिया जाएगा। कृपया तदनुसार अपनी कॉन्फ़िगरेशन फ़ाइलों को माइग्रेट करें।
yekta

पहले जब मैं इस समस्या को बदल रहा था तो उस लाइन ने मेरे लिए इसे हल कर दिया था, लेकिन अब मैं फिर से इसका सामना कर रहा हूं (मुझे नहीं पता कि मैं इन स्थितियों में कैसे समाप्त होता रहूं।) और यह पर्याप्त नहीं है। क्या गलत हो सकता है के रूप में कोई और सुझाव?
IIllIIll

2
यह स्वीकृत उत्तर होना चाहिए। हालांकि यह config.serve_static_filesरेल्स 4.2 और config.public_file_server.enabledरेल्स 5 में है । @see github.com/heroku/rails_serve_static_assets/blob/master/lib/…
लुकास नेल्सन

3
रेल 5.0.0.1 कॉन्फिग / वातावरण / प्रोडक्शन .rb में config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?आप अपने SCM में चेक किए गए कोड को बदले बिना अपने पर्यावरण के लिए इसे अलग तरीके से सेट कर सकते हैं।
tobinjim

इसे सक्षम करने के लिए: "RAILS_SERVE_STATIC_FILES निर्यात करें" = फिर आप "रेल s -e उत्पादन" चलाते हैं: इसे निष्क्रिय करने के लिए: "Rset_SERVE_STATIC_FILES"
अल्फ्रेडो ओसोरियो

32

में /config/environments/production.rbमैं इस जोड़ने के लिए किया था:

Rails.application.config.assets.precompile += %w( *.js ^[^_]*.css *.css.erb )

.Js पहले से ही precompiled हो रहे थे, लेकिन मैंने इसे वैसे भी जोड़ा। .Css और .css.erb जाहिरा तौर पर स्वचालित रूप से नहीं होता है। ^[^_]से शामिल नहीं partials संकलित किया जा रहा है - यह एक regexp है।

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


आपको config.assets.precompile में styles.css जोड़ने की आवश्यकता है
Frederick Cheung

23

: मैं बदल कर इस समस्या को हल करने में सक्षम था config.assets.compile = falseकरने के लिए
config.assets.compile = trueमें/config/environments/production.rb

अद्यतन (24 जून, 2018) : यदि आप जिस Sprockets का उपयोग कर रहे हैं उसका संस्करण 2.12.5, 3.7.2, या 4.0.0.beta8 से कम है, तो यह विधि सुरक्षा भेद्यता पैदा करती है।


7
क्या इसका मतलब यह नहीं है कि रेल सीडीएन से लोड करने के बजाय संपत्ति को संकलित कर रही है?
बेंजामिन ने

@BenjaminOakes हाँ, और यही मैं चाहता था
यानोफ़्स्की

2
यह मोड अधिक मेमोरी का उपयोग करता है, डिफ़ॉल्ट से अधिक खराब प्रदर्शन करता है और अनुशंसित नहीं है। Nginx प्रॉक्सी का उपयोग करने के लिए बेहतर है।
येकाटा

16

रेल 5 के लिए, आपको निम्नलिखित कोड को सक्षम करना चाहिए:

config.public_file_server.enabled = true

डिफ़ॉल्ट रूप से, विन्यास की इस पंक्ति के साथ 5 जहाज होते हैं:

config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

इसलिए, आपको पर्यावरण चर RAILS_SERVE_STATIC_FILESको सही पर सेट करने की आवश्यकता होगी ।


1
रेल 5 के लिए, मुझे जोड़ना चाहिए, मैंने passenger_env_var RAILS_SERVE_STATIC_FILES true;अपने ऐप के स्थान ब्लॉक में अपनी nginx.conf फ़ाइल में सेट किया।
मार्टिन वेलेज़

10

उत्पादन में परिसंपत्तियों की सेवा के लिए 2 चीजें होनी चाहिए:

  1. संपत्तियों को रोकें।
  2. संपत्ति को सर्वर पर ब्राउज़र में परोसें।

1) परिसंपत्तियों को पहले से तैयार करने के लिए, आपके पास कई विकल्प हैं।

  • आप rake assets:precompileअपनी स्थानीय मशीन पर चल सकते हैं , इसे स्रोत कोड नियंत्रण (git) के लिए प्रतिबद्ध कर सकते हैं , फिर तैनाती कार्यक्रम चला सकते हैं, उदाहरण के लिए capistrano। यह एससीएम के लिए पूर्वगामी संपत्ति करने का एक अच्छा तरीका नहीं है।

  • आप RAILS_ENV=production rake assets:precompileसर्वर को पुनः आरंभ करने से पहले हर बार जब आप अपने रेल एप्लिकेशन को उत्पादन के लिए तैनात करते हैं, तो आप प्रत्येक बार लक्ष्य सर्वर पर चलने वाला एक रेक कार्य लिख सकते हैं ।

कैपिस्ट्रानो के लिए एक कार्य में कोड इस तरह दिखेगा:

on roles(:app) do
  if DEPLOY_ENV == 'production'
    execute("cd #{DEPLOY_TO_DIR}/current && RAILS_ENV=production rvm #{ruby_string} do rake assets:precompile")
  end
end

2) अब, आपके पास उत्पादन सर्वरों पर संपत्ति है, आपको उन्हें ब्राउज़र में सेवा देने की आवश्यकता है।

फिर, आपके पास कई विकल्प हैं।

  • विन्यास / वातावरण / उत्पादन में कार्य करने वाली स्थैतिक फ़ाइल को चालू करें

    config.serve_static_assets = true # old
    
    or
    
    config.serve_static_files = true # new

    स्थिर फ़ाइलों की सेवा करने के लिए रेल का उपयोग करना आपके रेल एप्लिकेशन प्रदर्शन को मार देगा।

  • स्थिर फ़ाइलों की सेवा के लिए nginx (या Apache) को कॉन्फ़िगर करें।

    उदाहरण के लिए, Puma के साथ काम करने के लिए कॉन्फ़िगर किया गया मेरा nginx इस तरह दिखता है:

    location ~ ^/(assets|images|fonts)/(.*)$ {
        alias /var/www/foster_care/current/public/$1/$2;
        gzip on;
        expires max;
        add_header Cache-Control public;
    }

4

रेल 4 अब संपत्ति के गैर-फिंगरप्रिंट संस्करण को उत्पन्न नहीं करती है: आपके लिए स्टाइलशीट / स्टाइल.कैंसेस उत्पन्न नहीं होंगे।

यदि आप उपयोग करते हैं stylesheet_link_tagतो आपकी स्टाइलशीट का सही लिंक जेनरेट होगा

इसके अलावा styles.cssहोना चाहिए config.assets.precompileजिसमें उन चीजों की सूची है जो पूर्व निर्धारित हैं


मुझे / सार्वजनिक / संपत्ति / निर्देशिका में फ़िंगरप्रिंट की गई फ़ाइल दिखाई देती है। मेरे लेआउट में, मेरे पास यह है: <%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>क्या यह गलत है? `
Emersonthis

किसी कारण के लिए, उत्पादन परिनियोजन अभी भी मूल फ़ाइलों की ओर इशारा कर रहा है जब मैं स्रोत को देखता हूं <link data-turbolinks-track="true" href="https://stackoverflow.com/stylesheets/bootstrap.min.css" media="all" rel="stylesheet" />लेकिन जावास्क्रिप्ट फाइलें सही हैं! मुझे समझ में नहीं आता है कि .js फ़ाइलों के लिए समान कॉन्फ़िगरेशन क्यों काम करता है, लेकिन .css नहीं।
इमर्सोथिसिस

रेल 5.0.0.beta3 पर मुझे यह चेतावनी मिलती है: चेतावनी चेतावनी: serve_static_filesपदावनत किया गया है और रेल 5.1 में हटा दिया जाएगा। कृपया public_file_server.enabled = trueइसके बजाय उपयोग करें ।
GMA

@emersonthis वही! जेएस पूरी तरह से लोड होता है लेकिन कुछ सीएसएस फाइलें मिलती हैं 404। क्या आपने इसका समाधान किया?
IvRRimUm

यह परिसंपत्ति पाइपलाइन विन्यास के साथ लगभग एक समस्या है। यदि आपके पास ऐसी कोई भी फ़ाइल है जो डिफ़ॉल्ट नहीं है, तो यह लगभग निश्चित रूप से समस्या है और आपको पहले उत्तर जैसी किसी चीज़ का उपयोग करके इसके बारे में परिसंपत्ति पाइपलाइन को बताने की आवश्यकता है।
1

3

अपनी Production.rb फ़ाइल लाइन बदलें

config.assets.compile = false

में

config.assets.compile = true

और भी जोड़ें

config.assets.precompile =  ['*.js', '*.css', '*.css.erb']

संकलन क्यों? हम मानते हैं कि इसके चलने के दौरान उत्पादन पर संकलन किया जाएगा
जेम्स टैन

1
कभी नहीं! कोई भी जो config.assets.compile को प्रोडक्शन में सही से सेट करता है, उसे शूट किया जाना चाहिए।
bkunzi01

2

मैं Ubuntu सर्वर 14.04 , रूबी 2.2.1 और रेल्स 4.2.4 चला रहा हूं। मैंने DigitalOcean से एक तैनाती ट्यूरर का अनुसरण किया है और सब कुछ ठीक हो गया है लेकिन जब मैं ब्राउज़र पर जाता हूं और अपने वीपीएस का आईपी पता दर्ज करता हूं तो मेरा ऐप लोड हो जाता है लेकिन बिना शैलियों और जावास्क्रिप्ट।

एप्लिकेशन Unicorn और Nginx के साथ चल रहा है । इस समस्या को ठीक करने के लिए मैंने अपने सर्वर 'SSER' का उपयोग करते हुए SSH में अपने सर्वर में प्रवेश किया और अपने ऐप पथ पर जा रहा हूँ जो '/ home / तैनाती / एप्स / ब्लॉग' है और निम्नलिखित कमांड चलाएँ:

RAILS_ENV=production bin/rake assets:precompile

तो मैं बस VPS पुनरारंभ करें और यह बात है! इससे मेरा काम बनता है!

आशा है कि यह किसी और के लिए उपयोगी हो सकता है!


2

यदि precompile सेट है, तो आपको इसकी आवश्यकता नहीं है

config.assets.compile = true

के रूप में यह संपत्ति की सेवा के लिए है।

हमारी समस्या यह थी कि हमने केवल विकास गुप्त कुंजी आधार निर्धारित किया था config/secrets.yml

development:
    secret_key_base: '83d141eeb181032f4070ae7b1b27d9ff'

उत्पादन पर्यावरण के लिए प्रवेश की आवश्यकता है


1
जैसा कि आप की जरूरत है config.assets.precompile = ['*.js', '*.css', '*.css.erb'] और चलाने के लिए अन्य जवाब में उल्लेख किया हैRAILS_ENV=production bundle exec rake assets:precompile
xxjjnn

1
यह उत्पादन पर रहते हुए संपत्ति का संकलन सक्षम करता है, बहुत धीमा, सही नहीं
जेम्स टैन

2

आप क्या नहीं करेंगे:

ऊपर मेरे कुछ सहयोगियों ने आपको ऐसा करने की सलाह दी है:

config.serve_static_assets = true  ## DON”T DO THIS!! 
config.public_file_server.enabled = true ## DON”T DO THIS!!

रेल परिसंपत्ति पाइपलाइन उपरोक्त दृष्टिकोण का कहना है:

यह मोड अधिक मेमोरी का उपयोग करता है, डिफ़ॉल्ट से अधिक खराब प्रदर्शन करता है और अनुशंसित नहीं है। यहां देखें: ( http://edgeguides.rubyonrails.org/asset_pipeline.html#live-compilation )

तुम्हे क्या करना चाहिए:

अपनी संपत्तियों को दबाएं।

RAILS_ENV=production rake assets:precompile

आप शायद एक रेक कार्य के साथ ऐसा कर सकते हैं।


हालांकि git में आर्टिफैक्ट्स क्यों जोड़ते हैं? आप अपनी निर्माण प्रक्रिया में केवल रेक कार्य जोड़ सकते हैं और बड़े पैमाने पर gitspam से बच सकते हैं (विशेषकर यदि आपके पास बदसूरत और गिपिंग है, जो आपको चाहिए)
Dr.Strangelove

@ Dr.Strangelove आपकी टिप्पणी के लिए धन्यवाद - मुझे इस बारे में पर्याप्त जानकारी नहीं है - क्या आप मूल पोस्ट को विस्तृत / संपादित कर सकते हैं?
BKSpurgeon

1

फ़ाइलों को संकलित करने के लिए डिफ़ॉल्ट मिलानकर्ता में app.js, application.css और सभी गैर-जेएस / सीएसएस फाइलें शामिल हैं (इसमें आपके रत्नों सहित एप्लिकेशन / संपत्ति फ़ोल्डर से स्वचालित रूप से सभी छवि संपत्तियां शामिल होंगी):

यदि आपके पास अन्य मैनिफ़ेस्ट या व्यक्तिगत शैलियाँ और जावास्क्रिप्ट फ़ाइलें शामिल करने के लिए हैं, तो आप उन्हें कॉन्फ़िगर / इनिशियलाइज़र / एसेट्स में precompile array में जोड़ सकते हैं।

Rails.application.config.assets.precompile += ['admin.js', 'admin.css', 'swfObject.js']

http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets


1

सबसे पहले अपनी संपत्ति की जांच करें, यह संभव हो सकता है कि संपत्ति के पूर्व-संकलन में कुछ त्रुटि हो।

उत्पादन में पूर्व संकलित संपत्ति के लिए ENV इस कमांड को चलाता है:

RAILS_ENV=production rake assets:precompile

यदि यह त्रुटि दिखाता है, तो पहले हटा दें,

"अपरिभाषित चर" त्रुटि के मामले में, उस चर फ़ाइल को किसी अन्य फ़ाइल में उपयोग करने से पहले लोड करें।

उदाहरण:

@import "variables";
@import "style";

Application.rb में संपत्ति के पूर्व-संकलन का फ़ाइल सेट अनुक्रम

उदाहरण:

config.assets.precompile += [ 'application.js', 'admin.js', 'admin/events.js', 'admin/gallery.js', 'frontendgallery.js']

config.assets.precompile += [ 'application.css', 'admin.css','admin/events.css', 'admin/gallery.css', 'frontendgallery.css']

1

यह मिला:

इसकी भूमिका स्पष्ट config.serve_static_assetsकरने के config.serve_static_filesलिए कॉन्फ़िगरेशन विकल्प का नाम बदल दिया गया है ।

में config/environments/production.rb:

# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

तो एनवी सेट RAILS_SERVE_STATIC_FILESया Nginxस्थिर फ़ाइलों की सेवा करने के लिए उपयोग कर। ऐड config.serve_static_assets = trueअभी भी काम करेगा, लेकिन भविष्य में हटा दिया जाएगा।


1

यह सलाह नहीं दी जाती है कि कैपिस्ट्रानो को संपत्ति को दबाकर रखने दिया जाए, क्योंकि इसमें उम्र और अक्सर समय लग सकता है। स्थानीय संपत्तियां करने का प्रयास करें।

पहले, config / application.rb में सेट करें, config.assets.initialize_on_precompile = false फिर स्थानीय करें RAILS_ENV=production bin/rake assets:precompile और उन पब्लिक / एसेट्स को git में जोड़ें।

और कॉन्फ़िगर / वातावरण / development.rb, precompiled आस्तियों का उपयोग करने से बचने के लिए अपनी परिसंपत्ति पथ बदलें:

config.assets.prefix = '/dev-assets'

यदि आपके पास db कनेक्शन समस्या है, तो इसका मतलब है कि आपके पास शुरुआती है जो db का उपयोग करता है। इसका एक तरीका यह है कि डुप्लिकेट प्रोडक्शन .rb द्वारा एक नया वातावरण सेट किया जाए, जैसा कि प्रोडक्शन 2 .rb, और database.yml में, डेवलपमेंट db सेटिंग के साथ production2 एनवायरनमेंट जोड़ें । फिर करो

RAILS_ENV=production2 bin/rake assets:precompile

यदि आप अभी भी संपत्ति के साथ कुछ समस्या का सामना कर रहे हैं, उदाहरण के लिए ckeditor, config / initializers / properties.rb में js फ़ाइल जोड़ें

Rails.application.config.assets.precompile += %w( ckeditor.js )


0

मैं गलत हो सकता हूं लेकिन जो लोग बदलने की सलाह देते हैं

config.assets.compile = true

इस लाइन पर टिप्पणी पढ़ी गई है: # अगर किसी पूर्व-सम्पत्ति के चूक जाने पर परिसंपत्ति की पाइपलाइन में नहीं आते हैं।

इससे पता चलता है कि इसे सही करने के लिए आप समस्या को ठीक नहीं कर रहे हैं, बल्कि इसे दरकिनार कर हर बार पाइपलाइन चला रहे हैं। यह निश्चित रूप से आपके प्रदर्शन को मार सकता है और पाइपलाइन के उद्देश्य को पराजित करेगा?

मेरे पास यह त्रुटि थी और यह सब-फोल्डर में चल रहे एप्लिकेशन के कारण था, जिसके बारे में रेल को पता नहीं था।

तो मेरी सीएसएस फ़ाइल जहां घर / सबफ़ोल्डर / ऐप / सार्वजनिक / .... में है, लेकिन रेल घर / ऐप / सार्वजनिक / ... में लग रही थी

अपने एप्लिकेशन को सबफ़ोल्डर से बाहर ले जाने का प्रयास करें या रेल को बताए कि वह सबफ़ोल्डर में है।


0
location ~ ^/assets/ {
  expires 1y;
  add_header Cache-Control public;
  add_header ETag "";
}

इसने मेरे लिए उत्पादन में समस्या को ठीक कर दिया। इसे nginx config में रखें।


0

यहां तक ​​कि हमें उसी समस्या का सामना करना पड़ा जहां RAILS_ENV=production bundle exec rake assets:precompile सफल हुए लेकिन चीजें उम्मीद के काम नहीं कर पाईं।
हमने पाया कि गेंडा यहाँ का मुख्य अपराधी था।

आपके मामले के समान है, यहां तक ​​कि हम संपत्ति को संकलित करने के बाद गेंडा को फिर से शुरू करते थे। यह देखा गया कि जब गेंडा को पुनः आरंभ किया जाता है, तो केवल इसकी श्रमिक प्रक्रियाओं को पुनः आरंभ किया जाता है, न कि मास्टर प्रक्रिया को।
यह मुख्य कारण है सही परिसंपत्तियाँ नहीं परोसी जाती हैं।

बाद में, परिसंपत्तियों का संकलन करने के बाद, हम रुक गए और गेंडा शुरू कर दिया, ताकि गेंडा मास्टर प्रक्रिया को भी फिर से शुरू किया जाए और सही संपत्तियों को सेवा दी जा रही हो।
यूनिकॉर्न को फिर से शुरू करने की तुलना में यूनिकॉर्न को रोकना और शुरू करना डाउनटाइम पर लगभग 10 सेकंड लाता है। यह वह वर्कअराउंड है जिसका उपयोग जहां किया जा सकता है, वहीं दीर्घकालिक समाधान यूनिकॉर्न से प्यूमा में स्थानांतरित होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.