種類
- モジュール関数 (44)
- 文書 (22)
- インスタンスメソッド (11)
ライブラリ
- ビルトイン (55)
クラス
- Object (11)
モジュール
- Kernel (44)
キーワード
-
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (11) - freeze (11)
-
untrace
_ var (11) - セキュリティモデル (11)
検索結果
先頭5件
-
Kernel
. # trace _ var(varname) {|new _ val| . . . . } -> nil (18215.0) -
グローバル変数 varname への代入のフックを登録します。
...合はRubyコードとして評価されます。
trace_var がフックするのは明示的な代入だけです。
フックは複数登録できます。
フックを解除するには、hook に nil を
指定するか、Kernel.#untrace_var を用います。
hook が nil ならば、設定......ます。解除した場合は解除した
フックを並べた配列を返します。
//emlist[例][ruby]{
trace_var(:$v){|val| puts "hook: $v=#{val.inspect}" }
$v = 1 #=> hook: $v=1
$v = "foo" #=> hook: $v="foo"
$v.upcase!
p $v #=> "FOO"
//}
@see Kernel.#untrace_var... -
Kernel
. # trace _ var(varname , hook) -> [String|Proc] (18215.0) -
グローバル変数 varname への代入のフックを登録します。
...合はRubyコードとして評価されます。
trace_var がフックするのは明示的な代入だけです。
フックは複数登録できます。
フックを解除するには、hook に nil を
指定するか、Kernel.#untrace_var を用います。
hook が nil ならば、設定......ます。解除した場合は解除した
フックを並べた配列を返します。
//emlist[例][ruby]{
trace_var(:$v){|val| puts "hook: $v=#{val.inspect}" }
$v = 1 #=> hook: $v=1
$v = "foo" #=> hook: $v="foo"
$v.upcase!
p $v #=> "FOO"
//}
@see Kernel.#untrace_var... -
Kernel
. # trace _ var(varname , hook) -> nil (18215.0) -
グローバル変数 varname への代入のフックを登録します。
...合はRubyコードとして評価されます。
trace_var がフックするのは明示的な代入だけです。
フックは複数登録できます。
フックを解除するには、hook に nil を
指定するか、Kernel.#untrace_var を用います。
hook が nil ならば、設定......ます。解除した場合は解除した
フックを並べた配列を返します。
//emlist[例][ruby]{
trace_var(:$v){|val| puts "hook: $v=#{val.inspect}" }
$v = 1 #=> hook: $v=1
$v = "foo" #=> hook: $v="foo"
$v.upcase!
p $v #=> "FOO"
//}
@see Kernel.#untrace_var... -
Kernel
. # untrace _ var(varname , hook = nil) -> [String|Proc] (6224.0) -
グローバル変数 varname に関連付けられたフックを解除します。
...す。
//emlist[例][ruby]{
trace_var(:$v){|val| print "hookA.#{val.inspect},\n" }
block = proc{|val| print "hookB.#{val.inspect}," }
trace_var(:$v,&block)
$v = 'str' #=> hookB."str",hookA."str",
untrace_var(:$v,block)
$v = 'str' #=> hookA."str",
trace_var(:$v){|val| print "hookC.#{......val.inspect}," }
p untrace_var(:$v) #=> [#<Proc:0x02b68f58@..:9>, #<Proc:0x02b6978c@..:3>]
$v = 'str' # なにも出力されない
//}
@see Kernel.#trace_var... -
1
. 6 . 8から1 . 8 . 0への変更点(まとめ) (2520.0) -
1.6.8から1.8.0への変更点(まとめ) * ((<1.6.8から1.8.0への変更点(まとめ)/インタプリタの変更>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加されたクラス/モジュール>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加されたメソッド>)) * ((<1.6.8から1.8.0への変更点(まとめ)/追加された定数>)) * ((<1.6.8から1.8.0への変更点(まとめ)/拡張されたクラス/メソッド(互換性のある変更)>)) * ((<1.6.8から1.8.0への変更点(まとめ)/変更されたクラス/メソッド(互換性のない変更)>)) * ((<1.6.8から1.8.0への変更点(まとめ)/文法の変更>)) * ((<1.6.8から1.8.0への変更点(まとめ)/正規表現>)) * ((<1.6.8から1.8.0への変更点(まとめ)/Marshal>)) * ((<1.6.8から1.8.0への変更点(まとめ)/Windows 対応>)) * ((<1.6.8から1.8.0への変更点(まとめ)/廃止された(される予定の)機能>)) * ((<1.6.8から1.8.0への変更点(まとめ)/ライブラリ>)) * ((<1.6.8から1.8.0への変更点(まとめ)/拡張ライブラリAPI>)) * ((<1.6.8から1.8.0への変更点(まとめ)/バグ修正>)) * ((<1.6.8から1.8.0への変更点(まとめ)/サポートプラットフォームの追加>))
...作はなくなりました)
$defout や $deferr に代入を行うと警告がでます。
(注:1.6 に $deferr はありません)
((<ruby-dev:20961>))
$stdin にオブジェクトを代入すると標準入力からの入力メソッド(gets 等)
はそのオブジェクトにメソ......: 警告を出力しない (-W0 新しい警告レベル)
* false: 重要な警告のみ出力 (-W1 デフォルト)
* true: すべての警告を出力する (-W2 or -W or -v or -w or --verbose)
追加された -W オプションは $VERBOSE = nil の指定(-W0)を可能にします。
:......。((<ruby-talk:72257>))
syscall(1, 2**30)
=> -:1:in `syscall': wrong argument type Bignum (expected String) (TypeError)
from -:1
ruby 1.6.8 (2002-12-24) [i586-linux]
: ((<組み込み関数/trap>)) [bug]
: ((<組み込み関数/trace_var>)) [bug... -
Object
# freeze -> self (112.0) -
オブジェクトを凍結(内容の変更を禁止)します。
...壊的な操作' と呼ばれるもの一般です。変数への参照自体を凍結したい
場合は、グローバル変数なら Kernel.#trace_var が使えます。
@return self を返します。
//emlist[][ruby]{
a1 = "foo".freeze
a1 = "bar"
p a1 #=> "bar"
a2 = "foo".freeze
a2.replace("......ます。
//emlist[][ruby]{
a = [1].freeze
p a.frozen? #=> true
a[0] = "foo"
p a # can't modify frozen Array (RuntimeError)
b = a.dup
p b #=> [1]
p b.frozen? #=> false
b[0] = "foo"
p b #=> ["foo"]
//}
@see Object#frozen?,Object#dup,Kernel.#trace_var......ます。
//emlist[][ruby]{
a = [1].freeze
p a.frozen? #=> true
a[0] = "foo"
p a # can't modify frozen Array (FrozenError)
b = a.dup
p b #=> [1]
p b.frozen? #=> false
b[0] = "foo"
p b #=> ["foo"]
//}
@see Object#frozen?,Object#dup,Kernel.#trace_var... -
セキュリティモデル (102.0)
-
セキュリティモデル RubyにはCGI等のプログラミングを安全に行うことを助ける為に、セキュリティ 機構が備わっています。
...= 1
}
th.join
p $SAFE # => 0
//}
* $SAFE の値を現在の値より小さく変更する事はできない
//emlist{
$ ruby -e '$SAFE = 1; $SAFE = 0'
-e:1: tried to downgrade safe level from 1 to 0 (SecurityError)
//}
原則として、各セキュリティレベルにはそれ以下......す。
===== 汚染されるオブジェクト
* IOや環境変数、コマンドライン引数(ARGV)から得られた文字列
$ ruby -e 'p ARGV[0].tainted?' hoge
true
環境変数PATHだけは例外で、値に危険なパスを含む場合のみ汚染されます。
ここ......と、記憶していたセーフレベルで実行される。
* 汚染された文字列を第二引数に指定して Kernel.#trap/Kernel.#trace_var を
実行するとその時点で例外 SecurityError が発生する。
* 実装の都合上 Fixnum, Bignum, Float,
Symbol, true,......と、記憶していたセーフレベルで実行される。
* 汚染された文字列を第二引数に指定して Kernel.#trap/Kernel.#trace_var を
実行するとその時点で例外 SecurityError が発生する。
* 実装の都合上 Integer, Float, Symbol, true,
false,......= 0
end
th.join
p $SAFE # => 0
//}
* $SAFE の値を現在の値より小さく変更する事もできる
//emlist{
$ ruby -e '$SAFE = 1; $SAFE = 0'
//}
原則として、各セキュリティレベルにはそれ以下のセキュリティレベルの制限も
適用さ...