2011-02-09 12 views
0

元の質問を問題に完全にはもはや反映していないので、元の質問を下に移動しました。私はこのように要求することができる午前serialport.soを見つけることができません「シリアルポート」を必要とする間違った宝石が必要です

$ [email protected] 
$ irb 
> require 'serialport.so' 
=> true 

(宝石のリストはemtpy返す)

更新:

require 'serialport' 

irbセッションで実行されると、両方とも宝石をアンインストールしてもtrueを返す必要があります。それで、もう一つの宝石が "require 'シリアルポート' 'を介して要求されているようです。私は、この宝石の他のバージョンを探すために私のシステムを検索しました。

どのように正しい宝石が必要であることを確認できますか?

更新:

[宝石の削除リスト]

私はRVMグローバル名前空間内のすべての宝石をアンインストールすると、私はまだ 'SERIALPORT' を必要とし、真取得することができます。

私のgemリストの出力は完全に空で、 'serialport'はirb内からtrueを返す必要があります。

私はrvmを使用しています。グローバルな宝石と私が使用しているジェムセットのすべての宝石を空にしました。 'serialport'を含む名前のシステム・ジェムはありません。私は、serialport.o、serialport.soなどのgemディレクトリに含まれるファイルを検索しましたが、何も見つかりませんでした。

私はおそらく 'SERIALPORT'

require 'serialport.so' 

もtrueを返し、

sudo find/-name 'serialport.so' -print 

は何も返さない必要とするように応答することができるもののために途方に暮れてよ。

アイデア?

オリジナルポスト:

私はSERIALPORT(1.0.4)の宝石を使用しています。

implementation.rb:14:in `initialize': wrong number of arguments (5 for 2) (ArgumentError) 
from implementation.rb:14:in `open' 
from implementation.rb:14 

これはのように奇妙です:ルビーimplementation.rbを実行している場合

require 'rubygems' 
require 'serialport' 
port_str = "/dev/cu.usbserial" # Serialport mount point 
baud_rate = 9600 
data_bits = 8 
stop_bits = 1 
parity = 0 

sp = SerialPort.new(port_str, data_bits, stop_bits, baud_rate, parity) 

while barcode = sp.gets do 
    puts barcode 
end 

sp.close 


は、私が手:

ドキュメントがここ

http://rubydoc.info/gems/serialport/1.0.4/で発見されたことは、私のimplementation.rbですどこでも初期化メソッドがあるようには見えません(おそらく、Rubyは内部的にSerialPort :: newにinitializeという名前を付けていますか?)。

宝石のルビーの一部を次のようになります。

require 'serialport.so' 

class SerialPort 
    private_class_method(:create) 

    # Creates a serial port object. 
    # 
    # <tt>port</tt> may be a port number 
    # or the file name of a defice. 
    # The number is portable; so 0 is mapped to "COM1" on Windows, 
    # "/dev/ttyS0" on Linux, "/dev/cuaa0" on Mac OS X, etc. 
    # 
    # <tt>params</tt> can be used to configure the serial port. 
    # See SerialPort#set_modem_params for details 
    def SerialPort::new(port, *params) 
     sp = create(port) 
     begin 
     sp.set_modem_params(*params) # Calls C extension 
     rescue 
     sp.close 
     raise 
     end 
     return sp 
    end 
    # SerialPort::open removed as its the same thing as new() with a block 
end 

これは、他の日に働いていたと私は変更のことは何も考えることはできません。

また、私は両方のソースでチラッとまったく同じように見えるルビーSERIALPORT宝石(0.7.0)と同じエラーを取得します。

サンプル実装はhttp://rubyforge.org/projects/ruby-serialport/http://ruby-serialport.rubyforge.org/でのドキュメント)

任意のアイデアで発見されhttp://www.sfc.wide.ad.jp/~mitsuya/4U/ruby-serialport-macosx.html

後者の宝石(ルビーSERIALPORT)で発見されましたか?ありがとう。 irb内から$LOAD_PATHを見る

+0

これは私のために働く、あなたが宝石のリストを実行する場合、それはSERIALPORTのどのバージョンを表示しますか? –

+0

私はそれを宝石自体に問題ではないとまで絞り込んだ。むしろ、 "require 'serialport' 'を介して別の宝石が要求されています。これは、宝石がアンインストールされても失敗しないためです。 – jvatic

+0

私はrvmを使用しています。これはこの種の問題を解決するはずです。 – jvatic

答えて

0

は、私がSERIALPORT関連する何のためにそれらを介して検索を開始しました。


は長い前に、私は~/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/site_ruby/1.8/i686-darwin10.6.0/serialport.bundleを見つけました。この問題をデバッグするために以前にシリアルポートgemをアンインストールしたので、削除した後、私はrequire 'serialport'を試して、予期したLoadError: no such file to load -- serialportを得ました。予想通り

gem install serialportした後、私のコードは再び動作します。

は、私が最初の場所でこれを行っおよび頭痛を避けているだろう、私ははっきりと考えていました。これにより、同様の問題を抱えている誰でも簡単にデバッグできます。

関連する問題