কী করে "সতর্কতা প্রতিক্রিয়ার বডিটির সামগ্রী-দৈর্ঘ্য নির্ধারণ করতে পারেনি।" আমি কীভাবে তা থেকে মুক্তি পাব?


320

Ails.১ টি রেলগুলিতে আপগ্রেড করার পরে আমি আমার বিকাশের লগে এই সতর্কতা বার্তাটি দেখছি:

সতর্কতা প্রতিক্রিয়া বডি কন্টেন্ট দৈর্ঘ্য নির্ধারণ করা যায়নি। প্রতিক্রিয়া বা সেট সামগ্রীর দৈর্ঘ্য সেট করুনResponse#chunked = true

এর অর্থ কী এবং আমি কীভাবে এটি সরিয়ে ফেলতে পারি? এটা কি কোনো সমস্যা?


1
এখানেও, আমার জন্য এটি যখন জেএসের মাধ্যমে দূরবর্তী কল রয়েছে তখন ঘটছে।
টিম বাশ

2
আমি আজ রুবি ১.৯.৩ এ আপগ্রেড হওয়ার সাথে সাথে এটি পেতে শুরু করেছি। আগে দেখা হচ্ছিল না। আমি মনে করি এটি অবশ্যই রুবি ১.৯.৩ এ WEBrick এর পরিবর্তনের কারণে হতে পারে ...
টাইলার রিক

50
এটি সত্যই একটি ওয়েইব্রিক সমস্যা। এর মধ্যে, আপনি আপনার জেমফাইলে 'পাতলা' রত্ন যুক্ত করতে পারেন এবং ডাব্লুইউব্রিকের পরিবর্তে বুটসুলগুলি বুট করতে পারেন, যেমন rails s thin; Ta-দা! আর কোনও সতর্কতা নেই।
স্কট

উত্তর:


229

একই প্রশ্নটি রেল-কোরের অন্যতম সদস্যকে জিজ্ঞাসা করলেন:

https://twitter.com/luislavena/status/108998968859566080

এবং উত্তর:

https://twitter.com/tenderlove/status/108999110136303617

হ্যাঁ, ঠিক আছে। এটি পরিষ্কার করা দরকার, তবে কিছুই ক্ষতি হচ্ছে না।


9
তাই, যদি বার্তাগুলি আপনাকে বিরক্ত করে, তবে কাজের হিসাবে আপনি পাতলা ব্যবহার করতে পারেন ( gem 'thin'আপনার রত্নটিতে যোগ করুন , আপনার সার্ভারটি ব্যবহার করে শুরু করুন rails server thin)। (ওহো, শুধু খেয়াল @Scott লো ইতিমধ্যেই এই উপরে বলেন যে।)
fearless_fool

280
এই ধরণের জিনিসগুলিকে "কিছুই ক্ষতিগ্রস্থ করা হচ্ছে না" বিভাগে অন্তর্ভুক্ত করা হলে আমি এই বিরক্তিজনক বলে মনে করি। হাজার হাজার লোকেরা কী ঘটছে তা নির্ধারণের জন্য সময় নষ্ট করে যাচ্ছেন তা বিতর্ক করার পক্ষে যথেষ্ট।
মার্ক ফ্রেজার 12

16
@ কেনটহম্পসন হ'ল সমস্যা ওয়েবিক, রেলস নয়। ওয়েব্রিক কীট-লাইভ সংযোগগুলি সমর্থন করে না এবং এইভাবে আমরা দেখছি সতর্কতা / সমস্যা উত্থাপন করে। আপনি ওয়েবে উপযুক্ত / আরও ভাল ওয়েবসভার (পাতলা বা যাত্রী স্ট্যান্ডলোন এর মতো) ব্যবহার করার পরামর্শ দেওয়া হয়। রুবির আসন্ন সংস্করণগুলি এই সমস্যার সমাধান করবে।
লুইস লভেনা

3
আমাদের বিকাশ পিসিতে থাকা ওয়েব্রিক সার্ভার একই .js.erb ফাইলটিকে দুবার উপস্থাপন করে। দ্বিগুণ রেন্ডারিং সমস্যাটি আমাদের প্রযোজনা সার্ভারে অদৃশ্য হয়ে যায় যা এনজিএনএক্স চলছে। সুতরাং এটি আমাদের মতো ক্ষেত্রে বাস্তব সমস্যা।
user938363

2
উত্তরে লিঙ্কের পরিবর্তে টুইটার পোস্টের সামগ্রী থাকতে হবে।
পেড্রো রোলো

78

নিম্নলিখিত প্যাচটি আমার ক্ষেত্রে সমস্যার সমাধান করেছে ; আমার জন্য আর কোনও সতর্কতা নেই

204_304_keep_alive.patch

উপরের লিঙ্কে দেখানো হয়েছে মাত্র 205 লাইনে httpresponse.rb ফাইলটি সম্পাদনা করুন; প্রকৃতপক্ষে লিঙ্কটি রুবির ভবিষ্যতের মুক্তির সংশোধন দেখায়।

আমি একক ব্যবহারকারীর হিসাবে আরভিএমের মাধ্যমে ইনস্টল করা রুবি ১.৯.৩-পি ০.০ এ রেল ব্যবহার করছি। সুতরাং আমার ক্ষেত্রে অবস্থানটি হ'ল:

~/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb

পরিবর্তনের জন্য ফাইলের অবস্থান ইনস্টলেশন, আরভিএম বা না, বা একাধিক-ব্যবহারকারী বা একক ব্যবহারকারীর উপর নির্ভর করে আলাদা হয়, তাই আমি কেবল এর শেষ অংশটি দিচ্ছি:

.../ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpresponse.rb

আমি আশা করি এটি কারও পক্ষে সহায়ক হতে পারে।

সম্পাদনা: এটি রুবি প্রকল্পের ট্রাঙ্ক শাখায় প্রশ্নটির রেখাটি পরিবর্তিত প্রতিশ্রুতির লিঙ্ক


আমি ডেবিয়ান স্কিজেস, অ্যাপ্লিকেশন রুবি সংস্করণ 1.9.3p194 ব্যবহার করছি এবং এখনও এই সমস্যা দেখা দেয়। রুবি তারিখটি ২০১২-০৪-২০ এবং টেন্ডারলভের প্যাচ তারিখটি মঙ্গলবার ১৩ ডিসেম্বর 07:30:14 ২০১১ হয়েছে, তবে এটি এখনও ঘটে।
ক্রিস্টিয়ানপ

ডেবিয়ান স্কিজে, আরভিএম-ইনস্টল করা রুবি সংস্করণ 1.9.3-p327 WEBrick এখনও এই সমস্যাযুক্ত সতর্কতা দেয়।
মার্কডি ব্ল্যাকওয়েল

56

স্রেফ স্পষ্টভাবে রত্নটিকে জেমফাইলে যুক্ত করা আমার জন্য সতর্কতা বার্তাগুলি থেকে মুক্তি পেয়েছে:

group :development do
  gem 'webrick', '~> 1.3.1'
end

5
হ্যাঁ, আমার জন্যও। এই কাজটি বৈশিষ্ট্য # 5481 জেমিফাইং রুবি স্ট্যান্ডার্ড লাইব্রেরিতে থাকতে পারে এর একটি সূত্র : "নকল রত্নগুলির কারণে, 'মণি আপডেট' দ্বারা ইনস্টল করা স্টাডিলিবের নতুন ফাইলগুলি অবহিত করা হয় যদি না ব্যবহারকারী কোনও রত্ন ['ওয়েব্রিক'] স্পষ্টভাবে না লিখে থাকে । "
মার্কডি ব্ল্যাকওয়েল

2
এটি 'এড়িয়ে যাওয়া', বা 'প্যাচ ওয়েব্রিক' এর চেয়ে অনেক বেশি ভাল। ধন্যবাদ!
নেসুর

54

আপনি ডিফল্ট ওয়েব্রিকের পরিবর্তে পাতলা ব্যবহার করতে পারেন। এটিতে যুক্ত করুনGemfile gem 'thin'

তারপরে rails s thinপাতলা ব্যবহার করবে এবং সতর্কতা অদৃশ্য হয়ে যাবে।


হ্যাঁ. সাম্প্রতিক মাসগুলিতে এটিই শেষ করেছি। রায়ান বেটস সাম্প্রতিক একটি রেলকাস্টেও উল্লেখ করেছেন।
নেট বার্ড

1
@ ক্যামের গান: প্রায় সঠিক: রেল পাতলা ওয়েব্রিকের পরিবর্তে পাতলা ব্যবহার করবে এবং সতর্কতা অদৃশ্য হয়ে যাবে।
নির্ভীক_ফুল

1
আমি করা thinমধ্যে developmentগ্রুপ। 4 টি rails s
আঁকুন

15

যদি আপনি .rvm ব্যবহার করে থাকেন তবে এটি ঠিক করার জন্য এটি করুন ...

জোও সোয়ারস দ্বারা উল্লিখিত হিসাবে , তার কাছে সমস্ত কৃতিত্ব, আপনি যদি উন্নয়নের বিষয়ে এই সতর্কতা থেকে মুক্তি পেতে না চান তবে আপনি এটি করতে পারেন।

  1. এই ফাইলটি খুলতে আপনার প্রিয় সম্পাদক ব্যবহার করুন:

    ~/.rvm/rubies/<ruby-version>/lib/ruby/1.9.1/webrick/httpresponse.rb
  2. এতে থাকা লাইনে যান (আমার কাছে এটি সত্যই 206 লাইন ছিল):

    if chunked? || @header['content-length']
  3. এই প্যাচ থেকে নেওয়া, এটি পরিবর্তন করুন :

    if chunked? || @header['content-length'] || @status == 304 || @status == 204
  4. ফাইলটি সংরক্ষণ করুন এবং শেষ পর্যন্ত আপনার রেল সার্ভার পুনরায় চালু করুন


1
ধন্যবাদ! line 107আমার জন্য ছিল ।
gbdev

12

ওয়েবিকের প্রতিশ্রুতি দিয়ে এই সমস্যাটি রুবির ট্রাঙ্ক শাখায় স্থির করা হয়েছে ।

আপনি আপনার সেটআপে এই নির্দিষ্ট ওয়েব্রিক ফাইলটি একইভাবে সম্পাদনা করতে পারেন। আনুমানিক অবস্থান এটি দ্বারা পাওয়া যাবে:

gem which webrick

আসলে ফাইলটি সম্পাদনা করতে:

nano \`ruby -e"print %x{gem which webrick}.chomp %Q{.rb\n}"\`/httpresponse.rb

(অথবা ন্যানোর পরিবর্তে আপনার প্রিয় সম্পাদক ব্যবহার করুন))


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

ব্যাকটিক্স সম্ভবত এড়ানো উচিত নয়। সুতরাং এটি সত্যিই হওয়া উচিত: nano `ruby -e"print %x{gem which webrick}.chomp %Q{.rb\n}"`/httpresponse.rb
মার্কডি ব্ল্যাকওয়েল

5

জেআরবি সংস্করণ: আপনি .rvm ব্যবহার করছেন, এটি ঠিক করার জন্য এটি করুন ...

জোও সোয়ারস এবং কেজেলস্কি দ্বারা উল্লিখিত হিসাবে , আপনি যদি উন্নয়নের বিষয়ে এই সতর্কতা থেকে মুক্তি পেতে চান এবং আপনি জেআরবি ব্যবহার করছেন তবে আপনি এটি করতে পারেন।

  1. এই ফাইলটি খুলতে আপনার প্রিয় সম্পাদক ব্যবহার করুন:

    ~/.rvm/rubies/jruby-<version>/lib/ruby/<1.8 or 1.9>/webrick/httpresponse.rb
  2. এতে থাকা লাইনে যান (আমার জন্য এটি 205 লাইন ছিল):

    if chunked? || @header['content-length']
  3. এই প্যাচ থেকে নেওয়া, এটি পরিবর্তন করুন :

    if chunked? || @header['content-length'] || @status == 304 || @status == 204
  4. ফাইলটি সংরক্ষণ করুন এবং শেষ পর্যন্ত আপনার রেল সার্ভার পুনরায় চালু করুন।


@Schwabsauce প্রথম নির্দেশ ব্যতীত, বাকিগুলি জেআরবি-নির্দিষ্ট নয়; এটি ফাইল সনাক্ত করতে সহায়তা করে। অন্যান্য নির্দেশাবলী স্পষ্টতার জন্য পুনরাবৃত্তি হয়।
ক্রিম্বো

3

ওয়েব্রিক থেকে আপত্তিকর লাইনটি সরিয়ে দেয় এমন অন্য একটি কাজ। এটি ঠিক তেমন দরকারী নয়:

cd `which ruby`/../../lib/ruby/1.9.1/webrick/ && sed -i '.bak' -e'/logger.warn/d' httpresponse.rb

(আপনার প্রয়োজন হতে পারে sudo)


3

যোগ

config.middleware.use Rack::ContentLength

আপনার application.rbফাইলটিতে, এবং সতর্কতা এমনকি ওয়েব্রিকের সাথে অদৃশ্য হয়ে যাবে। এটি Content-Lengthকোনও জসন বা পাঠ্য প্রতিক্রিয়া দেওয়ার সময় উত্পাদনে যথাযথভাবে সেট করবে ।


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