【问题标题】:Require a lib directory in irb console在 irb 控制台中需要一个 lib 目录
【发布时间】:2014-04-10 15:15:17
【问题描述】:

有没有办法在irb控制台中一次requirelib目录中的所有文件?:

irb ( project root )
require './lib/' # not working  

结构

.
|
--lib 
  |
  |-- one.rb
  |-- two.rb
  |-- tree.rb

编辑

我更喜欢这样的解决方案,我只能在 require 文件中使用一次,而不是每次启动 irb 会话时。

【问题讨论】:

  • require_relative './lib/one.rb'require_relative './lib/two.rb'require_relative './lib/three.rb'
  • @ArupRakshit 假设我正在处理 5 个文件...输入太多...更喜欢我可以要求它们一次的解决方案。
  • 是的...见answer..
  • @ArupRakshit 当你退出 irb 会话并回来时,你必须再做一次......更喜欢sawa的解决方案 - 请在他的回答中查看我的评论。

标签: ruby-on-rails ruby irb


【解决方案1】:

由于described in the documentationrequire(和require_relative)不能将目录名称作为参数,只能使用单个文件名。您可以编写如下内容来做您想做的事情:

Dir['./lib/*.rb'].each { |f| require_relative(f) }

【讨论】:

  • 我不知道为什么这会被否决,它准确地回答了这个问题。
  • 我不是一个反对者,但我认为每次在 irb 中都输入这个是不切实际的。此外,f 已经是一个绝对路径,所以require 就足够了,除非你认为应该经常使用require_relative 来取代require(我不反对)。
  • @sawa 显然,如果 OP 在运行 irb 时必须要求文件,我的回答不是一个选项。关于require_relative 的使用:我用它来要求来自$: 中没有列出的目录中的文件。您应该反对不断将require_relative 替换为require,因为它不起作用,例如使用require_relative 您无法从gem 加载文件。
【解决方案2】:

你可以用这个

Dir[File.dirname(__FILE__) + '/lib/*.rb'].each {|file| require file }

【讨论】:

    【解决方案3】:

    在你的主目录中创建一个名为.irbrc 的文件,并为你想要在其中需要的任何文件编写require 命令。当你运行irb 时,.irbrc 将被加载。

    【讨论】:

    • 问题不是需要使用which命令来获取文件夹中的所有内容吗?
    • 我不这么认为。我认为 OP 想要一种在 irb 启动时轻松需要多个文件(恰好位于单个目录中)的方法(无论是自动还是手动)。我建议采用自动方式。
    • 他们使用的损坏代码显示require 使用文件夹调用(不起作用)。他们确实提到了irb,但没有提到启动。
    • 它是irb 命令之后的第一行。而且,即使 OP 没有要求在启动时完成它,它会有什么不同?你认为 require 的时机很重要,OP 需要在加载文件之前在 irb 中做一些事情?
    • 我认为这只是因为这是一个例子。他们应该放什么?无论如何,我想我们必须等到选择答案:)
    猜你喜欢
    • 2011-12-15
    • 2012-12-06
    • 2011-06-12
    • 1970-01-01
    • 2012-05-03
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多