【问题标题】:Require Method in RubyRuby 中的 Require 方法
【发布时间】:2011-04-05 04:29:54
【问题描述】:

我一直在四处寻找,但似乎找不到任何解决此问题的方法。

我需要编写一个程序,该程序将使用 ruby​​ 内置的反射方法来告诉我有关用户将指定的类的信息。

我有这个方法:

def validFile(input)  
  filename = String.new()  
  filename = Dir.getwd + "/" + input  
  require(filename)  
end  

但是我得到了这个错误:

internal:lib/rubygems/customrequire:29:in 'require' no such file to load --         C:\Users\David\Ruby Projects\MyTestClass.rb

我不知道为什么这不起作用,但这确实有效:

def validFile(input)
  filename = Dir.getwd + "/MyTestClass.rb"
  require(filename)
end

此代码对我没有帮助,因为我必须让用户指定文件。我正在使用gets 方法来获取用户输入,并将其作为参数传递给该方法。

它们不是两个字符串吗?我在这里做错了什么?附加说明,我在 Windows 7 上运行最新版本的 ruby​​。感谢您的帮助。

【问题讨论】:

  • 仅供参考,您的 filename = String.new() 没有做任何事情,因为您在之后为 filename 分配了一个新值

标签: ruby file parameters user-input require


【解决方案1】:

以防万一。在将gets 获得的字符串作为参数传递之前,您是否chomped 了?如果你没有,那么它最后会包含额外的回车符。你需要像input = gets.chomp一样删除它们

【讨论】:

  • 这清除了它。感谢那。我现在花了 2 个小时来搞砸这个,我觉得自己真的很愚蠢。
【解决方案2】:

您可以使用File.exist?(filename) 查看文件或目录是否存在。这应该有助于缩小问题范围。

【讨论】:

    【解决方案3】:

    您很可能通过gets 获得此输入。在此方法中使用chomp 或使用更常见的成语gets.chomp。所以你可以做这样的事情。

    def do_require(input)
      require( Dir.getwd + "/" + input )
    end
    
    do_require gets.chomp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 2014-03-23
      • 2017-08-23
      • 1970-01-01
      • 2014-01-28
      • 2014-02-14
      • 2013-09-30
      相关资源
      最近更新 更多