Capistranoを使用してバグが発生しています。バグを文字通りこのコード行に絞り込みました。
puts message
ここで、「message」は、net-sshを介して削除サーバーから送信された文字列です。
そのため、このエラーを再現する単一の.rbファイルを作成しようとしています。簡単なはずです...私はMarshal.dump(message)
、それが私に与えるものをコピーMarshal.load(...)
してスクリプトに貼り付けます。
しかし、これを行うと、単一の.rbファイルが問題なく機能します。
そこで、アプリをチェックし、capistranoで文字列をマーシャリングしてすぐにアンマーシャリングすると、機能します。そのため、マーシャリングで何かが失われ、エラーを確実に複製できなくなります。
私はjrubyを使用しています:
jruby 1.6.4 (ruby-1.9.2-p136) (2011-08-23 17ea768) (Java HotSpot(TM) Client VM 1.6.0_26) [Windows 7-x86-java]
putsのエラー
ByteBuffer.java:352:in `wrap': java.lang.IndexOutOfBoundsException
from ChannelDescriptor.java:618:in `write'
from RubyIO.java:1386:in `fwrite'
from RubyIO.java:1319:in `write'
from RubyIO$i$1$0$write.gen:65535:in `call'
from RubyClass.java:686:in `finvoke'
from RuntimeHelpers.java:548:in `invoke'
from RubyBasicObject.java:358:in `callMethod'
from RubyIO.java:2297:in `write'
from RubyIO.java:2283:in `putsArray'
from RubyIO.java:2252:in `puts'
from RubyKernel.java:522:in `puts'
from RubyKernel$s$0$0$puts.gen:65535:in `call'
from JavaMethod.java:630:in `call'
from DynamicMethod.java:207:in `call'
from CachingCallSite.java:167:in `call'
from FCallOneArgNode.java:36:in `interpret'
from NewlineNode.java:104:in `interpret'
from IfNode.java:117:in `interpret'
from NewlineNode.java:104:in `interpret'
from ASTInterpreter.java:112:in `INTERPRET_BLOCK'
from Interpreted19Block.java:203:in `evalBlockBody'
from Interpreted19Block.java:154:in `yield'
from Block.java:130:in `yield'
from RubyString.java:6830:in `each_lineCommon19'
from RubyString.java:6801:in `each_lineCommon19'
from RubyString.java:6790:in `lines'
from RubyString$i$lines.gen:65535:in `call'
from JavaMethod.java:442:in `call'
from RubyClass.java:544:in `finvoke'
from RuntimeHelpers.java:541:in `invoke'
from RubyBasicObject.java:382:in `callMethod'
from RubyEnumerator.java:190:in `each'
from RubyEnumerator$i$0$0$each.gen:65535:in `call'
from CachingCallSite.java:142:in `callBlock'
from CachingCallSite.java:153:in `callIter'
from CallNoArgBlockNode.java:64:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from IfNode.java:117:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from ASTInterpreter.java:75:in `INTERPRET_METHOD'
from InterpretedMethod.java:276:in `call'
from DefaultMethod.java:211:in `call'
from CachingCallSite.java:235:in `call'
from FCallThreeArgNode.java:40:in `interpret'
from NewlineNode.java:104:in `interpret'
from ASTInterpreter.java:75:in `INTERPRET_METHOD'
from InterpretedMethod.java:255:in `call'
from DefaultMethod.java:203:in `call'
from RubyClass.java:582:in `finvoke'
from RubyBasicObject.java:1697:in `send19'
from RubyKernel.java:2121:in `send19'
from RubyKernel$s$send19.gen:65535:in `call'
from JavaMethod.java:300:in `call'
from CachingCallSite.java:235:in `call'
from CallThreeArgNode.java:61:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from ASTInterpreter.java:112:in `INTERPRET_BLOCK'
from Interpreted19Block.java:203:in `evalBlockBody'
from Interpreted19Block.java:191:in `yield'
from Interpreted19Block.java:122:in `call'
from Block.java:89:in `call'
from RubyProc.java:274:in `call'
from RubyProc.java:262:in `call19'
from RubyProc$i$0$0$call19.gen:65535:in `call'
from DynamicMethod.java:227:in `call'
from DynamicMethod.java:223:in `call'
from CachingCallSite.java:235:in `call'
from CallThreeArgNode.java:61:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from ASTInterpreter.java:112:in `INTERPRET_BLOCK'
from Interpreted19Block.java:203:in `evalBlockBody'
from Interpreted19Block.java:191:in `yield'
from Interpreted19Block.java:122:in `call'
from Block.java:89:in `call'
from RubyProc.java:274:in `call'
from RubyProc.java:262:in `call19'
from RubyProc$i$0$0$call19.gen:65535:in `call'
from DynamicMethod.java:219:in `call'
from DynamicMethod.java:215:in `call'
from CachingCallSite.java:201:in `call'
from CallTwoArgNode.java:59:in `interpret'
from IfNode.java:117:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from ASTInterpreter.java:75:in `INTERPRET_METHOD'
from InterpretedMethod.java:190:in `call'
from DefaultMethod.java:179:in `call'
from CachingCallSite.java:312:in `cacheAndCall'
from CachingCallSite.java:169:in `call'
from CallOneArgNode.java:57:in `interpret'
from NewlineNode.java:104:in `interpret'
from BlockNode.java:71:in `interpret'
from ASTInterpreter.java:75:in `INTERPRET_METHOD'
from InterpretedMethod.java:212:in `call'
from DefaultMethod.java:187:in `call'
from RubyClass.java:563:in `finvoke'
from RubyBasicObject.java:1691:in `send19'
from RubyKernel.java:2117:in `send19'
from RubyKernel$s$send19.gen:65535:in `call'
from JavaMethod.java:283:in `call'
それよりも長く続きますが、動的なメソッド呼び出しの集まりにすぎません。
このエラーは、puts "#{message}"
およびputs "#{message.strip}"