1

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

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

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 `

4

4 回答 4

2

你可以试试

require "./Users/user"
于 2012-11-28T17:21:06.037 回答
1

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

根据您在问题中所说的,从 FAL001.rb 到 user.rb 的相对路径是

../PageObjects/Users/user.rb

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

require_relative '../PageObjects/Users/user.rb'
于 2012-11-28T17:17:07.937 回答
1

你可以使用这个:

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

斜杠比两个反斜杠好,因为它可以在 Windows 和 Linux/MacOS 中使用。

于 2012-11-28T17:08:18.873 回答
0

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

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

require 'foo'

或者

require './relative/path/to/foo'
require '../relative/path/to/bar'
于 2012-11-28T17:47:25.023 回答