2012-03-29 7 views
1

Linuxのボックスでruby 1.9.3を実行しています。私は、しかし、私は次のようなエラーに実行し続け、SOCKSSocketを使用したい:初期化されていない定数SOCKSSocket

初期化されていない一定のSOCKSSocketここIRB

irb(main):001:0> require 'resolv-replace' 
=> true 
irb(main):002:0> SOCKSSocket 
NameError: uninitialized constant SOCKSSocket 
    from (irb):2 
    from /usr/local/bin/irb:12:in `<main>' 

を使用して

簡単なテストは、ソースコードがRESOLV-置き換えるから直接です.rb

class SOCKSSocket < TCPSocket 
    # :stopdoc: 
    alias original_resolv_initialize initialize 
    # :startdoc: 
    def initialize(host, serv) 
    original_resolv_initialize(IPSocket.getaddress(host), port) 
    end 
end if defined? SOCKSSocket 

私は、靴下などを使用可能にするために必要な依存関係をインストールする必要があるとは思えません。何かが役に立つでしょう。

答えて

0

SOCKSSocketは、ルビのオプションコンポーネントのようです。そのため、 resolv-replaceは、クラスが既に存在する場合にはそのクラスにmonkey-patchesのみを置き換えます。それ以外の場合は退屈な古いTCPを作成する、つまりあなたはSOCKSが有効になっている 場合SOCKSソケットを作成します(

def open_socket(host, port) 
    if defined? SOCKSSocket and ENV["SOCKS_SERVER"] 
    @passive = true 
    return SOCKSSocket.open(host, port) 
    else 
    return TCPSocket.open(host, port) 
    end 
end 

はおそらく、あなたが同様の何かができる:実例として

は、「ネット/ ftpは」は、次のメソッドを定義しますソケット)。

プロキシの動作が本当に必要な場合は、 という簡単な検索で、次のような宝石が公開されました。http://socksify.rubyforge.org/ が便利かもしれません。私は追跡しませんでした

...認識されないオプション:

0

OK、configureスクリプトが有効なオプションのそれのリストの一部として--enable-靴下を持っていないと、それは警告の理由であると思われます有効なオプションのリストに--enable-socksを追加する方法はありますが、スクリプトを作成しました。

編集:セクションを見つけ

を設定していない:今すぐ=なし

# Initialize some variables set by options. 
enable_option_checking=no 

を...いくつかのVARSを初期化し、enable_option_checkingを追加し、実行します。

./configure --prefix=/usr/local --enable-socks 
make 
sudo make install 

>ruby --version => 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux] 

を、その後、それを試してみますirb

irb(main):001:0> require 'socket' 
=> true 
irb(main):002:0> require 'resolv-replace' 
=> true 
irb(main):003:0> SOCKSSocket 
=> SOCKSSocket 
irb(main):004:0> 

私はまだSOCKSSocketを使って何もしていませんが、少なくとも私のコードにアクセスできるように見えます。また、ENV varにオプションチェックを無効にするか、より良い方法があると仮定します。私はちょうどそれを追跡していない。

ありがとうございます!

関連する問題