1

以下を含む「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
4

3 に答える 3

3

require_relativeステートメントを使用する

.最近のRubyバージョンは、に格納されているロードパスに追加されなくなりました$:。ただし、1つの解決策は、Kernel#require_relativeを使用して、の現在の値に相対的なファイルを要求することです__FILE__。例えば:

require_relative './turboname'

これは、irbまたはpryを使用したインタラクティブREPLセッションでは機能しませんが、実際のソースファイル内では正常に機能することに注意してください。

于 2013-03-16T20:56:31.297 に答える
3

エラーは、見つからないことを示しているわけではありません./turboname.rb。そのファイルが見つかったと言っていますが、の最初の行はRuby が見つけられない./turboname.rbto を試みます。存在しますかrequire 'turboname/version'./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/
于 2013-03-16T21:11:47.277 に答える
1

Ruby 2.0の場合:

require "#{__dir__}/turboname"
于 2013-03-16T20:26:30.073 に答える