1

我是 ruby​​ 新手,但我正在开发我的第一个 ruby​​ 程序。它目前有两个文件,一个是函数库(xgync.rb存储在)另一个是存储在“bin”中lib的可执行文件。xgync(项目在此处可见https://bitbucket.org/jeffreycwitt/xgync/src)我还创建了一个符号链接,/usr/local/bin/xgync以便我可以{arguments}从终端的任何位置编写命令 xgync。

问题似乎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
  • 库/xgync.rb

根据您的问题,这些是您项目中的文件,代码摘录来自bin/xgync您扩展了路径以在lib/中查找文件,但您尝试查找require 'xgync'哪个文件,该文件不存在于lib/中,所以如果你想使用这种方法(而不是require_relative你必须使用require 'xgync.rb'.

于 2012-07-22T12:24:08.620 回答