簡體   English   中英

我如何需要一個Ruby文件?

[英]How do I require a Ruby file?

我有一個名為“ 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

使用require_relative語句

最近的Ruby版本不再添加. 到存儲在$:的加載路徑。 但是,一種解決方案是使用Kernel#require_relative要求相對於__FILE__的當前值的文件。 例如:

require_relative './turboname'

請注意,這在使用irb或pry的交互式REPL會話中不起作用,但在實際的源文件中可以正常使用。

錯誤不是告訴您找不到./turboname.rb 它告訴您它找到了該文件,但是./turboname.rb的第一行嘗試require 'turboname/version' ,這是Ruby無法找到的。 ./turboname/version.rb是否存在? 如果是這樣,當前用戶可讀嗎?

如果其他所有內容都解決了,那么您將遇到加載路徑問題。 go.rb的頂部,顯式地將當前工作目錄(或包含turboname.rbturboname/version.rb任何目錄(可能是./lib/ )添加到您的加載路徑:

$LOAD_PATH << File.dirname(__FILE__) # for ./
# or
$LOAD_PATH << File.join(File.dirname(__FILE__), 'lib') # for ./lib/

使用Ruby 2.0:

require "#{__dir__}/turboname"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM