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


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.