我在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'
不是。
答案 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'