ruby不需要工作

我是ruby的新手,但我正在研究我的第一个ruby计划。 它目前有两个文件,一个是函数库(存储在lib xgync.rb ),另一个是存储在’bin’中的可执行文件xgync 。 (项目在这里可见https://bitbucket.org/jeffreycwitt/xgync/src )我还为我的/usr/local/bin/xgync创建了一个符号链接,以便我可以从任何地方编写命令xgync {arguments}终奌站。

问题似乎是bin/xgync依赖于库lib/xgync.rb 。 我在bin/xgync编写了这个依赖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 `' 

你能看到我写的东西有什么问题吗? 符号链接可能会以某种方式弄乱事物吗?

谢谢你的帮助 :)

使用ruby 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'