【问题标题】:Rails REPL that is more than irb/pry but less than rails consoleRails REPL 比 irb/pry 多,但比 rails 控制台少
【发布时间】:2016-06-17 06:14:10
【问题描述】:

我经常想尝试小代码sn-ps,通常比类小得多,甚至函数,只是为了确保它自己工作,所以我不需要通过运行一堆脚本来测试它,只需修复一行代码左右的小错误。

除了 irb/pry,我还想测试 Rails 特定的代码,例如Object.blank?。因此,我想加载 Rails 库,但我不需要 Rails 控制台提供的全部功能。尤其是当应用程序未处于工作状态时,REPL 根本不会打开,而只是呈现手头故障的堆栈跟踪。

如果有人知道如何实现这个中间立场,也许通过使用特定的 gem 路径和 require 语句来加载我提到的其他 REPL 之一,你能说明这些命令吗?

我正在使用 RVM 管理 gemset 的项目内部工作,并且根本不想修改该环境,如果可能的话,可能只修改我的一般终端环境。

【问题讨论】:

    标签: ruby-on-rails ruby debugging read-eval-print-loop


    【解决方案1】:

    Rails 的大部分“魔法”都来自Active Support Core Extensions。您可以将其包含在常规的 irb 会话中,以获取大多数便利方法,例如 blank?

    启动 IRB 会话并运行

    require 'active_support'
    require 'active_support/core_ext'
    

    【讨论】:

      【解决方案2】:

      .blank? 来自 ActiveSupport。实际上,您可以只加载 ActiveSupport 而无需 Rails 的其余部分:

      irb(main):001:0>  require 'active_support/all'
      irb(main):002:0> [].blank?
      => true
      

      all.rb 文件加载所有 ActiveSupport。

      ActiveRecord 和其他 Rails 组件也可以这样做;例如:

      irb(main):001:0> require 'active_record'
      => true
      irb(main):002:0> class NewModel < ActiveRecord::Base; end
      => nil
      irb(main):003:0> NewModel.new
      ActiveRecord::ConnectionNotEstablished: No connection pool for NewModel
      

      这给出了一个错误,因为我没有费心设置数据库,但它表明 Rails 是非常模块化的。我在没有 Rails 的项目中使用了 ActiveRecord(rails gem is actually an empty gem 只是将各种 active_* gem 定义为依赖项)。

      【讨论】:

      • 我也在pry 中完成了这项工作,并得到了它的工作,以防有人想知道,所以谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      相关资源
      最近更新 更多