كيف يمكنني إسقاط المجلس موجه من تشغيل البرنامج النصي ؟
سؤال
يمكنني أن تنخفض إلى 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. يمكنني استخدام هذا في كثير من الأحيان عند كتابة النص البرمي واحد داخل وحدة التحكم في القضبان.