【问题标题】:Troublesoot ruby requireruby 要求疑难解答
【发布时间】:2012-11-16 14:57:21
【问题描述】:

Ruby 要求仅适用于我的 gem,不适用于我编写的代码。我不确定我做错了什么。

这行得通

require "test-unit"
require "require "C:\\Users\\zreichert\\workspace\\FalconQA\\PageObjects\\Users\\user.rb"

这不起作用

require "Users/user"
require "Users\user"
require "Users/user.rb"
require "Users\user.rb"
require_relative "Users/user"
require_relative "Users\user"
require_relative "Users/user.rb"
require_relative "Users\user.rb"

我正在运行的脚本位于 - C:/Users/zreichert/workspace/FalconQA/testCases

我曾尝试像这样在 require 之前更改目录

Dir.chdir "C:/Users/zreichert/workspace/FalconQA/testCases"

所有错误看起来都像这样

c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require': cannot load such file -- Users/user (LoadError) from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:inrequire' 来自 C:/Users/zreichert/workspace/FalconQA/testCases/FAL001.rb:14:in `

【问题讨论】:

  • 试试require "./Users/user"
  • @slivu 谢谢你的工作,请转换为答案,以便我接受。
  • 任何看起来像 "Users\user" 的东西都会失败,因为转义字符在双引号字符串中的解释方式。

标签: ruby require


【解决方案1】:

你可以试试

require "./Users/user"

【讨论】:

    【解决方案2】:

    你可以用这个:

    require_relative '../PageObjects/Users/user.rb'
    

    斜杠优于两个反斜杠,因为它适用于 Windows 和 Linux/MacOS。

    【讨论】:

      【解决方案3】:

      只是稍微扩展Roozbeh 的答案,require_relative 允许您加载相对于包含require_relative 的文件的位置的文件,因此执行chdir 不会对此产生任何影响。

      从你在问题中所说的来看,从 FAL001.rb 到 user.rb 的相对路径是

      ../PageObjects/Users/user.rb
      

      即上一层,然后下到 PageObjects/Users,因此

      require_relative '../PageObjects/Users/user.rb'
      

      【讨论】:

      • 这对我来说完全有意义,但是当我尝试这个时,我得到:C:/Users/zreichert/workspace/FalconQA/testCases/FAL001.rb:4:in require_relative': cannot load such file -- C:/Users/zreichert/workspace/FalconQA/testCases/Users/userdata.rb (LoadError) from C:/Users/zreichert/workspace/FalconQA/testCases/FAL001.rb:4:in
        ' Do你有什么想法吗?
      • 发现我的错误,忽略最后的评论。谢谢
      【解决方案4】:

      作为心理安全提示,任何看起来像 "Users\user" 的东西都会失败,因为转义字符在双引号字符串中的解释方式。

      相反,为您的 require 参数使用单引号以保持您的理智:

      require 'foo'
      

      require './relative/path/to/foo'
      require '../relative/path/to/bar'
      

      【讨论】:

        猜你喜欢
        • 2013-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-06
        • 2014-08-29
        • 2011-10-27
        • 1970-01-01
        相关资源
        最近更新 更多