-1

中に宝石、靴下のラッパーがあります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/tasksrake_tasks

これはrequireステートメントの配置の問題ですか、それともコードだけの問題ですか?

コードはGithubにあります: https ://github.com/Beakr/socks

編集require './socks/tasks'現在は機能していますが、機能してrequire './socks/rake_tasks'いません。

4

1 に答える 1

1

Rubyはそのを使用してファイルをロードします$LOAD_PATH。このグローバル配列は、さまざまな場所でライブラリを検索できるように、たとえばrubygemsやbundlerによって変更されます。あなたの中でsock.gemspecあなたは定義しました

gem.require_paths = ["lib"]

これは、rubygemsがlibgemのディレクトリをrubyのに追加することを意味します$LOAD_PATH。ただし、gemをインストールし、gemspecが評価された場合にのみ、頌歌が鳴ります。gemをインストールしたくない場合は、次を使用してgemをテストできます。

bundle exec irb

あなたのgemディレクトリで、あるいは最初$LOAD_PATHにあなたのirbセッションであなたを次のように適応させることによって:

$LOAD_PATH.push "/path/to/your/gem/lib"
require 'socks'
于 2012-04-29T22:48:53.417 に答える