실행중인 스크립트에서 IRB 프롬프트에 어떻게 삭제합니까?

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

  •  16-09-2019
  •  | 
  •  

문제

실행중인 루비 스크립트에서 IRB 프롬프트에 삭제할 수 있습니까?

스크립트를 실행하고 싶지만 프로그램의 현재 상태가있는 프로그램의 한 지점에서 RDEBUG를 실행하고 중단 점을 갖는 것이 아니라 IRB 프롬프트를 제공하게하십시오.

도움이 되었습니까?

해결책

Ruby-Debug를 사용하여 IRB에 액세스 할 수 있습니다

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

프로그램이 디버거에 도달하면 IRB에 액세스 할 수 있습니다.

다른 팁

캐내다 (IRB 대안) 도이 작업을 수행 할 수 있습니다. 실제로이 유스 케이스를 위해 처음부터 설계되었습니다 :)

퍼팅만큼 쉽습니다 binding.pry 시점에서 세션을 시작하려는 시점에서 :

require 'pry'
x = 10
binding.pry

그리고 세션 내에서 :

pry(main)> puts x
=> 10

웹 사이트를 확인하십시오. http://pry.github.com

Pry let 's You :

  • 코드의 어느 시점에서든 세션에 중단
  • 방법 소스 코드를 봅니다
  • 메소드 문서보기 (RI를 사용하지 않으므로 사전 생성 할 필요가 없습니다)
  • 다른 맥락에서 튀어 나오고 나갑니다
  • 구문 강조 표시
  • GIST 통합
  • 역사를보고 재생합니다
  • 편집자를 열어서 사용 방법을 편집 할 수 있습니다 edit obj.my_method 통사론

더 훌륭하고 독창적 인 기능

분명히 IRB에 삭제하려면 코드 덩어리가 필요합니다.

다음은 링크입니다 (잘 작동하는 것 같습니다).

http://jameskilton.com/2009/04/02/embedding-irb-into-your-ruby-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-intructed-ruby-2-4/

루비 커밋 : https://github.com/ruby/ruby/commit/493e48897421d176a8faf0f0820323d79ecdf94a

중단 점을 원하는 위치 에이 줄을 추가하십시오.

require 'ruby-debug';debugger

그러나 매우 편리한 IRB 대신 Pry를 사용하는 것이 좋습니다. 대신 다음 줄을 삽입하십시오.

require 'pry'; binding.pry

나는 게임에 꽤 늦었지만 이미 IRB/Pry 내에서 스크립트를로드하고 있다면 간단합니다. raise 또한 IRB/Pry 프롬프트로 다시 튀어 나오기 위해 노력합니다. 나는 Rails 콘솔에 하나의 오프 스크립트를 쓸 때 이것을 자주 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top