আমি রুবি প্রাইয়ের সাথে কীভাবে লুপ থেকে সরে যেতে পারি?


212

আমি আমার রেল অ্যাপ্লিকেশন সহ প্রাই ব্যবহার করছি। আমি binding.pryকোনও সমস্যা চেষ্টা ও ডিবাগ করার জন্য আমার মডেলের একটি লুপের ভিতরে রেখেছি। উদাহরণ স্বরূপ:

(1..100).each do |i|
  binding.pry
  puts i
end

আমি যখন টাইপ করি তখন quitএটি পরবর্তী পুনরাবৃত্তিতে যায় এবং আবার থামবে। লুপ থেকে সরে যাওয়ার কোনও উপায় কি তাই আমাকে quit100 বার টাইপ করতে হবে না ?

বর্তমানে এটি থেকে কীভাবে বেরিয়ে আসবেন আমি জানি তার একমাত্র উপায় হ'ল CTRL+ ব্যবহার Cএবং অ্যাপ্লিকেশনটি পুনরায় চালু করা।

উত্তর:


412

নিঃশর্ত প্রাই থেকে প্রস্থান করতে টাইপ করুন

exit-program

@ নিক এর মন্তব্য থেকে সম্পাদনা করুন : এছাড়াও কাজ করে:

!!!

ধন্যবাদ ইভান্ড্রো, আমি ঠিক এটিই খুঁজছিলাম!
— রায়ান

যদিও আপনি স্পষ্টতই সরাসরি বাঁধাইটিকে আঘাত করবেন, ঠিক ব্যবহার exitকরে প্রোগ্রামটি চলতে থাকবে।
— এজেপি

1
দৌড়ানোর সময় এটি আমার পক্ষে কার্যকর হয়নি rspec। তবে দু'বার সিটিআরএল-সি করেছে।
— এরিক ওয়াকার

5
ম্যাক ওএসএক্স-এ, Ctrl + Cদু'বার টিপলে প্রাই সেশনটি হারাতে হবে, তবে কার্যকরভাবে সেই টার্মিনাল উইন্ডোটিও মারা যাবে: পরবর্তী আউটপুটটি এমনভাবে আটকানো হয় যে আমাকে সেই টার্মিনাল ট্যাবটি বন্ধ করে একটি নতুনটিতে যেতে হবে। তবে !!!এই ক্রমবর্ধমান প্রভাব নেই।
— টোফার হান্ট

@ ইভান্ড্রো আপনার কী ধারণা নেই যে এটি আমাকে কীভাবে রক্ষা করেছে!
— শ্রী হর্ষ কাপ্পাল

111

আমি ব্যবহার করি:

disable-pry

এটি প্রোগ্রামটি চলমান রাখে, তবে তা কার্যকর করা বন্ধ করে দেওয়া থেকে বিরত রাখবে। আপনি কনসোলে ডিবাগ করার সময় এটি বিশেষত সহায়ক।


11
পুনরায় সক্ষম করতে (কমান্ড লাইন থেকে): ENV ['DISABLE_PRY'] = শূন্য
— স্টুবুক

2
অক্ষম-পিসি ব্যবহারের পরে আমি আর পিএস এ প্রবেশ করতে পারিনি। এমনকি ENV ব্যবহার করার পরেও ['DISABLE_PRY'] = শূন্য
— ২১

2
পি.ই.কে পুনরায় প্রবেশ করতে, আপনাকে যা করতে হবে তা হ'ল ENV['DISABLE_PRY'] = nilকমান্ড লাইন বা রেল কনসোলে নয় আপনার নিয়ামকটিতে সেট করা ।
— অতুল খান্ডুরি

আপনি যখন প্রহরী ব্যবহার করছেন তখন এটি ব্যবহারের জন্য উপযুক্ত এবং কেবলমাত্র এটি পরীক্ষা চালানোর জন্য পিসি চালানো বন্ধ করতে চান। এটি পরবর্তী পরীক্ষার রানে পুনরায় সেট হবে।
— বিবিনিফিল্ড

31

সমস্ত কিছু থেকে প্রস্থান করতে, ব্যবহার করুন:

exit!

এটি সমস্ত চলমান বাইন্ডিং উপেক্ষা করা উচিত।


4
এটি একই সাথে সার্ভারটিকেও হত্যা করে। exit-programআপনি যদি সার্ভারটি পুনরায় আরম্ভ করতে না চান তবে সম্ভবত সর্বোত্তম বিকল্প।
— রায়ান

3
কেবল স্পষ্ট করে জানাতেই exit-programআপনি আপনার rails serverঅধিবেশন বজায় রাখতে পারবেন তবে মনে হচ্ছে একটিSystemExit
— অ্যালান ডেভিড গার্সিয়া

24

ট্রিপল উদ্দীপনা ( !!!) এটি করবে would


এটি আমার জন্য ওএসএক্স 10.11.4 (এল ক্যাপিটান) এ সমাধান ছিল, আমি disable-pry+ ENV['DISABLE_PRY'] = nilকম্বো চেষ্টা করিনি তবে আমি চেষ্টা করেছিলাম exit-programযা আমাকে একটি সিস্টেমের ছাড় দিয়েছে। এই এক শুধু কাজ করে। (চালু পাগল 3.2.22.2, কিছুর মধ্যে উঁকি মারা 0.10.3 এবং রুবি 1.9.3)
— SidOfc

17

ব্যবহার

disable-pry

ভাড়া নিতে, এটি আপনার নিয়ামকটিতে যুক্ত করুন

ENV['DISABLE_PRY'] = nil

14

একটি binding.pryবিবৃতি হ'ল জিডিবির ব্রেকপয়েন্টের মতো। জিডিবিতে এ জাতীয় ব্রেকপয়েন্টটিও 100 গুণ আঘাত হানবে।

আপনি যদি binding.pryলুপটির প্রথম পুনরাবৃত্তির জন্য কেবল একবার হিট করতে চান , তবে এর binding.pryমতো একটি শর্তযুক্ত ব্যবহার করুন :

(1..100).each do |i|
  binding.pry if i == 1
  puts i
end

আপনি কেবলমাত্র টাইপ করে বর্তমান সেশনটি থেকে প্রস্থান করবেন exit।


1

উপরের দুটি উত্তরের উপর ভিত্তি করে:

তোমাদেরকে ধন্যবাদ! আপনার পরামর্শ আমাকে সত্যিই অনেক সাহায্য করেছে!

আমি কেবল একটি সাধারণ বোকা কৌশল ভাগ করতে চাই, যা আমি ব্যক্তিগতভাবে সর্বদা DISABLE_PRYপরিবেশের পরিবর্তনশীল সম্পর্কে চিন্তা না করার জন্য ব্যবহার করি । ApplicationControllerস্থায়ীভাবে আপনার প্রকল্পের বেস নিয়ামকটিতে এই কলব্যাক যুক্ত করুন । এটি প্রতিবার যখনই disable-pryডাকা হবে তখন এটি স্বয়ংক্রিয়ভাবে PRY- কে সক্ষম করবে :

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_action :reenable_pry

  private

  def reenable_pry
    ENV['DISABLE_PRY'] = nil
  end
end

1

রত্ন ব্যবহার করে pry-movesআপনি লুপ থেকে বেরিয়ে আসতে পারেন f(সমাপ্ত কমান্ড)


উদাহরণ:

    42: def test
    43:   3.times do |i|
 => 44:     binding.pry
    45:     puts i
    46:   end
    47:   puts :finish
    48: end

[1] pry(main)> f
0
1
2

Frame: 0/1 method
From: playground/sand.rb:47 main

    42: def test
    43:   3.times do |i|
    44:     binding.pry
    45:     puts i
    46:   end
 => 47:   puts :finish
    48: end

0

'q' টিপুন এবং আপনি ঠিক এটি দেখতে পাবেন

[1] pry(#<AlbumsController>)>

আদর্শ

exit

যদি না হয় তবে এই একটি শব্দটি করবে:

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