るりまサーチ (Ruby 3.1)

最速Rubyリファレンスマニュアル検索!
99件ヒット [1-99件を表示] (0.027秒)

別のキーワード

  1. _builtin exec
  2. kernel exec
  3. rubygems/defaults default_exec_format
  4. process exec
  5. io close_on_exec=

モジュール

検索結果

static VALUE exec_under(VALUE (*func)(), VALUE under, VALUE cbase, void *args) (78301.0)

Kernel.#exec(env, program, *args, options={}) -> () (54370.0)

引数で指定されたコマンドを実行します。

引数で指定されたコマンドを実行します。

プロセスの実行コードはそのコマンド(あるいは shell)になるので、
起動に成功した場合、このメソッドからは戻りません。

この形式では、常に shell を経由せずに実行されます。

exec(3) でコマンドを実行すると、
元々のプログラムの環境をある程度(ファイルデスクリプタなど)引き継ぎます。
Hash を options として渡すことで、この挙動を変更できます。
詳しくは Kernel.#spawn を参照してください。

=== 引数の解釈

この形式で呼び出した場合、空白や shell のメタキャラクタも
そのまま program ...

Kernel.#exec(program, *args, options={}) -> () (54370.0)

引数で指定されたコマンドを実行します。

引数で指定されたコマンドを実行します。

プロセスの実行コードはそのコマンド(あるいは shell)になるので、
起動に成功した場合、このメソッドからは戻りません。

この形式では、常に shell を経由せずに実行されます。

exec(3) でコマンドを実行すると、
元々のプログラムの環境をある程度(ファイルデスクリプタなど)引き継ぎます。
Hash を options として渡すことで、この挙動を変更できます。
詳しくは Kernel.#spawn を参照してください。

=== 引数の解釈

この形式で呼び出した場合、空白や shell のメタキャラクタも
そのまま program ...

Process.exec(command, *args) -> () (54358.0)

カレントプロセスを与えられた外部コマンドで置き換えます。

カレントプロセスを与えられた外部コマンドで置き換えます。


=== 引数の解釈

引数が一つだけ与えられた場合、command が shell のメタ文字
//emlist{
* ? {} [] <> () ~ & | \ $ ; ' ` " \n
//}
を含む場合、shell 経由で実行されます。
そうでなければインタプリタから直接実行されます。

引数が複数与えられた場合、第 2 引数以降は command に直接渡され、
インタプリタから直接実行されます。

第 1 引数が 2 要素の配列の場合、第 1 要素の文字列が実際に起動する
プログラムのパスで、第 2 要素が「みせかけ...

Kernel.#exec(command, options={}) -> () (54340.0)

引数で指定されたコマンドを実行します。

引数で指定されたコマンドを実行します。

プロセスの実行コードはそのコマンド(あるいは shell)になるので、
起動に成功した場合、このメソッドからは戻りません。

=== 引数の解釈

この形式では command が shell のメタ文字
//emlist{
* ? {} [] <> () ~ & | \ $ ; ' ` " \n
//}
を含む場合、shell 経由で実行されます。
そうでなければインタプリタから直接実行されます。

@param command コマンドを文字列で指定します。
@param env 更新する環境変数を表す Hash
@param options...

絞り込み条件を変える

Kernel.#exec(env, command, options={}) -> () (54340.0)

引数で指定されたコマンドを実行します。

引数で指定されたコマンドを実行します。

プロセスの実行コードはそのコマンド(あるいは shell)になるので、
起動に成功した場合、このメソッドからは戻りません。

=== 引数の解釈

この形式では command が shell のメタ文字
//emlist{
* ? {} [] <> () ~ & | \ $ ; ' ` " \n
//}
を含む場合、shell 経由で実行されます。
そうでなければインタプリタから直接実行されます。

@param command コマンドを文字列で指定します。
@param env 更新する環境変数を表す Hash
@param options...

Gem::Specification#default_executable=(executable) (18601.0)

Gem パッケージ内で gem コマンド経由で実行するファイルをセットします。

Gem パッケージ内で gem コマンド経由で実行するファイルをセットします。

@param executable 実行ファイルを指定します。

Gem::Specification#executable=(executable) (18601.0)

実行可能ファイル名をセットします。

実行可能ファイル名をセットします。

@param executable 実行可能ファイル名を指定します。

Gem::Specification#executables=(executables) (18601.0)

実行可能ファイル名のリストをセットします。

実行可能ファイル名のリストをセットします。

@param executables 実行可能ファイル名のリストを指定します。

IO#close_on_exec? -> bool (18460.0)

自身に close-on-exec フラグが設定されていた場合 true を返します。 そうでない場合に false を返します。

自身に close-on-exec フラグが設定されていた場合 true を返します。
そうでない場合に false を返します。

f = open("/dev/null")
f.close_on_exec? #=> true
f.close_on_exec = false
f.close_on_exec? #=> false
f.close_on_exec = true
f.close_on_exec? #=> true

@see IO#close_on_e...

絞り込み条件を変える

IO#close_on_exec=(bool) (18424.0)

自身に close-on-exec フラグを設定します。

自身に close-on-exec フラグを設定します。

このフラグをセットすると exec(2) 時にそのファイルデスクリプタを
close します。

@see fcntl(2)
@param bool 自身の close-on-exec フラグを true か false で指定します。

f = open("/dev/null")
f.close_on_exec = true
system("cat", "/proc/self/fd/#{f.fileno}") # cat: /proc/self/fd/3: No such file or directory
...

BasicObject#instance_exec(*args) {|*vars| ... } -> object (18358.0)

与えられたブロックをレシーバのコンテキストで実行します。

与えられたブロックをレシーバのコンテキストで実行します。

ブロック実行中は、 self がレシーバのコンテキストになるので
レシーバの持つインスタンス変数にアクセスすることができます。

@param args ブロックパラメータに渡す値です。

//emlist[例][ruby]{
class KlassWithSecret
def initialize
@secret = 99
end
end
k = KlassWithSecret.new
# 以下で x には 5 が渡される
k.instance_exec(5) {|x| @secret + x } #=> 10...

WEBrick::Utils.#set_close_on_exec(io) -> () (18352.0)

指定された io の Fcntl::FD_CLOEXEC を 1 に設定します。 この io は Kernel.#exec などが実行される時に close されるようになります。

指定された io の Fcntl::FD_CLOEXEC を 1 に設定します。
この io は Kernel.#exec などが実行される時に close されるようになります。

@param io IO オブジェクトを指定します。

@see fcntl(2)

Fcntl::FD_CLOEXEC -> Integer (18349.0)

close-on-exec フラグの値です。

close-on-exec フラグの値です。

Module#class_exec(*args) {|*vars| ... } -> object (18325.0)

与えられたブロックを指定された args を引数としてモジュールのコンテキストで評価します。

与えられたブロックを指定された args を引数としてモジュールのコンテキストで評価します。

モジュールのコンテキストで評価するとは、実行中そのモジュールが self になるということです。
つまり、そのモジュールの定義式の中にあるかのように実行されます。

ローカル変数、定数とクラス変数のスコープはブロックの外側のスコープになります。

@param args ブロックに渡す引数を指定します。


//emlist[例][ruby]{
class Thing
end
c = 1

Thing.class_exec{
def hello()
"Hello there!"
...

絞り込み条件を変える

Module#module_exec(*args) {|*vars| ... } -> object (18325.0)

与えられたブロックを指定された args を引数としてモジュールのコンテキストで評価します。

与えられたブロックを指定された args を引数としてモジュールのコンテキストで評価します。

モジュールのコンテキストで評価するとは、実行中そのモジュールが self になるということです。
つまり、そのモジュールの定義式の中にあるかのように実行されます。

ローカル変数、定数とクラス変数のスコープはブロックの外側のスコープになります。

@param args ブロックに渡す引数を指定します。


//emlist[例][ruby]{
class Thing
end
c = 1

Thing.class_exec{
def hello()
"Hello there!"
...

Gem.default_exec_format -> String (18304.0)

デフォルトのインストールするコマンド名を決めるためのフォーマット文字列を返します。

デフォルトのインストールするコマンド名を決めるためのフォーマット文字列を返します。

Gem::Installer.exec_format -> String (18304.0)

実行ファイル名のフォーマットを返します。

実行ファイル名のフォーマットを返します。

指定しない場合は ruby コマンドと同じフォーマットを使用します。

Gem::Installer.exec_format=(format) (18304.0)

実行ファイル名のフォーマットをセットします。

実行ファイル名のフォーマットをセットします。

@param format 実行ファイル名のフォーマットを指定します。

File.executable?(path) -> bool (18301.0)

FileTest.#executable? と同じです。

FileTest.#executable? と同じです。

@param path パスを表す文字列を指定します。

絞り込み条件を変える

File.executable_real?(path) -> bool (18301.0)

FileTest.#executable_real? と同じです。

FileTest.#executable_real? と同じです。

@param path パスを表す文字列を指定します。

File::Stat#executable? -> bool (18301.0)

実効ユーザ/グループIDで実行できる時に真を返します。

実効ユーザ/グループIDで実行できる時に真を返します。

//emlist[][ruby]{
p File::Stat.new($0).executable?
# 例
#=> true
//}

File::Stat#executable_real? -> bool (18301.0)

実ユーザ/グループIDで実行できる時に真を返します。

実ユーザ/グループIDで実行できる時に真を返します。

//emlist[][ruby]{
p File::Stat.new($0).executable_real?
#例
#=> true
//}

FileTest.#executable?(file) -> bool (18301.0)

ファイルがカレントプロセスにより実行できる時に真を返しま す。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。

ファイルがカレントプロセスにより実行できる時に真を返しま
す。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。

@param file ファイル名を表す文字列を指定します。

例:
FileTest.executable?('/bin') # => true
FileTest.executable?('/bin/bash') # => true

FileTest.#executable_real?(file) -> bool (18301.0)

ファイルがカレントプロセスの実ユーザか実グループで実行できる時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。

ファイルがカレントプロセスの実ユーザか実グループで実行できる時に真を返します。そうでない場合、ファイルが存在しない場合、あるいはシステムコールに失敗した場合などには false を返します。

@param file ファイル名を表す文字列を指定します。

//emlist[例][ruby]{
IO.write("empty.txt", "")
File.chmod(0744, "empty.txt")
FileTest.executable_real?("empty.txt") # => true
File.chmod(0644, "empty.txt")
FileTest.ex...

絞り込み条件を変える

Gem::Command#execute -> () (18301.0)

このメソッドはサブクラスで再定義されます。 コマンドを実行します。

このメソッドはサブクラスで再定義されます。
コマンドを実行します。

@raise RuntimeError このメソッドがサブクラスで再定義されていない場合に発生します。

Gem::Commands::BuildCommand#execute -> () (18301.0)

コマンドを実行します。

コマンドを実行します。

Gem::Commands::DependencyCommand#execute -> () (18301.0)

コマンドを実行します。

コマンドを実行します。

Gem::Specification#default_executable -> String | nil (18301.0)

Gem パッケージ内で gem コマンド経由で実行するファイルを返します。

Gem パッケージ内で gem コマンド経由で実行するファイルを返します。

Gem::Specification#executable -> String (18301.0)

実行可能ファイル名を返します。

実行可能ファイル名を返します。

絞り込み条件を変える

Gem::Specification#executables -> [String] (18301.0)

実行可能ファイル名のリストを返します。

実行可能ファイル名のリストを返します。

Gem::Uninstaller#remove_executables(gemspec) (18301.0)

与えられた Gem::Specification に対応する実行ファイルを削除します。

与えられた Gem::Specification に対応する実行ファイルを削除します。

@param gemspec アンインストール指定されている Gem の Gem::Specification を指定します。

IRB::ExtendCommand::ChangeWorkspace#execute(*obj) -> obj (18301.0)

irb の self を obj で指定したオブジェクトに設定します。self に設定され たオブジェクトを返します。

irb の self を obj で指定したオブジェクトに設定します。self に設定され
たオブジェクトを返します。

@param obj 任意のオブジェクトを指定できます。複数指定した場合は先頭のオ
ブジェクトのみが設定されます。

IRB::ExtendCommand::CurrentWorkingWorkspace#execute(*obj) -> obj (18301.0)

irb の self を返します。

irb の self を返します。

@param obj 使用しません。

IRB::ExtendCommand::Foreground#execute(*obj) -> IRB::Irb (18301.0)

指定したサブ irb に移動します。

指定したサブ irb に移動します。

@param obj 移動するサブ irb を識別する以下のいずれかのオブジェクトを指定します。

* irb インタプリタ番号
* irb オブジェクト
* スレッド ID
* 各インタプリタの self (「irb(obj)」で起動した時の obj)

絞り込み条件を変える

IRB::ExtendCommand::Help#execute(*names) -> nil (18301.0)

RI から Ruby のドキュメントを参照します。

RI から Ruby のドキュメントを参照します。

irb(main):001:0> help String#match
...

@param names 参照したいクラス名やメソッド名などを文字列で指定します。

names を指定しなかった場合は、RI を対話的なモードで起動します。メソッド
名などを入力する事でドキュメントの検索が行えます。入力のタブ補完をする
事ができます。また、空行を入力する事で irb のプロンプトに戻る事ができま
す。

irb(main):001:0> help

Enter the method name you want to look...

IRB::ExtendCommand::IrbCommand#execute(*obj) -> IRB::Irb (18301.0)

新しいサブ irb インタプリタを起動します。

新しいサブ irb インタプリタを起動します。

@param obj 新しいサブ irb インタプリタで self にするオブジェクトを指定
します。省略した場合は irb を起動したときの main オブジェク
トを self にします。

IRB::ExtendCommand::Jobs#execute -> IRB::JobManager (18301.0)

サブ irb のリストを返します。

サブ irb のリストを返します。

IRB::ExtendCommand::Kill#execute(*obj) -> object (18301.0)

指定したサブ irb を停止します。

指定したサブ irb を停止します。

@param obj 停止するサブ irb を識別する以下のいずれかのオブジェクトを指定します。

* irb インタプリタ番号
* irb オブジェクト
* スレッド ID
* 各インタプリタの self (「irb(obj)」で起動した時の obj)

IRB::ExtendCommand::Load#execute(file_name, priv = nil) -> nil (18301.0)

ファイル path を Ruby スクリプトとみなし、現在の irb インタプリタ上で実 行します。

ファイル path を Ruby スクリプトとみなし、現在の irb インタプリタ上で実
行します。

Kernel.#load と異なり、path の内容を irb で一行ずつタイプしたかの
ように、irb 上で一行ずつ評価されます。

@param file_name ファイル名を文字列で指定します。

@param priv 真を指定した場合は実行は内部的に生成される無名モジュール上
で行われ、グローバルな名前空間を汚染しません。

@raise LoadError 読み込みに失敗した場合に発生します。

絞り込み条件を変える

IRB::ExtendCommand::Nop#execute(*opts) -> () (18301.0)

何もしません。サブクラスでオーバーライドして使用します。

何もしません。サブクラスでオーバーライドして使用します。

@param opts irb 中でコマンドに渡す引数を指定します。

IRB::ExtendCommand::Nop.execute(conf, *opts) -> () (18301.0)

コマンドを実行します。ユーザが直接使用するものではありません。

コマンドを実行します。ユーザが直接使用するものではありません。

@param conf IRB::Context オブジェクトを指定します。

@param opts irb 中でコマンドに渡す引数を指定します。

IRB::ExtendCommand::PopWorkspace#execute(*obj) -> [IRB::WorkSpace] (18301.0)

UNIX シェルコマンドの popd と同じです。

UNIX シェルコマンドの popd と同じです。

@param obj 使用しません。

IRB::ExtendCommand::PushWorkspace#execute(*obj) -> [IRB::WorkSpace] (18301.0)

UNIX シェルコマンドの pushd と同じです。

UNIX シェルコマンドの pushd と同じです。

@param obj IRB::WorkSpace オブジェクトを指定します。複数指定した
場合は先頭のオブジェクトのみが設定されます。

IRB::ExtendCommand::Require#execute(file_name) -> bool (18301.0)

ファイル file_name を現在の irb インタプリタ上で実行します。

ファイル file_name を現在の irb インタプリタ上で実行します。

file_name に Ruby スクリプトを指定した場合は、Kernel.#require と異
なり、file_name の内容を irb で一行ずつタイプしたかのように、irb 上で一
行ずつ評価されます。require に成功した場合は true を、そうでない場合は
false を返します。

拡張ライブラリ(*.so,*.o,*.dll など)を指定した場合は単純に require され
ます。

@param file_name ファイル名を文字列で指定します。

絞り込み条件を変える

IRB::ExtendCommand::Source#execute(file_name) -> nil (18301.0)

現在の irb インタプリタ上で、 Ruby スクリプト path を評価します。

現在の irb インタプリタ上で、 Ruby スクリプト path を評価します。

path の内容を irb で一行ずつタイプしたかのように、irb 上で一行ずつ評価
されます。$" は更新されず、何度でも実行し直す事ができます。

@param file_name ファイル名を文字列で指定します。

IRB::ExtendCommand::Workspaces#execute(*obj) -> [IRB::WorkSpace] (18301.0)

現在のワークスペースの一覧を返します。

現在のワークスペースの一覧を返します。

@param obj 使用しません。

Kernel#find_executable(bin, path = nil) -> String | nil (18301.0)

パス path から実行ファイル bin を探します。

パス path から実行ファイル bin を探します。

実行ファイルが見つかった場合は、そのフルパスを返します。
実行ファイルが見つからなかった場合は、nilを返します。

このメソッドは Makefile を変更しません。

@param bin 実行ファイルの名前を指定します。

@param path パスを指定します。デフォルトは環境変数 PATH です。
環境変数 PATH が定義されていない場合は /usr/local/bin,
/usr/ucb, /usr/bin, /bin を使います。

Pathname#executable? -> bool (18301.0)

FileTest.executable?(self.to_s) と同じです。

FileTest.executable?(self.to_s) と同じです。


@see FileTest.#executable?

Pathname#executable_real? -> bool (18301.0)

FileTest.executable_real?(self.to_s) と同じです。

FileTest.executable_real?(self.to_s) と同じです。


@see FileTest.#executable_real?

絞り込み条件を変える

Rake::Task#execute(args = nil) (18301.0)

自身に関連付けられているアクションを実行します。

自身に関連付けられているアクションを実行します。

void rb_exec_end_proc(void) (18301.0)

END ブロックおよび Kernel#at_exit で登録した Proc オブジェクトを 実行します。

END ブロックおよび Kernel#at_exit で登録した Proc オブジェクトを
実行します。

Errno::ELIBEXEC (18001.0)

システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。

システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。

Errno::ENOEXEC (18001.0)

システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。

システムコールのエラーコードを表す例外クラスです。詳細は Errno::EXXX を参照してください。

Win32::Registry::Constants::KEY_EXECUTE (9301.0)

@todo

@todo

セキュリティアクセスマスク。

絞り込み条件を変える

Gem::Specification#add_bindir(executables) -> Array | nil (301.0)

実行コマンドの格納場所を返します。

実行コマンドの格納場所を返します。

@param executables 実行コマンド名を格納した配列を指定します。

IO.popen([env = {}, [cmdname, arg0], *args, execopt={}], mode = "r", opt={}) -> IO (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

IO.popen([env = {}, [cmdname, arg0], *args, execopt={}], mode = "r", opt={}) {|f| ... } -> object (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

IO.popen([env = {}, cmdname, *args, execopt={}], mode = "r", opt={}) -> IO (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

IO.popen([env = {}, cmdname, *args, execopt={}], mode = "r", opt={}) {|f| ... } -> object (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

絞り込み条件を変える

IO.popen(env = {}, [[cmdname, arg0], *args, execopt={}], mode = "r", opt={}) -> IO (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

IO.popen(env = {}, [[cmdname, arg0], *args, execopt={}], mode = "r", opt={}) {|f| ... } -> object (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

IO.popen(env = {}, [cmdname, *args, execopt={}], mode = "r", opt={}) -> IO (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

IO.popen(env = {}, [cmdname, *args, execopt={}], mode = "r", opt={}) {|f| ... } -> object (301.0)

サブプロセスを実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

サブプロセスを実行し、そのプロセスの標準入出力
との間にパイプラインを確立します。生成したパイプを IO オブジェクトとして返します。

p io = IO.popen("cat", "r+") # => #<IO:fd 4>
io.puts "foo"
io.close_write
p io.gets # => "foo\n"

サブプロセスを指定する方法は2通りあります。文字列を指定する場合と配列を指定する場合です。
文字列の場合は、シェルを経由して子プロセスを実行し、
配列の場合は、シェルを経由せずに子プロセスを実行します。

...

NEWS for Ruby 2.2.0 (163.0)

NEWS for Ruby 2.2.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

NEWS for Ruby 2.2.0
このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

それぞれのエントリーは参照情報があるため短いです。
十分な情報と共に書かれた全ての変更のリストは ChangeLog ファイルか bugs.ruby-lang.org の issue を参照してください。

== 2.1.0 以降の変更

=== 言語仕様の変更

* nil/true/false
* nil/true/false はフリーズされました 8923

* Hash リテラル
* 後ろにコロンのあるシンボルをキーにしたと...

絞り込み条件を変える

RbConfig::MAKEFILE_CONFIG -> Hash (121.0)

RbConfig::CONFIG と同じですが、その値は以下のような形 で他の変数への参照を含みます。 MAKEFILE_CONFIG["bindir"] = "$(exec_prefix)/bin" これは、Makefile の変数参照の形式で MAKEFILE_CONFIG は、 Makefile 作成の際に利用されることを想定しています。

RbConfig::CONFIG
と同じですが、その値は以下のような形
で他の変数への参照を含みます。
MAKEFILE_CONFIG["bindir"] = "$(exec_prefix)/bin"
これは、Makefile の変数参照の形式で MAKEFILE_CONFIG は、
Makefile 作成の際に利用されることを想定しています。

require 'rbconfig'

print <<-END_OF_MAKEFILE
prefix = #{RbConfig::MAKEFILE_CONFIG['prefix']}
exec_prefix = #{RbC...

Kernel.#spawn(env, program, *args, options={}) -> Integer (58.0)

引数を外部コマンドとして実行しますが、生成した 子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。

引数を外部コマンドとして実行しますが、生成した
子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。

env に Hash を渡すことで、exec(2) で子プロセス内で
ファイルを実行する前に環境変数を変更することができます。
Hash のキーは環境変数名文字列、Hash の値に設定する値とします。
nil とすることで環境変数が削除(unsetenv(3))されます。
//emlist[例][ruby]{
# FOO を BAR にして BAZ を削除する
pid = spawn({"FOO"=>"BAR", "BAZ"=>nil}, command)
//...

Kernel.#spawn(program, *args) -> Integer (58.0)

引数を外部コマンドとして実行しますが、生成した 子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。

引数を外部コマンドとして実行しますが、生成した
子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。

env に Hash を渡すことで、exec(2) で子プロセス内で
ファイルを実行する前に環境変数を変更することができます。
Hash のキーは環境変数名文字列、Hash の値に設定する値とします。
nil とすることで環境変数が削除(unsetenv(3))されます。
//emlist[例][ruby]{
# FOO を BAR にして BAZ を削除する
pid = spawn({"FOO"=>"BAR", "BAZ"=>nil}, command)
//...

NEWS for Ruby 2.0.0 (55.0)

NEWS for Ruby 2.0.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

NEWS for Ruby 2.0.0
このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

それぞれのエントリーは参照情報があるため短いです。
十分な情報と共に書かれた全ての変更のリストは ChangeLog ファイルか bugs.ruby-lang.org の issue を参照してください。

== 1.9.3 以降の変更

=== 言語仕様の変更

* キーワード引数を追加しました
* %i, %I をシンボルの配列作成のために追加しました。(%w, %W に似ています)
* デフォルトのソースエンコーディングを US-ASCI...

Rubyの起動 (55.0)

Rubyの起動 * cmd_option * shebang

Rubyの起動
* cmd_option
* shebang

Rubyインタプリタの起動は以下の書式のコマンドラインにより行います。

ruby [ option ...] [ -- ] [ programfile ] [ argument ...]

ここで、option は後述のcmd_option
のいずれかを指定します。-- は、オプション列の終りを明示するため
に使用できます。programfile は、Ruby スクリプトを記述したファイ
ルです。これを省略したり`-' を指定した場合には標準入力を Ruby ス
クリプトとみなします。

programfile が...

絞り込み条件を変える

Fcntl::F_GETFD -> Integer (49.0)

ファイルディスクリプタから close-on-exec フラグの値を読み出します。

ファイルディスクリプタから close-on-exec フラグの値を読み出します。

Fcntl::F_SETFD -> Integer (49.0)

ファイルディスクリプタに close-on-exec フラグの値を設定します。

ファイルディスクリプタに close-on-exec フラグの値を設定します。

FileUtils#sh(*cmd) {|result, status| ... } (37.0)

与えられたコマンドを実行します。

与えられたコマンドを実行します。

与えられた引数が複数の場合、シェルを経由しないでコマンドを実行します。

@param cmd 引数の解釈に関しては Kernel.#exec を参照してください。


例:
sh %{ls -ltr}

sh 'ls', 'file with spaces'

# check exit status after command runs
sh %{grep pattern file} do |ok, res|
if ! ok
puts "pattern not found (status = #...

Gem::Installer.new(gem, options = {}) -> Gem::Installer (37.0)

@todo 書いてないオプションがいっぱいある

@todo 書いてないオプションがいっぱいある

与えられた引数で自身を初期化します。

@param gem インストール対象の Gem のパスを指定します。

@param options インストーラが使用するオプションをハッシュで指定します。
使用できるキーは以下の通りです。
: :env_shebang
コマンドのラッパーで shebang line に /usr/bin/env を使用します。
: :force
署名された Gem のみをインストールするというポリシー以外、
全てのバージョンチェックとセキュリティポリシーのチェックを行わない...

ruby 1.9 feature (37.0)

ruby 1.9 feature ruby version 1.9.0 は開発版です。 以下にあげる機能は将来削除されたり互換性のない仕様変更がなされるかもしれません。 1.9.1 以降は安定版です。 バグ修正がメインになります。

ruby 1.9 feature
ruby version 1.9.0 は開発版です。
以下にあげる機能は将来削除されたり互換性のない仕様変更がなされるかもしれません。
1.9.1 以降は安定版です。
バグ修正がメインになります。

記号について(特に重要なものは大文字(主観))

* カテゴリ
* [ruby]: ruby インタプリタの変更
* [api]: 拡張ライブラリ API
* [lib]: ライブラリ
* [parser]: 文法の変更
* [regexp]: 正規表現の機能拡張
* [marshal]: Marshal ファイルのフォーマット変更
* ...

絞り込み条件を変える

rubygems/commands/install_command (37.0)

Gem パッケージをローカルリポジトリにインストールするためのライブラリです。

Gem パッケージをローカルリポジトリにインストールするためのライブラリです。

Usage: gem install GEMNAME [GEMNAME ...] [options] -- --build-flags [options]
Options:
--platform PLATFORM 指定されたプラットフォームの Gem パッケージをインストールします
-v, --version VERSION 指定されたバージョンの Gem パッケージをインストールします
Install/Update Op...

Kernel.#spawn(command, options={}) -> Integer (28.0)

引数を外部コマンドとして実行しますが、生成した 子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。

引数を外部コマンドとして実行しますが、生成した
子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。


=== 引数の解釈

この形式では command が shell のメタ文字
//emlist{
* ? {} [] <> () ~ & | \ $ ; ' ` " \n
//}
を含む場合、shell 経由で実行されます。
そうでなければインタプリタから直接実行されます。


@param command コマンドを文字列で指定します。
@param env 更新する環境変数を表す Hash
@param options オプションパラメータ Hash...

Kernel.#spawn(env, command, options={}) -> Integer (28.0)

引数を外部コマンドとして実行しますが、生成した 子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。

引数を外部コマンドとして実行しますが、生成した
子プロセスの終了を待ち合わせません。生成した子プロセスのプロセスIDを返します。


=== 引数の解釈

この形式では command が shell のメタ文字
//emlist{
* ? {} [] <> () ~ & | \ $ ; ' ` " \n
//}
を含む場合、shell 経由で実行されます。
そうでなければインタプリタから直接実行されます。


@param command コマンドを文字列で指定します。
@param env 更新する環境変数を表す Hash
@param options オプションパラメータ Hash...

Kernel.#system(command, options={}) -> bool | nil (22.0)

引数を外部コマンドとして実行して、成功した時に真を返します。

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。
それ以外の終了ステータスの場合は false を返します。
コマンドを実行できなかった場合は nil を返します。

options で :exception に true を指定することで、
nil や false を返す代わりに例外を発生するようにできます。

終了ステータスは変数 $? で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス
127 を返します。シェルを介さない場合は Ruby の子プロセスがス...

Kernel.#system(env, command, options={}) -> bool | nil (22.0)

引数を外部コマンドとして実行して、成功した時に真を返します。

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。
それ以外の終了ステータスの場合は false を返します。
コマンドを実行できなかった場合は nil を返します。

options で :exception に true を指定することで、
nil や false を返す代わりに例外を発生するようにできます。

終了ステータスは変数 $? で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス
127 を返します。シェルを介さない場合は Ruby の子プロセスがス...

絞り込み条件を変える

Kernel.#system(env, program, *args, options={}) -> bool | nil (22.0)

引数を外部コマンドとして実行して、成功した時に真を返します。

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。
それ以外の終了ステータスの場合は false を返します。
コマンドを実行できなかった場合は nil を返します。

options で :exception に true を指定することで、
nil や false を返す代わりに例外を発生するようにできます。

終了ステータスは変数 $? で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス
127 を返します。シェルを介さない場合は Ruby の子プロセスがス...

Kernel.#system(program, *args, options={}) -> bool | nil (22.0)

引数を外部コマンドとして実行して、成功した時に真を返します。

引数を外部コマンドとして実行して、成功した時に真を返します。

子プロセスが終了ステータス 0 で終了すると成功とみなし true を返します。
それ以外の終了ステータスの場合は false を返します。
コマンドを実行できなかった場合は nil を返します。

options で :exception に true を指定することで、
nil や false を返す代わりに例外を発生するようにできます。

終了ステータスは変数 $? で参照できます。

コマンドを実行することができなかった場合、多くのシェルはステータス
127 を返します。シェルを介さない場合は Ruby の子プロセスがス...

1.6.8から1.8.0への変更点(まとめ) (19.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への変更点(まとめ)/サポートプラットフォームの追加>))

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への変更点(まとめ)/変更されたクラス/メソッド(互換性のない変更)>))...

BasicObject#instance_eval {|obj| ... } -> object (19.0)

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを
評価してその結果を返します。

オブジェクトのコンテキストで評価するとは評価中の self をそのオブジェクトにして実行するということです。
また、文字列 expr やブロック中でメソッドを定義すればそのオブジェクトの特異メソッドが定義されます。

ただし、ローカル変数だけは、文字列 expr の評価では instance_eval の外側のスコープと、ブロックの評価ではそのブロックの外側のスコープと、共有します。

メソッド定義の中で instance_eval でメソッドを定義した場...

BasicObject#instance_eval(expr, filename = "(eval)", lineno = 1) -> object (19.0)

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを
評価してその結果を返します。

オブジェクトのコンテキストで評価するとは評価中の self をそのオブジェクトにして実行するということです。
また、文字列 expr やブロック中でメソッドを定義すればそのオブジェクトの特異メソッドが定義されます。

ただし、ローカル変数だけは、文字列 expr の評価では instance_eval の外側のスコープと、ブロックの評価ではそのブロックの外側のスコープと、共有します。

メソッド定義の中で instance_eval でメソッドを定義した場...

絞り込み条件を変える

Fcntl::F_DUPFD -> Integer (19.0)

ファイルディスクリプタを複製します。

ファイルディスクリプタを複製します。

ただし、 close-on-exec はオフになります。

@see dup(2)

Kernel.#`(command) -> String (19.0)

command を外部コマンドとして実行し、その標準出力を文字列として 返します。このメソッドは `command` の形式で呼ばれます。

command を外部コマンドとして実行し、その標準出力を文字列として
返します。このメソッドは `command` の形式で呼ばれます。

引数 command に対しダブルクォートで囲まれた文字列と同様の解釈と式展開を行った後、
コマンドとして実行します。
コマンドは評価されるたびに実行されます。コマンドの終了ステータスを得るには、$? を参照します。

コマンドの出力を得る必要がなく、単にコマンドを実行したいだけなら
Kernel.#system を使います。特に端末を制御するコマンドでは
`command` は失敗するかもしれません。

d:spec/literal#command ...

NEWS for Ruby 2.6.0 (19.0)

NEWS for Ruby 2.6.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

...りました。
誤解を招く名称だったため。 14688

* NKF
* nkf v2.1.5 に更新されました。

* Psych
* Psych 3.1.0 に更新されました。

* RDoc
* 約2倍高速化されました。
* ファイル生成に SOURCE_DATE_EPOCH を使うようにな...
...* シンタックスエラー出力を修正しました。
* 多数のパース中のバグを修正しました。

* REXML
* REXML 3.1.9 に更新されました。
https://github.com/ruby/rexml/blob/master/NEWS.md を参照してください。
* いくつかの XPath...

NEWS for Ruby 3.1.0 (19.0)

NEWS for Ruby 3.1.0 このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

...NEWS for Ruby 3.1.0
このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

それぞれのエントリーは参照情報があるため短いです。
十分な情報と共に書かれた全ての変更のリス...
...{
foo[0] = bar
//}

* 次の評価順序になります。

//emlist{
1. `foo`
2. `bar`
3. `[]=` called on the result of `foo`
//}

* Ruby 3.1.0より前は、多重代入の評価順序が上記のようではありませんでした。このコードでは、

//emlist[][ruby]{
foo[0], b...
...//emlist{
1. `a`
2. `b`
3. `foo`
4. `[]=` called on the result of `foo`
5. `bar`
6. `baz=` called on the result of `bar`
//}

* Ruby 3.1.0から単一代入と評価順序が一致するようになり、左が右より先に評価されます。

//emlist{
1. `foo`
2. `bar`
3....

String#[]=(regexp, nth, val) (19.0)

正規表現 regexp の nth 番目の括弧にマッチする 最初の部分文字列を文字列 val で置き換えます。

正規表現 regexp の nth 番目の括弧にマッチする
最初の部分文字列を文字列 val で置き換えます。

nth が 0 の場合は、マッチした部分文字列全体を val で置き換えます。

@param regexp 置き換えたい部分文字列のパターンを示す正規表現
@param nth 置き換えたい部分文字列のパターンを示す正規表現レジスタの番号
@param val 指定範囲の部分文字列と置き換えたい文字列

@return val を返します。

@raise IndexError 正規表現がマッチしなかった場合に発生します。

//emlist[例]...

絞り込み条件を変える

ruby 1.8.4 feature (19.0)

ruby 1.8.4 feature ruby 1.8.4 での ruby 1.8.3 からの変更点です。

ruby 1.8.4 feature
ruby 1.8.4 での ruby 1.8.3 からの変更点です。

掲載方針

*バグ修正の影響も含めて動作が変わるものを収録する。
*単にバグを直しただけのものは収録しない。
*ライブラリへの単なる定数の追加は収録しない。

以下は各変更点に付けるべきタグです。

記号について(特に重要なものは大文字(主観))

# * カテゴリ
# * [ruby]: ruby インタプリタの変更
# * [api]: 拡張ライブラリ API
# * [lib]: ライブラリ
* レベル
* [bug]: バグ修正
* [new]: 追加され...

セキュリティモデル (19.0)

セキュリティモデル RubyにはCGI等のプログラミングを安全に行うことを助ける為に、セキュリティ 機構が備わっています。

セキュリティモデル
RubyにはCGI等のプログラミングを安全に行うことを助ける為に、セキュリティ
機構が備わっています。

Rubyのセキュリティモデルは「オブジェクトの汚染」と「セーフレベル」という
仕組みによってなりたっています。

=== オブジェクトの汚染

Rubyではオブジェクトは「汚染されている」とみなされることがあります。この
しくみは大きく分けて二つの使われ方をします。

ひとつ目は、信用できない入力をもとに作られたオブジェクトを「汚染されてい
る」とみなし、「危険な操作」の引数として使えないようにすることです。悪意
あるデータによって、プログラムが意図しない動作をする事...

多言語化 (19.0)

多言語化 Ruby は US-ASCII はもちろん、US-ASCII 以外の文字エンコーディングもサポートしています。 文字列の内部表現のエンコーディングは固定されておらず、 プログラマは目的に応じて使用するエンコーディングを選ぶことができます。

多言語化
Ruby は US-ASCII はもちろん、US-ASCII 以外の文字エンコーディングもサポートしています。
文字列の内部表現のエンコーディングは固定されておらず、
プログラマは目的に応じて使用するエンコーディングを選ぶことができます。

同じプロセスの中で異なるエンコーディングの文字列が同時に存在することができます。
全ての String や Regexp などのオブジェクトは自身のエンコーディング情報を保持しています。
これにより各オブジェクト内の文字を適切に取り扱うことができます。

後述のマジックコメントでスクリプトエンコーディングを指定すると、
Ruby スクリプトに非...

String#[]=(nth, len, val) (4.0)

nth 番目の文字から len 文字の部分文字列を文字列 val で置き換えます。

nth 番目の文字から len 文字の部分文字列を文字列 val で置き換えます。

len が0 の場合は、単にnthの位置から文字列の追加が行われます。
nth が負の場合は文字列の末尾から数えます。

@param nth 置き換えたい部分文字列の開始インデックス
@param len 置き換えたい部分文字列の長さ
@param val 指定範囲の部分文字列と置き換える文字列

@return val を返します。

//emlist[例][ruby]{
buf = "string"
buf[1, 4] = "!!"
p buf # => "s!!g"

buf ...

String#[]=(nth, val) (4.0)

nth 番目の文字を文字列 val で置き換えます。

nth 番目の文字を文字列 val で置き換えます。

@param nth 置き換えたい文字の位置を指定します。
@param val 置き換える文字列を指定します。

@return val を返します。

//emlist[例][ruby]{
buf = "string"
buf[1] = "!!"
p buf # => "s!!ring"
//}

絞り込み条件を変える

String#[]=(range, val) (4.0)

rangeで指定したインデックスの範囲に含まれる部分文字列を文字列 val で置き換えます。

rangeで指定したインデックスの範囲に含まれる部分文字列を文字列 val で置き換えます。

@param range 置き換えたい範囲を示す Range オブジェクト

@return val を返します。

String#[]=(regexp, name, val) (4.0)

正規表現 regexp の name で指定した名前付きキャプチャにマッチする最初の 部分文字列を文字列 val で置き換えます。

正規表現 regexp の name で指定した名前付きキャプチャにマッチする最初の
部分文字列を文字列 val で置き換えます。

@param regexp 置き換えたい部分文字列のパターンを示す正規表現
@param name 置き換えたい部分文字列のパターンを示す正規表現レジスタを示す名前
@param val 指定範囲の部分文字列と置き換えたい文字列

@return val を返します。

@raise IndexError name で指定した名前付きキャプチャが存在しない場合に発
生します。

//emlist[...

String#[]=(regexp, val) (4.0)

正規表現 regexp にマッチした部分文字列全体を val で置き換えます。

正規表現 regexp にマッチした部分文字列全体を val で置き換えます。

@param regexp 置き換えたい部分文字列のパターンを示す正規表現
@param val 置き換えたい文字列

@return val を返します。

@raise IndexError 正規表現がマッチしなかった場合に発生します。

//emlist[例][ruby]{
buf = "string"
buf[/tr../] = "!!"
p buf # => "s!!g"
//}

String#[]=(substr, val) (4.0)

文字列中の substr に一致する最初の部分文字列を文字列 val で置き換えます。

文字列中の substr に一致する最初の部分文字列を文字列 val で置き換えます。

@param substr 置き換えたい部分文字列のパターンを示す文字列
@param val 指定範囲の部分文字列と置き換える文字列

@return val を返します。

@raise IndexError self が部分文字列 substr を含まない場合に発生します。

//emlist[例][ruby]{
buf = "string"
buf["trin"] = "!!"
p buf # => "s!!g"

buf = "string"
buf["nosuch...