ライブラリ
- ビルトイン (253)
- csv (11)
- date (11)
- digest (11)
- fiddle (11)
-
irb
/ frame (11) - json (11)
-
net
/ protocol (22) - optparse (11)
- pathname (11)
- psych (33)
-
rdoc
/ parser / ruby (11) - rexml (11)
-
rexml
/ document (55) -
rubygems
/ commands / which _ command (11) - stringio (11)
- strscan (11)
- thread (6)
- win32ole (33)
キーワード
- Array (11)
- Base (11)
- BasicObject (11)
- BlockCaller (11)
- CSV (11)
- Class (11)
- CompatibilityError (11)
- ConditionVariable (11)
- Data (8)
- Date (11)
- Default (11)
- Enumerator (11)
- ExternalEntity (11)
- Float (11)
- Frame (11)
- InvalidByteSequenceError (11)
- Lazy (11)
- Location (11)
- Node (6)
- NotationDecl (11)
- OptionParser (11)
- ParseException (11)
- Pathname (11)
- Pretty (11)
- Proc (11)
- ProtoCommandError (11)
- ProtoSyntaxError (11)
- Queue (11)
- Range (11)
- Rational (11)
- Regexp (3)
- ScalarScanner (11)
- SizedQueue (11)
- Stat (11)
- State (11)
- Stream (11)
- String (11)
- StringIO (11)
- StringScanner (11)
- SystemCallError (11)
- Thread (11)
- TracePoint (11)
- Transitive (11)
- UndefinedConversionError (11)
-
WIN32OLE
_ EVENT (11) -
WIN32OLE
_ VARIABLE (11) -
WIN32OLE
_ VARIANT (11) - WhichCommand (11)
- YAMLTree (11)
- fatal (11)
検索結果
-
RDoc
:: Parser :: Ruby (21017.0) -
Ruby のソースコードを解析するためのクラスです。
...Ruby のソースコードを解析するためのクラスです。... -
Gem
:: Commands :: WhichCommand (9013.0) -
指定された Gem パッケージに含まれるライブラリのパスを見つけるためのクラスです。
...ライブラリのパスを見つけるためのクラスです。
Usage: gem which FILE [...] [options]
Options:
-a, --[no-]all show all matching files
-g, --[no-]gems-first search gems before non-gems
Common Options:
-h, --help......します
--backtrace バックトレースを表示します
--debug Ruby 自体のデバッグオプションを有効にします
Arguments:
FILE Gem パッケージ名を指定します
Summary:
指定され......た Gem パッケージのライブラリのある場所を表示します
Defaults:
--no-gems-first --no-all... -
Range (6095.0)
-
範囲オブジェクトのクラス。 範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、 日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
...、
日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
==== 作り方
範囲オブジェクトは、Range.new を用いるほか、範囲演算子(`..' または `...')を
用いた d:spec/operator#range で生成できます。
い......[範囲オブジェクトの例][ruby]{
Range.new(1, 5) # 1 以上 5 以下
1..5 # 同上
1...5 # 1 以上 5 未満
//}
この例で分かるように、範囲オブジェクトは終端を含む範囲も含まない範囲も表せます。
Ruby 2.6.0 からは、終端に nil......した。
//emlist[終端を持たない範囲オブジェクト][ruby]{
p Range.new(1, nil) # 1 以上(上限無し)を表す
p(1..nil) # 同上
p(1..) # 同上(略した書き方)
//}
また、Ruby 2.7.0 では始端に nil を与えることで「始端を持た... -
Thread
:: ConditionVariable (6061.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...です。
以下も ConditionVariable を理解するのに参考になります。
https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF
=== Condition Variable とは
あるスレッド A が排他領域で動いていたとします。スレッド A は現在空いていない
リ......れはうまくいきません。
なぜなら、スレッド A は排他領域で動いているわけですから、他のスレッドは動くことが
できません。リソースを空けることもできません。スレッド A がリソースの空きを
待っていても、いつまで......cv.signal
}
}
以下は 14445 で紹介されている例です。@q が空になった場合、
あるいは満タンになった場合に Condition Variable を使って wait しています。
require 'thread'
class TinyQueue
def initialize(max=2)
@max = max
@... -
Range (6059.0)
-
範囲オブジェクトのクラス。 範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、 日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
...、
日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
==== 作り方
範囲オブジェクトは、Range.new を用いるほか、範囲演算子(`..' または `...')を
用いた d:spec/operator#range で生成できます。
い......[範囲オブジェクトの例][ruby]{
Range.new(1, 5) # 1 以上 5 以下
1..5 # 同上
1...5 # 1 以上 5 未満
//}
この例で分かるように、範囲オブジェクトは終端を含む範囲も含まない範囲も表せます。
Ruby 2.6.0 からは、終端に nil......い範囲オブジェクト」
を作ることができるようになりました。
//emlist[終端を持たない範囲オブジェクト][ruby]{
p Range.new(1, nil) # 1 以上(上限無し)を表す
p(1..nil) # 同上
p(1..) # 同上(略した書き方)
//}
====... -
Thread
:: Backtrace :: Location (6053.0) -
Ruby のフレームを表すクラスです。
...Ruby のフレームを表すクラスです。
Kernel.#caller_locations から生成されます。
//emlist[例1][ruby]{
# caller_locations.rb
def a(skip)
caller_locations(skip)
end
def b(skip)
a(skip)
end
def c(skip)
b(skip)
end
c(0..2).map do |call|
puts call.to_s
end
//}
例1の実......果:
caller_locations.rb:2:in `a'
caller_locations.rb:5:in `b'
caller_locations.rb:8:in `c'
//emlist[例2][ruby]{
# foo.rb
class Foo
attr_accessor :locations
def initialize(skip)
@locations = caller_locations(skip)
end
end
Foo.new(0..2).locations.map do |call|
puts call.to_s
end......//}
例2の実行結果:
init.rb:4:in `initialize'
init.rb:8:in `new'
init.rb:8:in `<main>'
=== 参考
* Ruby VM アドベントカレンダー #4 vm_backtrace.c: https://www.atdot.net/~ko1/diary/201212.html#d4... -
Range (6047.0)
-
範囲オブジェクトのクラス。 範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、 日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
...、
日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
==== 作り方
範囲オブジェクトは、Range.new を用いるほか、範囲演算子(`..' または `...')を
用いた d:spec/operator#range で生成できます。
い......ずれの方法でも始端と終端を与えます。
//emlist[範囲オブジェクトの例][ruby]{
Range.new(1, 5) # 1 以上 5 以下
1..5 # 同上
1...5 # 1 以上 5 未満
//}
この例で分かるように、範囲オブジェクトは終端を含む範囲も含まな......」ということがあります。
//emlist[値が範囲に含まれるかどうかを判定][ruby]{
p (1..5).cover?(6) # => false
p (1..5).cover?(5) # => true
p (1...5).cover?(5) # => false
//}
Range#cover? メソッドでの判定には演算子 <=> が使われます。
当然、始端と... -
StringScanner (6037.0)
-
StringScanner は文字列スキャナクラスです。 簡単に高速なスキャナを記述できます。
...tringScanner は文字列スキャナクラスです。
簡単に高速なスキャナを記述できます。
//emlist[例][ruby]{
require 'strscan'
s = StringScanner.new('This is an example string')
s.eos? #=> false
p s.scan(/\w+/) #=> "This"
p s.scan(/\w+/) #=> nil
p s.scan(/\s+......" "
p s.scan(/\s+/) #=> nil
p s.scan(/\w+/) #=> "is"
s.eos? #=> false
p s.scan(/\s+/) #=> " "
p s.scan(/\w+/) #=> "an"
p s.scan(/\s+/) #=> " "
p s.scan(/\w+/) #=> "example"
p s.scan(/\s+/) #=> " "
p s.scan(/\w+/) #=> "string"
s.eos? #=> true
p s.scan(/\s+/)......#=> nil
p s.scan(/\w+/) #=> nil
//}
StringScanner オブジェクトはスキャンする文字列と「スキャンポインタ」のセットです。
スキャンポインタとはスキャンしおわったところを示すインデックスのことです。
オブジェクト作成直後... -
Enumerator (6031.0)
-
each 以外のメソッドにも Enumerable の機能を提供するためのラッパークラスです。 また、外部イテレータとしても使えます。
...each 以外のメソッドにも Enumerable の機能を提供するためのラッパークラスです。
また、外部イテレータとしても使えます。
Enumerable モジュールは、 Module#include 先のクラスが持つ
each メソッドを元に様々なメソッドを提供し...... Array#map は Array#each の繰り返しを元にして定義されます。
Enumerator を介することにより String#each_byte のような
異なる名前のイテレータについても each と同様に Enumerable の機能を利用できます。
Enumerator を生成するには Enumera......erator を生成して返します。
=== 注意
外部イテレータとしての機能は Fiber を用いて実装されているため Fiber と同じ制限があります。
例えば以下のようなスレッドをまたいだ呼び出しはエラーになります。
//emlist[例][ruby]{
a... -
OptionParser (6031.0)
-
コマンドラインのオプションを取り扱うためのクラスです。
...ックを
OptionParser#on メソッドで登録していきます。
つまり、OptionParser を使う場合、基本的には
(1) OptionParser オブジェクト opt を生成する。
(2) オプションを取り扱うブロックを opt に登録する。
(3) opt.parse(ARGV) でコマン......parse する。
というような流れになります。
//emlist[][ruby]{
require "optparse"
ProgramConfig = Hash.new
opts = OptionParser.new
opts.on("-a"){|v| ProgramConfig[:a] = true } # オプション「-a」がコマンドラインで指定されていた場合の動作。
opts.parse!(ARG......parse を行う。
//}
=== デフォルトで利用可能なオプション
以下はデフォルトで利用可能なオプションです。オプションサマリには
出てきません。
: --help
オプションサマリを表示してから exit します。
: --version
OptionParser... -
TracePoint (6031.0)
-
Kernel.#set_trace_func と同様の機能をオブジェクト指向的な API で 提供するクラスです。
...race_func と同様の機能をオブジェクト指向的な API で
提供するクラスです。
//emlist[例:例外に関する情報を収集する][ruby]{
trace = TracePoint.new(:raise) do |tp|
p [tp.lineno, tp.event, tp.raised_exception]
end
# => #<TracePoint:0x007f786a452448>
trace.enab......le
# => false
0 / 0
# => [5, :raise, #<ZeroDivisionError: divided by 0>]
//}
TracePoint.new または、TracePoint.trace で指定したブロック
は、メソッドの引数(上記の例では :raise)に対応するイベントが発生した時に
呼び出されます。
発生するイベ......は、TracePoint.new を参照してくださ
い。
=== 参考
* Ruby VM アドベントカレンダー #12 TracePoint の紹介 (1): https://www.atdot.net/~ko1/diary/201212.html#d12
* Ruby VM アドベントカレンダー #13 TracePoint の紹介 (2): https://www.atdot.net/~ko1/diary/201212.h... -
Date (6025.0)
-
日付だけでなく時刻も扱える Date のサブクラス DateTime も利用できます。
...る Date のサブクラス DateTime も利用できます。
=== 簡単なつかいかた
//emlist[例][ruby]{
require 'date'
a = Date.new(1993, 2, 24)
b = Date.parse('1993-02-24')
b += 10
b - a #=> 10
b.year #=> 1993
b.strftime('%a') #=> "Sat"
yesterday = Date.today - 1
/...