Pry Outline

  • 如果你用gem install rake安装了10.1.0版本的rake(假设是最新的),当你直接使用调用rake时,使用的会是这个最新版本的rake。
  • 如果项目的Gemfile中指定的版本是0.9.6(或者是Gemfile.lock中是0.9.6)的话,你如果不加bundle exec,将会用rake 10.1.0的版本去执行本来应该由0.9.6版本的rake写出的Rake task。
  • 会不会出问题?可能会,可能不会。因为很有可能原作者使用0.9.6版本的rake写的Rake task中没有什么被废弃的部分,10.1.10也能正确执行。但是不兼容的情况也会发生。

bundle exec就是为了解决这样的问题而存在的:在目前的Bundle环境里执行某个操作,这样对于不同的人来说,不论系统里是什么版本的Gem,总是会使用该项目Gemfile中指定的版本来执行某个操作

其他
pry plugins 也可以裝一下,包括:

  1. pry-stack_explorer 輸入 show-stack 的話可以看到 call stack

  2. pry-debugger 可以加上 step, next, finish 和 continue 的控制

  3. pry-nav:也因為 binding.pry 太好用。

    社群也基於 Pry 繼續做了其他的 pry 的 plugin。最 killling 的就是 pry-nav。pry-nav 做的就是可以讓你在 binding.pry 的攔節點前後,作 next、step。直接一行一行的逐一 debug。相信我,如果你在寫通訊交涉的 Library,或者是正在改複雜的 Rails View

  4. pry-remote

    Pry 搭配 Rails,在往常的作法只有 rails s 可以叫出 debug console 而已。但很多人實際上是使用 Pow 作為開發用 HTTP Server。這樣的需求可以用 pry-remote 解決。pry-remote 的作法是把原本的 bindig.pry 改成 binding.remote_pry。而 binding.remote_pry 會開一支 DRb 起來,開發者再用 pry-remote 連到 debug console

  5. sinatra使用Pry

    pry -r ./application.rb #sinatra project, require  application.rb
    rails c # rails project
  6. pry 用法

    show-method 显示当前对象的源码
    show-method Author#hi 显示Author#hi方法的源码
    .pwd前面的.是调用shell的命令,而非pry的本身的方法