Rails REPL不仅仅是irb / pry,而是比rails console更少

时间:2016-03-03 18:41:04

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

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

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

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

我正在使用RVM管理gemset的项目内部工作,并且根本不想修改那个环境,也许只修改我的一般终端环境。

2 个答案:

答案 0 :(得分:2)

.blank?来自ActiveSupport。实际上你可以在没有其余Rails的情况下加载ActiveSupport:

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_ * gems定义为依赖项。)

答案 1 :(得分:1)

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

启动IRB会话并运行

require 'active_support'
require 'active_support/core_ext'