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'
。