9964


`pry-byebug`が有効な状態で`c`などを使うと以下の様なエラーになる問題があります。

[code]

    c = 3
    Error: Cannot find local context. Did you use `binding.pry`?
    
[/code]

この対処に

[code]

    Pry::Commands.delete 'c'
    Pry::Commands.delete 'n'
    Pry::Commands.delete 's'
    
[/code]

と `~/.pryrc`に書いた場合、`Gemfile`の設定などで`pry-byebug`が入ってないと今度は起動時に以下の様なエラーが出てしまいます。

[code]

    Error loading /Users/ironsand/Dropbox/rc/.pryrc: Cannot find a command: 'c'!
    /Users/ironsand/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/command_set.rb:191:in `find_command_by_match_or_listing'
    
[/code]

どちらの環境でもエラーを出さずに`c`,`n`,`s`のaliasのコマンドを無効化するにはどうすればよいでしょうか？


CC BY-SA 3.0
2015-05-08T13:54:40.927
9956
2015-05-08T20:30:02.500
3271
question
ruby pry
pry-byebugがインストールされてるか自動判別して常に`c`などの一文字aliasを使わない方法

[code]

    if defined?(PryByebug)
      Pry::Commands.delete 'c'
      Pry::Commands.delete 'n'
      Pry::Commands.delete 's'
    end
    
[/code]

これでどうでしょうか？


CC BY-SA 3.0
2015-05-08T14:10:15.103
9957
2015-05-08T14:10:15.103
9575
9956
answer


`pry-byebug`が入っていないために`Cannot find a command: 'c'!`が出ると勘違いしてしまっていたのですが
@todashuta さんの回答により `defined?(PryByebug)` が `"constant"`を返し存在することから、`pry-
byebug`が入っていないのではなく alias が行われていないだけだということがわかりました。

具体的には `3.0` より前の`pry-byebug`では標準で実装されていた一文字 alias が削除されていたためこのエラーがでていたようです。

<http://www.rubydoc.info/gems/pry-byebug/3.1.0>

・`pry-byebug`がインストールされていない  
・`3.0`より前のバージョンがインストールされている  
・`3.0`移行のバージョンが入ってる

全ての状態に対応するために以下の設定を`~/.pryrc`に行いました。  
`Pry::Commands.delete 'c'`がエラーを出さないためにあえて一度 alias を定義させています。

[code]

    if defined?(PryByebug)
      Pry.commands.alias_command 'c', 'continue'
      Pry.commands.alias_command 's', 'step'
      Pry.commands.alias_command 'n', 'next'
      Pry.commands.alias_command 'f', 'finish'
      Pry::Commands.delete 'c'
      Pry::Commands.delete 's'
      Pry::Commands.delete 'n'
      Pry::Commands.delete 'f'
    end
    
[/code]


CC BY-SA 3.0
2015-05-08T20:30:02.500
9964
2015-05-08T20:30:02.500
3271
9956
answer