在Ruby中需要语句错误?

时间:2012-04-29 17:54:45

标签: ruby require

我在socks.rb里面有一个我的宝石,袜子的包装纸。整个文件由require语句和模块声明组成:

# lib/socks.rb
require 'socks/version'
require 'socks/base_controller'
require 'socks/templates'
require 'socks/tasks'
require 'socks/rake_tasks'

module Socks
end

但是,require 'socks/tasks'socks/rake_tasks给出了LoadError: no such file to load -- socks/tasks / rake_tasks错误。

这是require语句对齐的问题,还是代码?

代码在Github上: https://github.com/Beakr/socks

编辑require './socks/tasks'现在正在运行,但require './socks/rake_tasks'不是。

1 个答案:

答案 0 :(得分:1)

Ruby使用$LOAD_PATH加载文件。这个全局数组由例如rubygems和bundler允许在不同位置查找库。在您已定义的sock.gemspec

gem.require_paths = ["lib"]

这意味着rubygems会将gem的lib目录添加到ruby的$LOAD_PATH。但它只有在您安装了宝石并且因此评估了gemspec时才会发出颂歌。如果您不想安装宝石,可以使用

测试宝石
bundle exec irb

在您的gem目录中,或者首先在您的irb会话中调整您的$LOAD_PATH,如下所示:

$LOAD_PATH.push "/path/to/your/gem/lib"
require 'socks'