我有一个名为“go.rb”的文件,其中包含:
require 'turboname'
dictionary = Turboname::Random.new
100999032982389.times do
name = Turboname::Domain.new(:from => dictionary)
name.save if name.length < 15 and name.available?
tld = name.tldize
name.save(tld) if tld and name.length < 15 and name.available?(tld)
end
turboname.rb与go.rb位于同一目录中。这是同一水平。我只想在此脚本中包含此文件。我不想处理宝石或捆绑。
./turboname.rb:1:in `require': no such file to load -- turboname/version (LoadError)
from ./turboname.rb:1
from go.rb:1:in `require'
from go.rb:1
答案 0 :(得分:3)
require_relative
声明最近的Ruby版本不再将.
添加到$:
中存储的加载路径中。但是,一种解决方案是使用Kernel#require_relative来要求相对于当前值__FILE__
的文件。例如:
require_relative './turboname'
请注意,这在使用irb或pry的交互式REPL会话中不起作用,但在实际源文件中工作正常。
答案 1 :(得分:3)
错误并未告诉您找不到./turboname.rb
。它告诉你它发现了这个文件,但./turboname.rb
的第一行尝试require 'turboname/version'
,Ruby无法找到。 ./turboname/version.rb
是否存在?如果是这样,当前用户可以读取吗?
如果其他所有内容都检出,那么您就遇到了加载路径问题。在go.rb
的顶部,显式添加当前工作目录(或包含turboname.rb
和turboname/version.rb
的任何目录(可能是./lib/
)到您的加载路径:
$LOAD_PATH << File.dirname(__FILE__) # for ./
# or
$LOAD_PATH << File.join(File.dirname(__FILE__), 'lib') # for ./lib/
答案 2 :(得分:1)
使用Ruby 2.0:
require "#{__dir__}/turboname"