রুবি ২.7.০ এর সাহায্যে কীভাবে রেলের সতর্কতা বার্তাগুলি ঠিক করবেন


43

কেউ কি এই সমস্যাটির সাথে সমাধান করেছেন Ruby 2.7.0?

আমি rbenvরুবি v2.7.0 ব্যবহার এবং ইনস্টল করেছি এবং তারপরে ব্যবহার করে একটি রেল প্রকল্প তৈরি করেছি Rails v6.0.2.1

বর্তমানে, একটি চালিয়ে

rails s
rails s -u puma
rails s -u webrick

সার্ভারটি প্রস্তুত এবং সাইটটি পরিবেশন করা হয়েছে তবে Consoleলগটিতে আমি দুটি সতর্কতা বার্তা দেখতে পাচ্ছি:

local:~/rcode/rb27$ rails s
=> Booting Puma
=> Rails 6.0.2.1 application starting in development 
=> Run `rails server --help` for more startup options
.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:110: warning: The called method `initialize' is defined here
Puma starting in single mode...
* Version 4.3.1 (ruby 2.7.0-p0), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
* Listening on tcp://[::1]:3000 

সুতরাং, সতর্কতা বার্তা হ'ল:

**.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call**

**.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:110: warning: The called method `initialize' is defined here**

8
পজিশনাল আর্গুমেন্ট এবং কীওয়ার্ড আর্গুমেন্টগুলি রুবি 3.0 এ আলাদা করতে হবে। এটি নিছক সতর্কবাণী। এই প্যাটার্ন দিয়ে কড়াগুলি পূর্ণ। রুবি-lang.org/en/news/2019/12/12/…
জোশ ব্রোডি

3
@ জোশব্রোডি আপনাকে অনেক ধন্যবাদ আমি এই লিঙ্কটি দেখেছি এবং "যদি আপনি অবচয় হুঁশিয়ারিগুলি অক্ষম করতে চান তবে দয়া করে একটি কমান্ড-লাইন যুক্তি ব্যবহার করুন -W: নন-অবচয় বা সতর্কতা যুক্ত করুন [: অবচয়] = আপনার কোডটিতে মিথ্যা। " কিন্তু আমি সামান্য উপর চিন্তা ছিল actionpack v6.0.2.1 জন্য ভাল সমাধান / ফিক্স বিট
Nezir

বোর্ড জুড়ে অবমূল্যায়নের সতর্কতাগুলি গোপন করা একটি বাজে ধারণা, বিশেষত যখন আপনি নিজের ভবিষ্যতের আপগ্রেডগুলি মসৃণ করতে চান।
ভ্লাদ

1
@ ভ্লাদ সম্মত হয়েছে তবে অস্থায়ীভাবে লগের আওয়াজ হ্রাস করা ঠিক আছে (আপনি যদি জানেন যে আপনি কী করছেন)
খলিল ঘরবাউই

উত্তর:


54

সতর্কতাগুলি দমন করতে:

warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call

আপাতত, RUBYOPTআপনার রেল কমান্ডের সাথে পরিবেশের পরিবর্তনশীলটিকে কেবল প্রিফিক্স / পাস করুন :

RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
অথবা
RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate

এটি রুবির আগের সংস্করণগুলির সাথে কাজ না করে।

রুবি এর পূর্ববর্তী সংস্করণগুলির সাথে পিছনে সামঞ্জস্যের RUBYOPT='-W0'পরিবর্তে এটির সাথে এটি উপস্থাপন করুন।

উদাহরণ:

RUBYOPT='-W0' bundle exec rspec

আপনি যদি প্রতিবার কোনও কমান্ড চালাওয়ার জন্য যদি উপসর্গ করতে না চান, তবে কেবল এটি আপনার .zshrcবা .bashrc(আপনি যা ব্যবহার করছেন) এর শেষ লাইনে যুক্ত করুন :

export RUBYOPT='-W:no-deprecated -W:no-experimental'
অথবা
export RUBYOPT='-W0'

নোটগুলির শেষ পয়েন্টটিও এখানে দেখুন:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-


1
এটির সাথে একটি সমস্যা হ'ল রুবির পূর্ববর্তী সংস্করণগুলি ইনস্টল করা আছে যেখানে -W: নন-অবহিত 'পতাকাটি বৈধ নয় ত্রুটি ছুঁড়ে দেবে। আমি রফিউপটি = '- ডাব্লু 0'
ব্যারিওন্টোস

এমন কোনও কাজকে কল করার কোনও উপায় আছে যা কোনও সতর্কতা দেয় না, অর্থাত্ হ্রাস করা হয়নি এমনভাবে কল করার জন্য?
বার্লপ

@ বার্লপ ভাল, সতর্কবার্তা দেওয়ার কাজটি এমন নয়। সতর্কতাগুলি অন্তর্নিহিত কোড থেকে আসে। মূলত হ্রাসগুলি যদি আপনার নিজের কোডে থাকে এবং তা ঠিক করে ফেললে তা সন্ধান করুন। এবং যদি সেগুলি আপনার কোডের অংশ না হয় তবে সমস্যাগুলি খুলুন বা আপনি যে রত্নগুলি অন্তর্ভুক্ত করছেন সেগুলির ভাণ্ডারগুলিতে অনুরোধগুলি টানুন এবং তাদের ঠিক করার জন্য জিজ্ঞাসা করুন। বা তাদের এটি ঠিক করার জন্য অপেক্ষা করুন। কিছু অবমূল্যায়ন এখানে উল্লেখ করা হয়েছে: রুবি-lang.org/en/news/2019/12/25/ruby-2-7-0- খুশি এবং এখানে: rubyreferences.github.io/rubychanges/2.7.html
খলিল ঘরবাউই

@ খলিলঘরবাউই ধন্যবাদ আমি সবেমাত্র করেছিলাম a রুবি এবং রেলগুলি সম্পর্কে নতুন তাড়াতাড়ি আইরিস্ট পেস্টবিন. com/ এসওয়াইজেএসপিপি দেখে মনে হচ্ছে আমার প্রত্যেকের মধ্যে সর্বশেষতম রয়েছে এবং আমি যা করেছি তা একটি ফাঁকা প্রকল্প তৈরি করা হয়েছিল, রেক সাহায্যের চেষ্টা করেছিল এবং রেলের সাথে সতর্কতাও পেয়েছে ডিবি: মাইগ্রেট। আমার ধারণা আমার সেই ভান্ডারগুলিতে যাওয়া উচিত। রেক সম্পর্কে অ্যাকশনপ্যাকের উল্লেখ রয়েছে। রেক ডিবি: মাইগ্রেট বা রেলস ডিবি: মাইগ্রেটে অ্যাকশনপ্যাক, অ্যাক্টিভেকর্ড, অ্যাক্টিভমডেলের উল্লেখ রয়েছে। যদিও এগুলির মধ্যে কিছু স্থানীয় এমনকি রেলের পক্ষে এত অদ্ভুত নয় যে রেলের লোকেরা এটি সঠিকভাবে পেতে পারেনি।
বারলপ

5

স্পষ্টতই রুবি টিমের পরবর্তী রুবি সংস্করণে এই সমস্ত সতর্কতা অপসারণ করতে কিছুটা সময় লাগবে। আপাতত আপনার টার্মিনালে কমান্ড

`RUBYOPT='-W:no-deprecated' rails s` 

আমার মৌলিক, সরল নতুন রেলগুলি 6.0.2.1 এন্ড& রুবি ২..0.০ প্রকল্পে একটি প্রশ্নে উপরের এই দুটি সতর্কতা লাইনগুলি সরান।

কমান্ড সহ

RUBYOPT='-W:no-experimental' rails s

আপনি পরীক্ষামূলক বৈশিষ্ট্যগুলি সম্পর্কে সতর্কতাগুলি গোপন করবেন।

আপনি এই দুটিকে একটি কমান্ডের মতো সংযুক্ত করতে পারেন:

RUBYOPT='-W:no-deprecated -W:no-experimental' rails s

যাইহোক, আমি রেলগুলি 5.2 এবং রুবি ২.6.৪ দিয়ে নির্মিত আমার পুরানো প্রকল্পের মধ্যে এই কমান্ডগুলি চেষ্টা করেছিলাম পরে রেলগুলিতে আপগ্রেড করেছি এবং বিভিন্ন রেল অ্যাক্টিভ * মডিউল এবং রুবি রত্ন থেকে প্রাপ্ত সমস্ত সতর্কতা বার্তার জন্য তারা ভালভাবে কাজ করে নি।

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


5

এটি কেবল একটি সতর্কতা হিসাবে এবং কোনও কিছুর উপর প্রভাব ফেলবে না। আপনি কেবল তাদের দমন করতে পারেন। আমার জন্য উপযুক্ত 2 হিসাবে সমাধান 2 খুঁজে পেয়েছি।

বিকল্প 1. রেল সার্ভার দিয়ে শুরু করুন RUBYOPT='-W:no-deprecated' rails s

বিকল্প 2. export RUBYOPT='-W:no-deprecatedআপনার বাশ / zsh প্রোফাইলে সেট করুন

বিকল্প 3. Warning[:deprecated] = falseআপনার রুবি কোড সেট করুন

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