種類
- 文書 (34)
- クラス (24)
- モジュール関数 (21)
- 定数 (12)
- インスタンスメソッド (10)
クラス
-
Thread
:: Queue (10)
キーワード
-
NEWS for Ruby 2
. 3 . 0 (10) -
SC
_ SYMLOOP _ MAX (12) - SSLServer (12)
- Socket (12)
- close (10)
-
ruby 1
. 6 feature (12) - timeout (21)
- 制御構造 (12)
検索結果
先頭5件
-
Etc
:: SC _ SYMLOOP _ MAX -> Integer (3102.0) -
Etc.#sysconf の引数に指定します。
Etc.#sysconf の引数に指定します。
詳細は sysconf(3) を参照してください。 -
OpenSSL
:: SSL :: SSLServer (3006.0) -
SSL サーバーのためのクラス。
...SSL サーバーのためのクラス。
TCPServer をラップするクラスで、TCPServer で接続した
ソケットを OpenSSL::SSL::SSLSocket でラップする機能を持ちます。
おおよそ TCPServer と同様のメソッドを持ちます。
基本的には SSL サーバを簡単......quire 'socket'
require 'openssl'
include OpenSSL
ctx = SSL::SSLContext.new()
ctx.cert = X509::Certificate.new(File.read('cert.pem'))
ctx.key = PKey::RSA.new(File.read('privkey.pem'))
svr = TCPServer.new(2007)
serv = SSL::SSLServer.new(svr, ctx)
loop do
while soc = serv.a... -
ruby 1
. 6 feature (54.0) -
ruby 1.6 feature ruby version 1.6 は安定版です。この版での変更はバグ修正がメイン になります。
...dev:17155>))
open("|-","r+") {|f|
if f
f.dup.close_write
else
sleep 1
end
}
=> ruby 1.6.7 (2002-03-01) [i586-linux]
-:3:in `close_write': closing non-duplex IO for writing (IOError)
from -:3
from -:1:in `open'......ルシステムでこ
のような場合があります)が File#read などで読めないバグが修正されまし
た。
p File.open("/proc/#$$/cmdline").read
=> ruby 1.6.7 (2002-03-01) [i586-linux]
""
=> ruby 1.6.7 (2002-03-29) [i586-linux]......ていました。
((<ruby-dev:14743>))
def foo(t)
t.run
end
t = Thread.start do
t = $_= "sub"
loop{Thread.stop;puts "sub:#$_"}
end
$_ = "main"
t.run # => sub:sub
puts "main:#$_" # =>... -
Timeout
. # timeout(sec , exception _ class = nil) {|i| . . . } -> object (42.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...イムアウトした時、発生させる例外を指定します.
例 長い計算のタイムアウト
require 'timeout'
def calc_pi(min)
loop do
x = rand
y = rand
x**2 + y**2 < 1.0 ? min[0] += 1 : min[1] += 1
end
end
t = 5
min = [ 0, 0]
begin
Timeou......ムアウトさせる事はできないので、IO.popen、Kernel.#openを使用するなどの工夫が必要です。
例 外部コマンドのタイムアウト
require 'timeout'
# テスト用のシェルをつくる。
File.open("loop.sh", "w"){|fp|
fp.print <<SHELL_EOT
#!/bin/bas......fi
done
SHELL_EOT
}
File.chmod(0755, "loop.sh")
t = 10 # 10 秒でタイムアウト
begin
pid = nil
com = nil
Timeout.timeout(t) {
# system だととまらない
# system("./loop.sh")
com = IO.popen("./loop.sh")
pid = com.pid
while line = com......した場合は
"execution expired" になります.
例 長い計算のタイムアウト
require 'timeout'
def calc_pi(min)
loop do
x = rand
y = rand
x**2 + y**2 < 1.0 ? min[0] += 1 : min[1] += 1
end
end
t = 5
min = [ 0, 0]
begin
Timeou... -
Timeout
. # timeout(sec , exception _ class , message) {|i| . . . } -> object (42.0) -
ブロックを sec 秒の期限付きで実行します。 ブロックの実行時間が制限を過ぎたときは例外 Timeout::Error が発生します。
...した場合は
"execution expired" になります.
例 長い計算のタイムアウト
require 'timeout'
def calc_pi(min)
loop do
x = rand
y = rand
x**2 + y**2 < 1.0 ? min[0] += 1 : min[1] += 1
end
end
t = 5
min = [ 0, 0]
begin
Timeou......ムアウトさせる事はできないので、IO.popen、Kernel.#openを使用するなどの工夫が必要です。
例 外部コマンドのタイムアウト
require 'timeout'
# テスト用のシェルをつくる。
File.open("loop.sh", "w"){|fp|
fp.print <<SHELL_EOT
#!/bin/bas......fi
done
SHELL_EOT
}
File.chmod(0755, "loop.sh")
t = 10 # 10 秒でタイムアウト
begin
pid = nil
com = nil
Timeout.timeout(t) {
# system だととまらない
# system("./loop.sh")
com = IO.popen("./loop.sh")
pid = com.pid
while line = com... -
Socket (36.0)
-
汎用ソケットクラス。
....open
* TCP のサーバソケット Socket.tcp_server_loop,
Socket.tcp_server_sockets, TCPServer.open
* UNIX socket のクライアントソケット Socket.unix UNIXSocket.open
* UNIX socket のサーバソケット Socket.unix_server_loop,
Socket.unix_server_socket, UNIXServer.open... -
制御構造 (30.0)
-
制御構造 条件分岐: * if * unless * case 繰り返し: * while * until * for * break * next * redo * retry 例外処理: * raise * begin その他: * return * BEGIN * END
...しで rescue, ensure 節を定義でき、これにより例外を処理することが
できます。
==== rescue修飾子
//emlist[例][ruby]{
open("nonexistent file") rescue STDERR.puts "Warning: #$!"
//}
文法:
式1 rescue 式2
式1で例外が発生したとき、式2を評価....../emlist[][ruby]{
var = open("nonexistent file") rescue false
p var
# => false
//}
ただし、優先順位の都合により式全体を括弧で囲む必要がある場合があります。
メソッドの引数にするには二重の括弧が必要です。
p(open("nonexistent file")......unexpected keyword_BEGIN
class Foo
BEGIN { p "begin" }
end
# => -e:2: syntax error, unexpected keyword_BEGIN
loop do
BEGIN { p "begin" }
end
# => -e:2: syntax error, unexpected keyword_BEGIN
====[a:END] END
//emlist[例][ruby]{... -
Thread
:: Queue # close -> self (22.0) -
キューを close します。close 済みのキューを再度 open することはできません。
...キューを close します。close 済みのキューを再度 open することはできません。
close 後は以下のように動作します。
* Thread::Queue#closed? は true を返します
* Thread::Queue#close は無視されます
* Thread::Queue#enq/push/<< は ClosedQueueError......オブジェクトを返します
また、ClosedQueueError は StopIteration を継承しているため、
close する事でループから脱出する事もできます。
例:
q = Queue.new
Thread.new{
while e = q.deq # wait for nil to break loop
# ...
end
}
q.close... -
NEWS for Ruby 2
. 3 . 0 (12.0) -
NEWS for Ruby 2.3.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。
...しません。
サポートの有無を実行時ではなくビルド時に検出するためです。
11806
* Kernel
* Kernel.#loop は StopIteration で停止したときに nil ではなく最後に評価した要素を返します。
11498
* Module
* Module#depre......るようになりました。(大文字・小文字を区別しません)
11695
* ログデバイスを開きなおすために Logger#reopen が追加されました。
11696
* io/wait
* IO#wait_readable は FIONREAD をチェックしなくなりました。
ソケッ......追加。
* ObjectSpace.#internal_class_of を追加。
* ObjectSpace.#internal_super_of を追加。
* OpenSSL
* OpenSSL::SSL::SSLSocket#accept_nonblock と
OpenSSL::SSL::SSLSocket#connect_nonblock は `exception: false` オプションをサポートするようになりまし...