كيف يمكنني إسقاط المجلس موجه من تشغيل البرنامج النصي ؟

StackOverflow https://stackoverflow.com/questions/1144560

  •  16-09-2019
  •  | 
  •  

سؤال

يمكنني أن تنخفض إلى IRB موجه من تشغيل روبي السيناريو ؟

أريد تشغيل البرنامج النصي ، ولكن بعد ذلك أنها تعطيني IRB موجه في البرنامج مع الوضع الحالي من البرنامج ، ولكن ليس فقط عن طريق تشغيل rdebug وجود نقطة.

هل كانت مفيدة؟

المحلول

يمكنك استخدام Ruby-Debug للوصول إلى IRB

require 'rubygems'
require 'ruby-debug'
x = 23
puts "welcome"
debugger
puts "end"

عندما يصل البرنامج إلى مصحح الأخطاء، ستحصل على الوصول إلى IRB.

نصائح أخرى

حدق (وهو المجلس البديلة) أيضا يتيح لك أن تفعل هذا, في الواقع تم تصميمه من الألف إلى الياء بالضبط هذه الحالة استخدام :)

انها سهلة كما وضع binding.pry في نقطة كنت تريد أن تبدأ الدورة:

require 'pry'
x = 10
binding.pry

و داخل الدورة:

pry(main)> puts x
=> 10

تحقق من الموقع: http://pry.github.com

حدق دعونا لك:

  • هبوط في الدورة في أي نقطة في التعليمات البرمجية الخاصة بك
  • عرض أسلوب التعليمات البرمجية المصدر
  • عرض أسلوب التوثيق (لا تستخدم ري لذلك لم يكن لديك ما قبل تولد منه)
  • البوب في سياقات مختلفة
  • تسليط الضوء على بناء الجملة
  • جوهر التكامل
  • عرض واعادتها التاريخ
  • فتح المحررين إلى تحرير طرق استخدام edit obj.my_method بناء الجملة

طن أكثر من رائعة و الميزات الأصلية

يبدو أنه يتطلب جزء من التعليمات البرمجية لإسقاط IRB.

إليك الرابط (يبدو أن يعمل بشكل جيد).

http://jamekilton.com/2009/04/02/EMBedding-irb-into-your-rouby-application.


require 'irb'

module IRB
  def self.start_session(binding) # call this method to drop into irb
    unless @__initialized
      args = ARGV
      ARGV.replace(ARGV.dup)
      IRB.setup(nil)
      ARGV.replace(args)
      @__initialized = true
    end

    workspace = WorkSpace.new(binding)

    irb = Irb.new(workspace)

    @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
    @CONF[:MAIN_CONTEXT] = irb.context

    catch(:IRB_EXIT) do
      irb.eval_input
    end
  end
end

تتوفر هذه الميزة من Ruby 2.4. يمكنك فقط استخدام binding.irb

على سبيل المثال

require 'irb'
a = 10
binding.irb
puts a

إذا قمت بالتشغيل فوق الرمز، فستحصل على وحدة تحكم IRB، بحيث يمكنك فحص قيم المتغيرات المحلية وأي شيء آخر في نطاقه.

مصدر: http://blog.redpanthers.co/new-binding-irb-rubyndruby-2-4/

ارتكاب روبي: https://github.com/rouby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a.

ما عليك سوى إضافة هذا الخط إلى حيث تريد نقطة التوقف:

require 'ruby-debug';debugger

لكن أقترح استخدام PRY بدلا من IRB، وهو مفيد للغاية، أدخل السطر التالي بدلا من ذلك:

require 'pry'; binding.pry

أنا متأخر جدا مع اللعبة ولكن إذا كنت تقوم بتحميل برنامج نصي من داخل IRB / PRY بالفعل، بسيطة raise يعمل أيضا على البداية لك مرة أخرى إلى موجه IRB / PRY. يمكنني استخدام هذا في كثير من الأحيان عند كتابة النص البرمي واحد داخل وحدة التحكم في القضبان.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top