4 রেল: সম্পদ উত্পাদন লোড হচ্ছে না


116

আমি আমার অ্যাপ্লিকেশনটিকে উত্পাদন এবং চিত্রের মধ্যে রাখার চেষ্টা করছি এবং CSS সম্পদ পাথ কাজ করছে না।

আমি বর্তমানে যা করছি তা এখানে:

  • চিত্রের সম্পদগুলি /app/assets/images/image.jpg এ লাইভ থাকে
  • স্টাইলশীটগুলি / অ্যাপ্লিকেশন / স্টেটস / স্টাইলশিট / স্টাইল সিএসএসে থাকে
  • আমার বিন্যাসে, আমি এই জাতীয় 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পথটি লক্ষ্য করুন )।


আপনি কীভাবে আপনার সিএসএস ফাইল লোড করতে পারেন তা আমাদের বলতে পারেন? আপনার ত্রুটি থেকে মনে হচ্ছে আপনি এটি ব্যবহারের চেয়ে হার্ডলিঙ্ক করার চেষ্টা করছেন stylesheet_link_tag
কিক

1
শুধু উপরে যুক্ত করা হয়েছে। আমি করছি<%= stylesheet_link_tag "style", media: "all", "data-turbolinks-track" => true %>
emersonthis

ঠিক আছে, তাই আমি দুটি জিনিস পুনঃনির্দেশ করবো: ১. উত্পন্ন উত্সটি চেক করুন যদি এই লাইনটি public/assets2 এবং 2 হিসাবে লেখা হয় তবে ডাবল চেক করুন যে কোথাও সেই সিএসএস ফাইল লোড করার চেষ্টা করা অন্য কোনও নির্দেশনা নেই (সম্ভবতঃ হার্ড-কোডেড)
কিক

.Erb ব্যবহার করা সমস্যা হলে আমি বলতে পারি না কারণ আমি কখনই এটি করি না: .home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; }আসলে স্প্রোকেটে প্রতিস্থাপন করা যেতে পারে .home {background: #FFF url(image-path('hippopotamus.jpg')) no-repeat; }। যদি এটি সাহায্য করে তবে আপনি চেষ্টা করতে পারেন।
কিক

আপনি কি বলছেন যে আমি আমার CSS ফাইলটিতে .erb এক্সটেনশনটি যুক্ত না করে গতিশীল করতে পারি? আমি এটিকে পরিবর্তন করেছি কারণ আমি যখন উন্নয়নের মোডে থাকি তখন লিংকটি ভেঙে যেতে চাই না।
এমারসন্থিস

উত্তর:


105

রেল 4 এ আপনাকে নীচে পরিবর্তনগুলি করতে হবে:

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

এটি আমার সাথে কাজ করে। সম্পদের প্রাক-সংকলন করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন

RAILS_ENV=production bundle exec rake assets:precompile

ভাগ্য সুপ্রসন্ন হোক!


11
আমি ভেবেছিলাম কনফিগারেশন.সেটস.কম.পাইলকে সত্যে নির্ধারণ করা প্রযোজনার পারফরম্যান্সকে মেরে ফেলবে। এছাড়াও, css.erb? কে ব্যবহার করে? এবং sass এবং কফি সম্পর্কে কি?
অহনিবিজ্যাকড

যখন কফি এবং সাস ফাইলগুলি অনুরোধ করা হয়, তারা কফি-স্ক্রিপ্ট এবং সাস-রেল রত্ন দ্বারা সরবরাহ করা প্রসেসর দ্বারা প্রক্রিয়া করা হয় এবং পরে যথাক্রমে জাভাস্ক্রিপ্ট এবং সিএসএস হিসাবে ব্রাউজারে পাঠানো হয়।
রামেশ্বর ভাইভাড়ে

1
এই ইস্যুটি ইতিমধ্যে রেল 4 এর জন্য সমাধান হয়েছে এবং তাই টার্বো-স্প্রোকট-রেল ​​3 রত্ন ব্যবহার করার দরকার নেই
রামেশ্বর ভাইভাড়ে

4
দুঃখিত, আপনি আমার প্রশ্নের উত্তর দিতে যা বলেছিলেন তার সংযোগ তৈরি করতে পারছি না।
অহনিবিজ্যাকড

1
সাধারণত, আপনি যখন প্রোডাকশন সার্ভারটি চালাবেন, তখন আপনি অ্যাপাচি বা এনগিনেক্স ওয়েবসার্ভারের পেছনে যাত্রী বা ইউনিকর্ন বা পুমা দিয়ে রেলগুলি চালাবেন। অ্যাপাচি বা এনগিনেক্স স্ট্যাটিক ফাইলগুলি (জেএস, সিএসএস, চিত্র) পরিবেশন করা এবং রেল অ্যাপ্লিকেশন সার্ভার (পুমা, ইউনিকর্ন) রেল কোড এবং টেমপ্লেট পরিবেশন করা আরও ভাল। এটি করার জন্য, আপনার বন্ধ করা উচিত config.serve_static_files, এবং মোকাবেলা করার জন্য অ্যাপাচি এবং এনগিনেক্সে উপন্যাসটি কনফিগার করা উচিত assets
চু হং লান

85

আমার ঠিক একই সমস্যা ছিল এবং সেটিংসটি কনফিগারেশন / পরিবেশ / প্রোডাকশন.আরবিতে পেয়েছি:

# Rails 4:
config.serve_static_assets = false

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

এটি পরিবর্তন করে trueএটি কাজ করে Chan ডিফল্টরূপে মনে হয় রেইলগুলি আশা করে যে আপনি আপনার ফ্রন্ট-এন্ড ওয়েবসারভারটি রেল অ্যাপ্লিকেশনটিতে প্রক্সিং না করে পাবলিক ফোল্ডারের বাইরে থাকা ফাইলগুলির জন্য অনুরোধগুলি পরিচালনা করতে কনফিগার করেছেন। সম্ভবত আপনি এটি আপনার জাভাস্ক্রিপ্ট ফাইলগুলির জন্য করেছেন তবে আপনার সিএসএস স্টাইলশিটগুলি নয়?

( রেলগুলি 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 সরিয়ে ফেলা হবে। সেই অনুযায়ী আপনার কনফিগারেশন ফাইলগুলি স্থানান্তর করুন।
ইয়েকটা

আগে যখন আমি এই সমস্যার মুখোমুখি হয়েছিলাম তখন আমার পক্ষে এটির লাইনটি পরিবর্তন হয়ে গিয়েছিল, তবে এখন আমি আবার এটির মুখোমুখি হচ্ছি (আমি জানি না কীভাবে আমি এই পরিস্থিতিতে শেষ করে চলেছি।) এবং এটি যথেষ্ট নয়। ভুল হতে পারে সম্পর্কে আরও কোন পরামর্শ?
IIllIll

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। যদিও এটি 4.2config.serve_static_files রেলের এবং 5 টি কারাগারে রয়েছে । @see github.com/heroku/rails_ser_static_assets/blob/master/lib/…config.public_file_server.enabled
লুকাস নেলসন

3
5.0.0.1 রেলগুলি কনফিগার / পরিবেশ / উত্পাদন.rb রয়েছে config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?যাতে আপনি আপনার এসসিএম-তে চেক ইন করা কোডটি পরিবর্তন না করেই আপনার পরিবেশের জন্য এটি আলাদাভাবে সেট করতে পারেন।
tobinjim

এটি সক্ষম করতে: "RAILS_SERVE_STATIC_FILES =" রফতানি করুন তারপরে আপনি "রেলস-এর উত্পাদন চালান" এটি অক্ষম করতে: "RAILS_SERVE_STATIC_FILES আনসেট করুন"
আলফ্রেডো ওসোরিও

32

ইন /config/environments/production.rbআমি এটি যোগ করতে হয়েছিল:

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

.Js ইতিমধ্যে প্রম্পম্পাইল্ড হয়ে উঠছিল, তবে আমি এটিকে যাইহোক যোগ করেছি। .Css এবং .css.erb দৃশ্যত স্বয়ংক্রিয়ভাবে ঘটে না। ^[^_]থেকে বাদ partials কম্পাইল করা হচ্ছে - এটা কোন RegExp আছে।

এটি সামান্য হতাশার সাথে ডক্স স্পষ্টভাবে জানিয়েছে যে সম্পদ পাইপলাইন ডিফল্টরূপে সক্ষম হয়েছে তবে কেবল জাভাস্ক্রিপ্টগুলিতে প্রযোজ্য এই বিষয়টিটি স্পষ্ট করে না।


আপনাকে config.assets.precompile
ফ্রেডরিক চিউং

23

: আমি পরিবর্তন করে এই সমস্যার সমাধান করতে সক্ষম হন config.assets.compile = falseকরার
config.assets.compile = trueমধ্যে/config/environments/production.rb

আপডেট (জুন 24, 2018) : আপনি ব্যবহার করছেন স্প্রোকেটসের সংস্করণ যদি 2.12.5, 3.7.2 বা 4.0.0.beta8 এর চেয়ে কম হয় তবে এই পদ্ধতিটি সুরক্ষার দুর্বলতা তৈরি করে


7
এর অর্থ কি এই নয় যে রেলগুলি সিডিএন থেকে লোড হচ্ছে তার পরিবর্তে সম্পদগুলি সংকলন করছে?
ওকে ওক

@ বেনজামিনওকস হ্যাঁ, এবং আমি
এটিই

2
এই মোডটি আরও মেমরি ব্যবহার করে, ডিফল্টের চেয়ে খারাপভাবে সম্পাদন করে এবং এটির প্রস্তাব দেওয়া হয় না। একটি এনগিনেক্স প্রক্সি ব্যবহার করা আরও ভাল।
ইয়েকটা

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;আমার অ্যাপ্লিকেশনটির অবস্থান ব্লকটি আমার এনগিনেক্স.কনফ ফাইলটিতে সেট করব।
মার্টিন ভেলিজ

10

উত্পাদনে সম্পদ পরিবেশন করতে আপনার অবশ্যই দুটি জিনিস সম্পাদন করতে হবে:

  1. সম্পদ প্রাক্পম্পাইল করুন।
  2. ব্রাউজারে সার্ভারে থাকা সম্পদগুলি পরিবেশন করুন।

1) সম্পদ প্রাক্পম্পাইল করার জন্য, আপনার বিভিন্ন পছন্দ আছে।

  • আপনি rake assets:precompileআপনার স্থানীয় মেশিনে চালনা করতে পারেন , এটি উত্স কোড নিয়ন্ত্রণ (গিট) এ প্রতিশ্রুতিবদ্ধ করতে পারেন, তারপরে মোতায়েন প্রোগ্রামটি চালান, উদাহরণস্বরূপ ক্যাপিস্ট্রানো o এসসিএম-এ প্রাক্পম্পিল্ড সম্পদ প্রতিশ্রুতি দেওয়ার জন্য এটি ভাল উপায় নয়।

  • আপনি 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

২) এখন, প্রোডাকশন সার্ভারগুলিতে আপনার সম্পদ রয়েছে, আপনাকে সেগুলি ব্রাউজারে পরিবেশন করা দরকার।

আবার, আপনার বেশ কয়েকটি পছন্দ আছে।

  • কনফিগারেশন / পরিবেশ / প্রোডাকশন.আরবিতে রেল স্ট্যাটিক ফাইল পরিবেশন করুন

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

    স্ট্যাটিক ফাইলগুলি পরিবেশন করতে রেলগুলি ব্যবহার করা আপনার রেলের অ্যাপ্লিকেশনটির কার্যকারিতা নষ্ট করবে।

  • স্ট্যাটিক ফাইলগুলি পরিবেশন করতে 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 %>কি ভুল? `
এমারসন্থিস

কোনও কারণে, উত্স স্থাপন যখন এখনও উত্সটি দেখি তখন মূল ফাইলগুলিতে ইঙ্গিত <link data-turbolinks-track="true" href="https://stackoverflow.com/stylesheets/bootstrap.min.css" media="all" rel="stylesheet" />করে তবে জাভাস্ক্রিপ্ট ফাইলগুলি সঠিক! আমি বুঝতে পারি না কেন একই কনফিগারেশনগুলি .js ফাইলগুলির জন্য কাজ করে তবে .এসএসএস করে না।
এমারসন্থিস

Ails.০.০.২০১৩ বেলগুলিতে আমি এই সতর্কতাটি পেয়েছি: অবচয় সতর্কতা: হ্রাস serve_static_filesকরা হয়েছে এবং ails.১ টি কারাগারে সরানো হবে। public_file_server.enabled = trueপরিবর্তে ব্যবহার করুন।
জিএমএ

@ এমারসন্থিস একই! জেএস পুরোপুরি লোড হয় তবে কিছু সিএসএস ফাইল পায় 404। আপনি কি এই সমাধান করেছেন?
IvRRimUm

সম্পদ পাইপলাইন কনফিগারেশনের ক্ষেত্রে এটি প্রায় সবসময়ই একটি সমস্যা। আপনার যদি এমন কোনও স্থানে ফাইল থাকে যা ডিফল্ট নয়, তবে এটি অবশ্যই স্পষ্টভাবে সমস্যা এবং প্রথম উত্তরের মতো কিছু ব্যবহার করে আপনাকে সম্পদ পাইপলাইনটি বলতে হবে।
এমারসন্থিস

3

আপনার Production.rb ফাইল লাইন পরিবর্তন করুন

config.assets.compile = false

মধ্যে

config.assets.compile = true

এবং যোগ করুন

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

সংকলন কেন? আমরা মনে করি উত্পাদনের চলাকালীন সংকলন করতে পারছি না
জেমস টান

1
এটি কখনও করবেন না! যে কেউ কনফিগারেশন.সেটস.কম.পাইলকে সত্যিকারের প্রযোজনায় সেট করে গুলি করা উচিত।
বুকুনি01

2

আমি উবুন্টু সার্ভার ১৪.০৪ , রুবি ২.২.১ এবং রেলস ৪.২.৪ চালাচ্ছি আমি ডিজিটালওশন থেকে একটি মোতায়েনের টিউরিয়াল অনুসরণ করেছি এবং সবকিছু ঠিকঠাক হয়েছে তবে যখন আমি ব্রাউজারে যাই এবং আমার ভিপিএসের আইপি ঠিকানা লিখি তবে আমার অ্যাপটি লোড হয়েছে তবে ছাড়া শৈলী এবং জাভাস্ক্রিপ্ট।

অ্যাপটি ইউনিকর্ন এবং এনগিনেক্সের সাথে চলছে । এই সমস্যাটি সমাধানের জন্য আমি আমার ব্যবহারকারী 'ডিপ্লোয়ারার' এর সাথে এসএসএইচ ব্যবহার করে আমার সার্ভারটিতে প্রবেশ করেছি এবং আমার অ্যাপ্লিকেশন পথে যা '/ হোম / ডিপ্লোয়ায়ার / অ্যাপ্লিকেশনস / ব্লগ' এ চলেছি এবং নিম্নলিখিত কমান্ডটি চালাচ্ছি:

RAILS_ENV=production bin/rake assets:precompile

তারপরে আমি কেবল ভিপিএস পুনরায় চালু করব এবং এটিই! এটা আমার জন্য কাজ করে!

আশা করি এটি অন্য কারও পক্ষে কাজে লাগতে পারে!


2

প্রম্পম্পাইল সেট করা থাকলে আপনার দরকার নেই

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

আপনি সম্ভবত এটি একটি রেক টাস্ক দিয়ে করতে পারেন।


যদিও গিটে আর্টফেসগুলি তৈরি করবেন? আপনি কেবল আপনার বিল্ড প্রক্রিয়ায় রেক টাস্ক যুক্ত করতে পারেন এবং প্রচুর গিটসপ্যাম এড়াতে পারেন (বিশেষত যদি আপনি চতুর এবং জিজিপিং করে থাকেন, যা আপনার করা উচিত)
ড। স্ট্রেনজয়েভ

@ ডাঃ স্ট্রেঞ্জলয়েভ আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ - আমি এ সম্পর্কে যথেষ্ট জানি না -: আপনি কি মূল পোস্টটি বিস্তারিত / সম্পাদনা করতে পারবেন?
বিকেএসপুরগাঁও

1

ফাইলগুলি সংকলনের জন্য ডিফল্ট ম্যাচারে আপনার রত্ন সহ অ্যাপ্লিকেশন / সম্পদ ফোল্ডারগুলি থেকে অ্যাপ্লিকেশন.জে, অ্যাপ্লিকেশন সিএসএস এবং সমস্ত নন-জেএস / সিএসএস ফাইল অন্তর্ভুক্ত থাকে:

আপনার যদি অন্য ম্যানিফাইস্ট বা স্বতন্ত্র স্টাইলশিট এবং জাভাস্ক্রিপ্ট ফাইলগুলি অন্তর্ভুক্ত করতে থাকে তবে আপনি সেগুলি কনফিগারেশন / আরম্ভকারী / সম্পদ.আরবিতে প্রাকপম্পাইল অ্যারে যুক্ত করতে পারেন:

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";

অ্যাপ্লিকেশন.আরবি ফাইল সম্পদের প্রাক-সম্মিলনের ক্রম সেট

উদাহরণ:

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?

সুতরাং স্থিতিশীল ফাইল পরিবেশন করতে env RAILS_SERVE_STATIC_FILESবা ব্যবহার সেট করুন Nginx। অ্যাড config.serve_static_assets = trueএখনও কাজ করবে, তবে ভবিষ্যতে সরানো হবে।


1

ক্যাপিস্ট্রানোকে সম্পদের প্রাক্কম্পাইল করতে দেওয়া বাঞ্ছনীয় নয়, কারণ এটি যুগে যুগে সময় নিতে পারে এবং প্রায়শই সময় ব্যয় করতে পারে। স্থানীয় সম্পদ প্রাকম্পাইল করার চেষ্টা করুন।

1 ম, কনফিগারেশন / অ্যাপ্লিকেশন.আরবিতে সেট করুন config.assets.initialize_on_precompile = false পরে স্থানীয় করুন RAILS_ENV=production bin/rake assets:precompile এবং সেই সমস্ত পাবলিক / সম্পদকে গিটে যুক্ত করুন।

এবং কনফিগারেশন / পরিবেশ / উন্নয়ন.rb, প্রাকম্পম্পিত সম্পদ ব্যবহার এড়াতে আপনার সম্পত্তির পথ পরিবর্তন করুন:

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

আপনার যদি ডিবি সংযোগ সমস্যা থাকে, তার অর্থ আপনার কাছে ডিবি ব্যবহারকারী ইনিশিয়ালাইজার রয়েছে। এটি প্রায় এক উপায় হয়তো যেমন ডুপ্লিকেট production.rb করে একটি নতুন পরিবেশ সেট করতে হয় production2 .rb এবং database.yml মধ্যে, অ্যাড production2 সঙ্গে পরিবেশ উন্নয়ন ডিবি সেটিং। তাহলে কর

RAILS_ENV=production2 bin/rake assets:precompile

যদি আপনি এখনও সম্পদের সাথে কিছু সমস্যার মুখোমুখি হন, উদাহরণস্বরূপ ckeditor, js ফাইলটি কনফিগারেশন / আরম্ভকারী / সম্পদ.rb এ যুক্ত করুন

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


0

আমি ভুল হতে পারি তবে যারা পরিবর্তনের পরামর্শ দেন

config.assets.compile = true

এই লাইনে মন্তব্যটি পড়ছে: # প্রাক্পম্পাইল্ড সম্পদ মিস হয়ে গেলে সম্পদ পাইপলাইনে ফ্যালব্যাক করবেন না।

এটি প্রস্তাব দেয় যে এটিকে সত্য হিসাবে সেট করে আপনি সমস্যার সমাধান করছেন না বরং এটিকে বাইপাস করে প্রতিবার পাইপলাইন চালাচ্ছেন। এটি অবশ্যই আপনার পারফরম্যান্সকে হত্যা করবে এবং পাইপলাইনের উদ্দেশ্যকে পরাস্ত করবে?

আমার একই ত্রুটি ছিল এবং এটি একটি সাব ফোল্ডারে অ্যাপ্লিকেশন চলার কারণে যা রেলগুলি জানত না।

সুতরাং আমার সিএসএস ফাইল যেখানে হোম / সাবফোল্ডার / অ্যাপ / পাবলিক / .... তবে রেলগুলি হোম / অ্যাপ / পাবলিক / এ খুঁজছিল ...

আপনার অ্যাপটিকে সাবফোল্ডার থেকে সরানোর চেষ্টা করুন বা রেলগুলি এটি সাবফোল্ডারে রয়েছে তা বলার চেষ্টা করুন।



0

এমনকি আমরা একই সমস্যার মুখোমুখি হয়েছি যেখানে RAILS_ENV=production bundle exec rake assets:precompileসফল হয়েছে তবে জিনিসগুলি প্রত্যাশার মতো কার্যকর হয়নি।
আমরা দেখতে পেয়েছিলাম যে এখানে ইউনিকর্নই ছিল মূল অপরাধী।

আপনার ক্ষেত্রে একই, এমনকি আমরা সম্পদগুলি সংকলনের পরে ইউনিকর্ন পুনরায় চালু করতাম। এটি লক্ষ করা গিয়েছিল যে ইউনিকর্ন পুনরায় চালু করা হলে কেবল তার কর্ম প্রক্রিয়াগুলি পুনরায় আরম্ভ করা হয় এবং মাস্টার প্রক্রিয়াটি নয়।
সঠিক সম্পদ পরিবেশন না করা এটিই মূল কারণ।

পরে, সম্পদগুলি সংকলনের পরে, আমরা থামলাম এবং ইউনিকর্ন শুরু করলাম যাতে ইউনিকর্ন মাস্টার প্রক্রিয়াটি পুনরায় শুরু হয় এবং সঠিক সম্পদগুলি সরবরাহ করা হয়।
ইউনিকর্ন পুনরায় আরম্ভ করার তুলনায় ইউনিকর্ন থামানো এবং শুরু করা ডাউনটাইমে প্রায় 10 সেকেন্ড নিয়ে আসে। এটি দীর্ঘমেয়াদী সমাধান হিসাবে ইউনিকর্ন থেকে পুমা সরানো হয় যেখানে ব্যবহার করা যেতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.