ruby 要求疑难解答

Posted

技术标签:

【中文标题】ruby 要求疑难解答【英文标题】:Troublesoot ruby require 【发布时间】: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" 的东西都会失败,因为转义字符在双引号字符串中的解释方式。 【参考方案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'

【讨论】:

以上是关于ruby 要求疑难解答的主要内容,如果未能解决你的问题,请参考以下文章

ruby 疑难点之—— yield 和 yield self

第一篇Active Directory疑难解答概述

allegro常见问题解答

jQuery的$.ajax()方法解答

现有一个商店的数据库,记录顾客及其购物情况,根据要求解答问题

急求 hql 高手 ……解答