【问题标题】:Requiring a Ruby module in Rails console & controller在 Rails 控制台和控制器中需要一个 Ruby 模块
【发布时间】:2014-03-28 04:05:10
【问题描述】:

我需要 Ruby 模块 FileUtils 来处理一些文件操作。

我想测试这个要求在我的控制器中是否可以正常工作。所以我在我的控制台中尝试了这个,但结果得到了false(当我不在 Rails 控制台中而只是一个普通的 Ruby 控制台时,这很好用):

  1. 进入我项目的根目录
  2. $ rails c 打开我的控制台
  3. > require 'fileutils' 返回false

通过 rails 控制台要求模块的正确方法是什么?为什么会返回 false?

我假设在我的控制器中我可以做这样的事情,对吗?

def create
  require 'fileutils'
  # my code that uses fileutils.
end

【问题讨论】:

    标签: ruby-on-rails ruby require


    【解决方案1】:

    来自requirefalse 响应意味着模块已经加载。你应该很高兴在你的控制器中不需要这个。参见文档:http://www.ruby-doc.org/core-2.1.1/Kernel.html#method-i-require

    【讨论】:

    • 谢谢 steakchaser - 你知道关于在 Rails 中需要其他模块的最佳实践的文档在哪里吗?我一直在谷歌搜索,但只能找到好的 Ruby 文档。
    • 这是个好问题。如果您希望所有内容都可以访问模块类方法,我可能会使用初始化程序。更广泛地说,您可以要求各种基类(即 ApplicationController)。或者,它也可以作为某些服务/关注点的一次性服务,这些服务/关注点对另一个库的需求非常有限(这通常是我最终发生的事情)。
    【解决方案2】:

    默认情况下很可能已经需要它。只需在控制台中输入FileUtils,它就会响应

     # => FileUtils
    

    【讨论】:

      【解决方案3】:

      require返回false表示已经加载完毕。

      从控制台试试这个:

      FileUtils.pwd
      # => "/present/working/directory
      

      【讨论】:

        猜你喜欢
        • 2011-06-23
        • 2017-07-13
        • 2023-03-11
        • 2020-03-17
        • 2015-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多