কোনও রুট [জিইটি] / সম্পদের সাথে মেলে না


143

আমার কাছে একটি রেলস অ্যাপ রয়েছে যা আমি উত্পাদন পরিবেশে পরীক্ষা করার চেষ্টা করছি। আমি দৌড়েছি RAILS_ENV=production rake assets:precompileযা আমার সমস্ত সম্পদ / জনসাধারণ / সম্পদে উত্পন্ন করে। সমস্যাটি হ'ল আমি যখন আমার অ্যাপ্লিকেশনটি ডাব্লু / RAILS_ENV=production rails s thinআমি পাই তখন:

ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"):

যদিও এই ফাইলটি উপস্থিত রয়েছে /public/assets/application-eff78fd67423795a7be3aa21512f0bd2.css

কেন আমি এই পাচ্ছি কোন চিন্তা RoutingError?

উত্তর:


230

উত্পাদন মোডে, রেল স্থিতিশীল সম্পদের পরিবেশন করার জন্য দায়বদ্ধ হবে না। অতএব, আপনি এই ত্রুটি পেয়ে যাচ্ছেন। পাতলা এটিও করবে না, কারণ এটি কেবলমাত্র রেলগুলির চারপাশে একটি মোড়ক।

এটি config/environments/production.rbআপনার অ্যাপ্লিকেশনটিতে এই সেটিংস দ্বারা নিয়ন্ত্রিত হয় :

config.serve_static_files = false

বা কারাগারে 5:

# config/environments/production.rb
config.public_file_server.enabled = true

বা ENV['RAILS_SERVE_STATIC_FILES']সত্য সেট করা।

আপনি সেটি সেট করতে পারেন trueবা অ্যাপাচি বা এনগিনেক্সের মতো সত্যিকারের সার্ভার ব্যবহার করতে পারেন যা স্থির সম্পদের পরিবেশন করবে। আমি সন্দেহ করি পাও এটি করতে পারে।


আপনি যদি হেরোকুতে থাকেন তবে তারা rails_12factorমণির ব্যবহারের পরামর্শ দেয় যা এই সেটিংটি ডিফল্টরূপে সক্ষম করে। রত্নটিকে productionআপনার একটি গোষ্ঠীতে রাখুন Gemfile:

group :production do
  gem 'rails_12factor'
end

5
কেউ কি জানেন হিরকুতে মোতায়েনের সময় যদি এই সমস্যার সমাধান হয়?
কাইল Clegg

পরিষ্কার উত্তর, অনেক ধন্যবাদ। আমি thinআমার বিকাশ মেশিন ব্যবহার করে উত্পাদন পরিবেশ পরীক্ষা করছিলাম বলে আমি এই পৃষ্ঠায় পৌঁছেছি। আমি সম্পদগুলি সংকলন করছি তবে application.cssখালি ছিল এবং সার্ভার লগ ওপিতে ত্রুটি দিয়েছে।
veritas1

2
4 রেলগুলিতে এটি হবে config.serve_static_filesconfig.serve_static_assets
অবনতিহীন

একটি আরএইচইএল বিতরণে স্থাপন করে, আমি ডিফল্ট পরিবেশের কনফিগারেশনটি স্পর্শ করি নি, কেবল রেলস v4.2.4 এ রেল_12 ফ্যাক্টর রত্ন যুক্ত করেছি, এখন সবকিছু ঠিক আছে। অনেক অনেক ধন্যবাদ
ওনুর কুকুক্কেস

1
@ অনুর: এর অর্থ হল যে আপনার রেল অ্যাপ্লিকেশনটি আপনার ওয়েবসভারের চেয়ে সম্পদগুলি পরিবেশন করবে। আমি এই কনফিগারেশনটি মোটেও সুপারিশ করি না কারণ এটি আপনার রেল সার্ভারকে ধীর করে দিতে পারে।
রায়ান বিগ

12

রায়ান উপরে যা বলেছিল তার সাথে যুক্ত করে, রেল সম্পদ পাইপলাইন গাইড আপনার জন্য স্থিতিশীল সম্পদের পরিবেশন করতে কীভাবে অ্যাপাচি বা এনগিনেক্স সেটআপ করবেন তা বর্ণনা করে।

http://guides.rubyonrails.org/asset_pipeline.html

স্থিতিশীল সম্পদের পরিবেশন করার জন্য আপনার সত্যিকার অর্থে এনগিনেক্স বা অ্যাপাচি সেটআপ করা উচিত, কারণ তারা মোংরেল / পাতলা / ইউনিকর্নের চেয়ে এই কাজের জন্য আরও ভাল।


7

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

   # serve static assets
   location ~ ^/assets/ {
     expires 1y;
     root  /path/to/my/cool_project/public;
     add_header Cache-Control public;

     add_header ETag "";
     break;
   }

এনজিনেক্স পুনরায় চালু করুন এবং এটিই।


3

আসলে আপনার কোনও ডিফল্ট কনফিগারেশন সংশোধন করার দরকার নেই। আপনি কেবল সম্পদের ফাইলটি আবার সংকলন করুন

সর্বজনীন / সম্পদ মুছে ফেলুন

1. সম্পত্তি সম্পদ: ক্লোবার RAILS_ENV = উত্পাদন

সম্পদ সংকলন

2. সম্পত্তি সম্পদ: পূর্ববর্তী RAILS_ENV = উত্পাদন

3.স্ট্রিস্ট সার্ভার, যেমন (এনগিনেক্স)


@ স্টিভও 7, স্পষ্টতই, রেলগুলি ডিফল্টরূপে মোডে সম্পদ পাইপলাইন ব্যবহার করে।
আলবার্ট.কুইং

2

4.2 কিলগুলি আপনার কনফিগারেশন / পরিবেশ / স্টেজিং.আরবি এবং প্রোডাকশন.rb ফাইলগুলিতে এই লাইনটি যুক্ত / পরিবর্তন করেছে:

config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?

যদি RAILS_SERVE_STATIC_FILES সেট না করা থাকে এবং আপনি আপনার রেল সার্ভারের (যেমন ইউনিকর্নের মতো) পরিষেবা সম্পদ হন তবে এটি ডিফল্ট "মিথ্যা" হয়ে যাবে এবং রাউটিংইরর ঘটবে।

এটি একটি সহজ ফিক্স:

config.serve_static_files = true

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

2

রেল 5 এ, config.serve_static_filesবিকল্পটি পরিবর্তিত হয়েছে, সুতরাং এখন আপনার প্রয়োজন

config.public_file_server.enabled = true

স্থানীয়ভাবে সম্পত্তি পরিবেশন করা।


2

কোড নীচে চেষ্টা করুন:

কনফিগ / পরিবেশের / production.rb

config.assets.compile = true

তারপরে কমান্ড রান করুন:

RAILS_ENV=production rake assets:precompile

তারপরে সমস্ত সংকলন ফাইল এবং ম্যানিফেস্ট ফাইলটি সার্ভারে চাপ দিন।


1

আমি আমার রেল 5 অ্যাপ্লিকেশন স্থাপন করতে মিনা + পুমা + এনজিনেক্স ব্যবহার করি, পেয়েছি I

ActionController::RoutingError (No route matches [GET] "/assets/application-658cf2ab3ac93aa5cb41a762b52cf49d7184509c307922cd3fbb61b237a59c1a.css")

কনফিগারেশন / পরিবেশ / product.rb পরীক্ষা করুন

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

এনজিআইএনএক্স এটি ইতিমধ্যে পরিচালনা করে , এটিকে সঠিকভাবে কনফিগার করে

upstream puma {
  server unix:///home/deploy/apps/appname/shared/tmp/sockets/appname-puma.sock;
}

server {
  listen 80 default_server deferred;
  # server_name example.com;

  root /home/deploy/apps/appname/current/public;
  access_log /home/deploy/apps/appname/current/log/nginx.access.log;
  error_log /home/deploy/apps/appname/current/log/nginx.error.log info;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @puma;
  location @puma {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    proxy_pass http://puma;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 10M;
  keepalive_timeout 10;
}

জিনিস ভাল কাজ করবে।


1

আমার মতো পরীক্ষার পরিবেশে যদি কেউ এখানে একই ত্রুটি নিয়ে আসে তবে আমাকে কী সাহায্য করেছে তা এখানে:

rails assets:clobber assets:precompile RAILS_ENV=test

তারপর:

ps axu | grep your-username

এটি spring serverপ্রক্রিয়া এবং তার PID, তারপর মাধ্যমে এটি হত্যা:

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