হেরোকুতে রেলগুলি ২.৩-স্টাইলের প্লাগইন এবং অবমূল্যায়ন সতর্কতা চলছে running


155

আমি রেল ৩.২ এ আপগ্রেড করছি এবং রেক ডিবি চালিয়ে যাচ্ছি: মাইগ্রেশন আমাকে ফর্মের বেশ কয়েকটি ত্রুটি দেয়:

প্রসারণ সতর্কতা: আপনার কাছে বিক্রেতা / প্লাগইনগুলিতে রেলগুলি ২.৩-স্টাইলের প্লাগইন রয়েছে! এই প্লাগইনগুলির জন্য সমর্থনগুলি 4.0 রেলগুলিতে সরানো হবে। এগুলি সরান এবং এটিকে আপনার জেমফাইলে বান্ডিল করুন, বা আপনার অ্যাপ্লিকেশনটিতে lib / myplugin / * এবং কনফিগারেশন / আরম্ভকারী / myplugin.rb হিসাবে ভাঁজ করুন। এ সম্পর্কে আরও তথ্যের জন্য প্রকাশের নোটগুলি দেখুন: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been- রিলিজযুক্ত । (এপ / অ্যাপ / রেকফিল থেকে কল করা হয়েছে: 7)

হতবাক হওয়ার বিষয়টি হ'ল আমার vendor/pluginsডিরেক্টরিটি খালি - এমন কোনও প্লাগইন ডিরেক্টরি রয়েছে যা এটি উল্লেখ করছে?


1
আমার কাছে আরও জিনিস ছিল বলে আমার জন্য আরও উদ্বেগজনক ছিল, তবে এটি অপসারণের পরেও হিরোকু থেকে ত্রুটি চলেছে! দুর্দান্ত প্রশ্ন, দুর্দান্ত উত্তর
ফ্যান্টমওহলে

উত্তর:


203

আপনি কি হেরোকু ব্যবহার করছেন?

হেরোকু রিয়েল ৩.০ অ্যাপ্লিকেশনগুলিতে প্লাগইনগুলি ইনজেক্ট করবে R ( হেরোকু রুবি সমর্থন 2013-10-26)

4 রেলগুলিতেও Rails_12 ফ্যাক্টর রত্ন প্রয়োজন।

যদি এই মণি আপনার অ্যাপ্লিকেশনটিতে উপস্থিত না থাকে, আপনি মোতায়েনের সময় একটি সতর্কতা পাবেন এবং আপনার সম্পদ এবং লগগুলি কার্যকর হবে না। ( হেরোকু ২০১৩-১০-২ails এ রেলগুলি 4 )

সম্প্রতি 2013-08 হিসাবে, হিরকু সবসময় 3 টি অ্যাপ্লিকেশনগুলিতে প্লাগইনগুলি ইনজেকশন করে, এমনকি প্রস্তাবিত রত্নগুলির সাথে অ্যাপ্লিকেশনও। এটি রুবি বিল্ডপ্যাকটি নিয়ে একটি সমস্যা ছিল এবং এটি পিআর 11 দ্বারা স্থির হয়েছিল , ২০১৩-০৮-০6 এ একীভূত হয়েছিল।


1
হ্যাঁ, আমি বুঝতে পারি যে সমস্ত হুঁশিয়ারিগুলি আমার হিরোকু স্ক্রিপ্ট এবং লগ থেকে এসেছে। আমি ধরে নেব যে (ক) এটি প্লাগইন ইনজেকশন এবং (খ) হেরোকু টিম আসল সমস্যা হওয়ার আগে এটি ঠিক করবে।
নির্ভীক_ফুল

আমি একজন নবাগত এবং আমি কীভাবে রেলটিস -৩.২.০ সম্পাদনা করব তাতে কিছুটা আটকে আছি। আপনি দয়া করে সাহায্য করতে পারেন।
বেনিয়ামিন

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

2
আমি ইনিশিয়ালাইজার gist.github.com/1709421 যোগ করার চেষ্টা করেছি তবে এটি কার্যকর হয় না (আমার ধারণা অ্যাপ্লিকেশন তুলনায় প্লাগইনগুলি আগে লোড হয়েছে)। আমার পরামর্শটি চিন্তা করার দরকার নেই ... এটি কেবল আওয়াজ।
ম্যাথু রুডি

3
এক বছর পরে ... হিরকু থেকে কোনও পরিবর্তন হয়নি।
আদালতসমাজ

12

আপনি চেষ্টা করতে পারেন

::ActiveSupport::Deprecation.silenced = true

আপনার production.rbযেহেতু এটি কেবল গোলমাল।


5
আদর্শভাবে একজন কেবল এই নির্দিষ্ট সতর্কতাটিকে দমন করবে, আপনি কি জানেন যে এটি সম্ভব কিনা?
ভিনসেন্ট

আপনি যদি প্রোডাকশনে এটি
করেন।আরবি আপনার

2
আমার জন্য সতর্কতাগুলি দমন করা নয়
লিওপড

6
এই সতর্কতাটি দমন করার জন্য একটি হ্যাক হ'ল অ্যাপ্লিকেশন.আরবিতে নিম্নলিখিতগুলি যুক্ত করা:ActiveSupport::Deprecation.behavior = Proc.new { |msg, stack| $stderr.puts msg unless msg =~ /You have Rails 2.3-style plugins/ }
লিরন ইয়াহদাভ

8

কনফিগারেশন / পরিবেশে.আরবি যোগ করুন:

ActiveSupport::Deprecation.silenced = true 

রেল শুরু করার আগে যেমন:

# Load the rails application                                                                                                                                             
require File.expand_path('../application', __FILE__)

ActiveSupport::Deprecation.silenced = true                                                                                                                               

# Initialize the rails application                                                                                                                                       
MyApp::Application.initialize!

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

# Load the rails application                                                                                                                                             
require File.expand_path('../application', __FILE__)

ActiveSupport::Deprecation.silenced = true                                                                                                                           

# Initialize the rails application                                                                                                                                       
MyApp::Application.initialize!

কেবলমাত্র উত্পাদনের নিরবতা বজায় রাখতে আপনি এটি একটি ব্লকে canচ্ছিকভাবে মোড়ানো করতে পারেন:

if ENV['RAILS_ENV'] == "production"
  ActiveSupport::Deprecation.silenced = true
end

হুম .. এটি আমার সতর্কতাটিও সরিয়ে দেয় না।
মার্টিন

আমি প্রথমে দুইটা মন্তব্য উপরে এই উত্তরটি বি / সি আপ পাস, কিন্তু এটা আসলে করেনি আমার জন্য হবে। চলমান রেলগুলি ৩.২..6। YMMV।
নোয়াচ ম্যাগডম্যান

4

আমি যে সেরা পদ্ধতির সন্ধান পেয়েছি তা এখানে নথিভুক্ত করা হয়েছে । এটি ধরে নিয়েছে যে আপনি এই প্রশ্নটি অনুসন্ধান করেছেন এবং খুঁজে পেয়েছেন কারণ আপনার কাছে পুরানো স্টাইলের প্লাগইন রয়েছে।

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


+1 টি। আমার সহজ রেলগুলি ২.৩ প্লাগইনকে ৩.২ এ রূপান্তর করতে আমি ম্যাট কনিবিয়ার আপনাকে একটি দুর্দান্ত ওয়াকথ্রু লিঙ্ক (@ লিঙ্কযুক্ত লিঙ্কযুক্ত পৃষ্ঠায় পাওয়া যায়) দিয়েছি using আমি এই সমাধানটি পছন্দ করেছি কারণ এটি কেবল সতর্কবাণীগুলিকে নিঃশব্দ করে দেয়নি, এটি আসলে তাদের ঠিক করে দেয়।
যিরমিয়

1

কেবল নীচে বানরের প্যাচ .ুকিয়ে দিন /lib/silence_heroku_warnings.rb

module Rails
  class Plugin < Engine

    alias :not_silenced_initialize :initialize

    def initialize(root)
      ActiveSupport::Deprecation.silence{ self.send :not_silenced_initialize, root }
    end

  end
end

এবং এটির config/application.rbজন্য প্রয়োজনীয় প্রয়োজন ঠিক পরেই:

require 'rails/all'
require File.expand_path('../../lib/silence_heroku_warnings', __FILE__)

2.x- স্টাইলের প্লাগইনগুলি থেকে সমস্ত অবমাননাকে নীরব করা উচিত। অন্যান্য অবচয়গুলি প্রদর্শিত হবে।


1

সতর্কতাগুলি স্থির করার চেয়ে একটি পরিষ্কার উপায়, আপনি যা করতে পারেন তা এখানে।

লগার ইনজেকশনের জন্য আপনি হেরোকুর নতুন রত্নটি ব্যবহার করার চেষ্টা করতে পারেন যা জ্যারেড বেক তার উপরের উত্তরে উল্লেখ করেছেন ।

পরিবর্তে আমরা যা করেছি তা হ'ল:

আপনার vendor/pluginsফোল্ডারে যদি একই নামে কোনও ডিরেক্টরি থাকে তবে আপনি হিরোকুকে নিজস্ব প্লাগইনগুলি ইনজেকশন করতে বাধা দিতে পারেন । ফোল্ডারটি সবেমাত্র থাকা দরকার। হেরোকু তার প্লাগইনটি ইনজেক্ট করবে না এবং যদি কোনও কোড না থাকে, তবে রেলগুলি হ্রাসকারী সতর্কতাগুলির সাথে আপত্তি জানাবে না। আমরা এইটির ব্যাখ্যা দিয়ে একটি রিডমি ফাইল রেখেছি:

vendor/plugins/rails_log_stdout/readme.md

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


.gitkeepবিক্রেতা / প্লাগইন / Rails_log_stdout নামে একটি ফাঁকা ফাইল যুক্ত .gitkeepকরা গিট ব্যবহার করার সময় একটি খালি ডিরেক্টরি রাখার জন্য একটি কনভেনশন।
tmaier

যথেষ্ট সুস্পষ্ট, আমি কেন আরও কিছুটা প্রাধান্য দিয়েছি, সে কারণেই আমি রেডমে পদ্ধতির পছন্দ করি। আপনি ঠিক আছেন যদিও এটি .gitkeepএকটি সম্মেলন।
ওল্ফ্রাম আর্নল্ড

0

অবহেলা বিজ্ঞপ্তিগুলি স্থির করার নতুন উপায়টি হ'ল:

config.active_support.deprecation = :silence

আপনার config/environments/production.rbফাইল


3
এছাড়াও আমার জন্য সতর্কবার্তা দমন না।
লিওপড

0

দেখে মনে হচ্ছে হেরোকু শেষ পর্যন্ত এটিকে সম্বোধন করেছে।

   Injecting plugin 'rails_log_stdout'
   Injecting plugin 'rails3_serve_static_assets'
   Add 'rails_12factor' gem to your Gemfile to skip plugin injection
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.