元の質問を問題に完全にはもはや反映していないので、元の質問を下に移動しました。私はこのように要求することができる午前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
を見る
これは私のために働く、あなたが宝石のリストを実行する場合、それはSERIALPORTのどのバージョンを表示しますか? –
私はそれを宝石自体に問題ではないとまで絞り込んだ。むしろ、 "require 'serialport' 'を介して別の宝石が要求されています。これは、宝石がアンインストールされても失敗しないためです。 – jvatic
私はrvmを使用しています。これはこの種の問題を解決するはずです。 – jvatic