2012-07-22 89 views
0

我是新来的红宝石,但我正在开发我的第一个红宝石程序。它目前有两个文件,一个是函数库(存储在lib中的xgync.rb),另一个是存储在“bin”中的可执行文件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>' 

你可以看到什么毛病我已经写了什么?这个符号链接是不是可以搞砸了?

感谢您的帮助:)

回答

7

当使用红宝石1.9.x的在你的项目需要的其他文件时,你通常不会改变与$:.unshift的路径。

取而代之的是最好的做法是使用require_relative

require_relative '../lib/xgync.rb' 

require_relative需要相对于当前正在编辑的文件的文件。

但遇到错误出现,因为你需要一个文件,该文件不存在:

  • 斌/ xgync
  • 的lib/xgync.rb

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

+1

成功与'require_relative'路径!谢谢。感谢您的解释。 – Jeff 2012-07-22 12:31:20