1

私はルビーに不慣れですが、最初のルビープログラムに取り組んでいます。現在、2つのファイルがあります。1つは関数のライブラリ(にxgync.rb格納されています)で、もう1つは「bin」に格納されlibている実行可能ファイルです。xgync(プロジェクトはここに表示されますhttps://bitbucket.org/jeffreycwitt/xgync/src/usr/local/bin/xgync )ターミナルのどこからでもコマンドxgyncを記述できるように、自分へのシンボリックリンクも作成しました{arguments}

問題bin/xgyncはライブラリに依存しているようlib/xgync.rbです。私はこの依存関係bin/xgyncを次のように書きました:

$:.unshift(File.dirname(__FILE__) + '/../lib')
require "xgync"

ただし、次のエラーが発生し続けます。

/Users/JCWitt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- xgync (LoadError)
from /Users/JCWitt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/local/bin/xgync:4:in `<main>'

私が書いたものに何か問題がありますか?シンボリックリンクはどういうわけか物事を台無しにすることができますか?

ご協力いただきありがとうございます :)

4

1 に答える 1

7

ruby 1.9.xを使用する$:.unshift場合、プロジェクトで他のファイルが必要な場合は、通常、パスを変更しません。

代わりに、ベストプラクティスはrequire_relative代わりに使用することです。

require_relative '../lib/xgync.rb'

require_relative現在編集しているファイルに関連するファイルが必要です。

ただし、存在しないファイルが必要なため、発生するエラーが表示されます。

  • bin / xgync
  • lib / xgync.rb

これらはあなたの質問によるとあなたのプロジェクトのファイルであり、コードの抜粋はbin / xgyncからのものであり、 lib /でファイルを探すためにパスを拡張しましたが、 lib/require 'xgync'存在しないファイルを探します。したがって、この方法を使用したい場合(代わりにを使用する必要があります) 。require_relativerequire 'xgync.rb'

于 2012-07-22T12:24:08.620 に答える