ライブラリ
- ビルトイン (29)
-
net
/ http (3) -
rubygems
/ dependency _ installer (1) - shell (2)
- tmpdir (1)
-
win32
/ registry (1)
クラス
- Dir (1)
- File (3)
-
Gem
:: DependencyInstaller (1) - IO (14)
-
Net
:: HTTP (3) - Shell (2)
-
Win32
:: Registry (1)
オブジェクト
- ENV (12)
検索結果
先頭5件
-
ENV
. delete _ if {|key , value| . . . } -> ENV (81682.0) -
key と value を引数としてブロックを評価した値が真であ る時、環境変数を削除します。
key と value を引数としてブロックを評価した値が真であ
る時、環境変数を削除します。
reject! は要素に変化がなければ nil を返します。
//emlist[][ruby]{
ENV['FOO'] = 'bar'
ENV.delete_if { |key, value| key == 'FOO' && value == 'bar' } # => ENV
ENV.reject! { |key, value| key == 'FOO' && value == 'bar' } # => nil
//} -
ENV
. update(other) -> ENV (81610.0) -
ハッシュ other の内容を環境変数にマージします。重複するキー に対応する値は other の内容で上書きされます。
ハッシュ other の内容を環境変数にマージします。重複するキー
に対応する値は other の内容で上書きされます。
self と other に同じキーがあった場合はブロック付きか否かで
判定方法が違います。ブロック付きのときはブロックを呼び出して
その返す値を重複キーに対応する値にします。ブロック付きでない
場合は常に other の値を使います。
@param other 上書きするハッシュを指定します。 -
ENV
. update(other) {|key , self _ val , other _ val| . . . } -> ENV (81610.0) -
ハッシュ other の内容を環境変数にマージします。重複するキー に対応する値は other の内容で上書きされます。
ハッシュ other の内容を環境変数にマージします。重複するキー
に対応する値は other の内容で上書きされます。
self と other に同じキーがあった場合はブロック付きか否かで
判定方法が違います。ブロック付きのときはブロックを呼び出して
その返す値を重複キーに対応する値にします。ブロック付きでない
場合は常に other の値を使います。
@param other 上書きするハッシュを指定します。 -
ENV
. delete(key) -> String | nil (81394.0) -
key に対応する環境変数を取り除きます。取り除かれた環境変数の 値を返しますが、key に対応する環境変数が存在しない時には nil を返します。
key に対応する環境変数を取り除きます。取り除かれた環境変数の
値を返しますが、key に対応する環境変数が存在しない時には
nil を返します。
ブロックが与えられた時には key にマッチするものがなかった時
に評価されます。
@param key 環境変数名を指定します。文字列で指定します。文字列で指定しま
す。文字列以外のオブジェクトを指定した場合は to_str メソッド
による暗黙の型変換を試みます。
//emlist[][ruby]{
ENV['TEST'] = 'foo'
ENV.delete('TEST') # => "... -
ENV
. delete(key) {|key| . . . } -> String | nil (81394.0) -
key に対応する環境変数を取り除きます。取り除かれた環境変数の 値を返しますが、key に対応する環境変数が存在しない時には nil を返します。
key に対応する環境変数を取り除きます。取り除かれた環境変数の
値を返しますが、key に対応する環境変数が存在しない時には
nil を返します。
ブロックが与えられた時には key にマッチするものがなかった時
に評価されます。
@param key 環境変数名を指定します。文字列で指定します。文字列で指定しま
す。文字列以外のオブジェクトを指定した場合は to_str メソッド
による暗黙の型変換を試みます。
//emlist[][ruby]{
ENV['TEST'] = 'foo'
ENV.delete('TEST') # => "... -
ENV
. delete _ if -> Enumerator (81382.0) -
key と value を引数としてブロックを評価した値が真であ る時、環境変数を削除します。
key と value を引数としてブロックを評価した値が真であ
る時、環境変数を削除します。
reject! は要素に変化がなければ nil を返します。
//emlist[][ruby]{
ENV['FOO'] = 'bar'
ENV.delete_if { |key, value| key == 'FOO' && value == 'bar' } # => ENV
ENV.reject! { |key, value| key == 'FOO' && value == 'bar' } # => nil
//} -
ENV
. index(val) -> String | nil (81340.0) -
val に対応するキーを返します。対応する要素が存在しない時には nil を返します。
val に対応するキーを返します。対応する要素が存在しない時には
nil を返します。
ENV.index は obsolete です。使用すると警告メッセージが表示されます。
ENV.key を使用してください。
@param val 値を指定します。文字列で指定します。文字
列以外のオブジェクトを指定した場合は to_str メソッドによる暗
黙の型変換を試みます。 -
ENV
. reject! {|key , value| . . . } -> ENV | nil (72382.0) -
key と value を引数としてブロックを評価した値が真であ る時、環境変数を削除します。
key と value を引数としてブロックを評価した値が真であ
る時、環境変数を削除します。
reject! は要素に変化がなければ nil を返します。
//emlist[][ruby]{
ENV['FOO'] = 'bar'
ENV.delete_if { |key, value| key == 'FOO' && value == 'bar' } # => ENV
ENV.reject! { |key, value| key == 'FOO' && value == 'bar' } # => nil
//} -
ENV
. include?(key) -> bool (72304.0) -
key で指定される環境変数が存在する時、真を返します。
key で指定される環境変数が存在する時、真を返します。
@param key 環境変数の名前を指定します。文字列で指定します。
文字列以外のオブジェクトを指定した場合は to_str メソッ
ドによる暗黙の型変換を試みます。 -
ENV
. reject! -> Enumerator (72082.0) -
key と value を引数としてブロックを評価した値が真であ る時、環境変数を削除します。
key と value を引数としてブロックを評価した値が真であ
る時、環境変数を削除します。
reject! は要素に変化がなければ nil を返します。
//emlist[][ruby]{
ENV['FOO'] = 'bar'
ENV.delete_if { |key, value| key == 'FOO' && value == 'bar' } # => ENV
ENV.reject! { |key, value| key == 'FOO' && value == 'bar' } # => nil
//} -
ENV
. key(val) -> String | nil (72040.0) -
val に対応するキーを返します。対応する要素が存在しない時には nil を返します。
val に対応するキーを返します。対応する要素が存在しない時には
nil を返します。
ENV.index は obsolete です。使用すると警告メッセージが表示されます。
ENV.key を使用してください。
@param val 値を指定します。文字列で指定します。文字
列以外のオブジェクトを指定した場合は to_str メソッドによる暗
黙の型変換を試みます。 -
ENV
. fetch(key , default) -> String (63304.0) -
key に関連づけられた値を返します。該当するキーが登録されてい ない時には、引数 default が与えられていればその値を、ブロッ クが与えられていればそのブロックを評価した値を返します。そのいずれ でもなければ例外が発生します。
key に関連づけられた値を返します。該当するキーが登録されてい
ない時には、引数 default が与えられていればその値を、ブロッ
クが与えられていればそのブロックを評価した値を返します。そのいずれ
でもなければ例外が発生します。
@param key 環境変数の名前を指定します。 文字列で指定します。
文字列以外のオブジェクトを指定した場合は
to_str メソッドによる暗黙の型変換を試みます。
@param default keyに対応する環境変数の値がないときにこの値を返します。
@raise ... -
Win32
:: Registry . expand _ environ(str) (36604.0) -
@todo
@todo
str の %\w+% という並びを環境変数に置換します。
REG_EXPAND_SZ で用いられます。
詳細は以下の Win32 API を参照してください。
* ExpandEnvironmentStrings: http://msdn.microsoft.com/library/en-us/sysinfo/base/expandenvironmentstrings.asp -
Dir
. tmpdir -> String (27376.0) -
テンポラリファイルを作成するのに使うディレクトリ(テンポラリディレクトリ)の絶対パスを 文字列として返します。 $SAFE によって返す文字列は変わります。
テンポラリファイルを作成するのに使うディレクトリ(テンポラリディレクトリ)の絶対パスを
文字列として返します。
$SAFE によって返す文字列は変わります。
# WindowsXPの場合
require "tmpdir"
p Dir.tmpdir #=> "C:/DOCUME~1/taro3/LOCALS~1/Temp"
$SAFE = 1
p Dir.tmpdir #=> "C:/WINDOWS/temp"
# Linuxの場合 /tmp に加え、環境変数 ENV['TMPDIR'], ENV['TMP'], ENV['TEMP'], ENV['USERPR... -
Gem
:: DependencyInstaller . new(options = {}) -> Gem :: DependencyInstaller (18622.0) -
自身を初期化します。
自身を初期化します。
オプションとして以下のものを利用できます。
: :cache_dir
*.gem ファイルを保存するディレクトリを指定します。
: :domain
:local (カレントディレクトリのみ検索します), :remote (Gem.sources を検索します),
:both (:local, :remote の両方を検索します) のいずれかを指定可能です。
: :env_shebang
Gem::Installer.new を参照してください。
: :force
バージョンチェックとセキュリティポリシーのチェックを行わずにインストールを実行します... -
File
. expand _ path(path , default _ dir = & # 39; . & # 39;) -> String (18322.0) -
path を絶対パスに展開した文字列を返します。 path が相対パスであれば default_dir を基準にします。
path を絶対パスに展開した文字列を返します。
path が相対パスであれば default_dir を基準にします。
先頭の ~ はホームディレクトリ(環境変数 HOME が使われます)に、
~USER はそのユーザのホームディレクトリに展開されます。
//emlist[例][ruby]{
p Dir.getwd #=> "/home/matz/work/foo"
p ENV["HOME"] #=> "/home/matz"
p File.expand_path("..") #=> "/h... -
Shell
. default _ system _ path -> Array (18322.0) -
Shellでもちいられるコマンドを検索する対象のパスを設定および、参照します。
Shellでもちいられるコマンドを検索する対象のパスを設定および、参照します。
@param path Shellでもちいられるコマンドを検索する対象のパスを文字列で指定します。
動作例
require 'shell'
p Shell.default_system_path
# 例
#=> [ "/opt/local/bin", "/opt/local/sbin", "/usr/bin", "/bin", "/usr/sbin", "/sbin", "/usr/local/bin", "/usr/X11/bin", "/Users/kouya/bin"]
Shell... -
Shell
. default _ system _ path=(path) (18322.0) -
Shellでもちいられるコマンドを検索する対象のパスを設定および、参照します。
Shellでもちいられるコマンドを検索する対象のパスを設定および、参照します。
@param path Shellでもちいられるコマンドを検索する対象のパスを文字列で指定します。
動作例
require 'shell'
p Shell.default_system_path
# 例
#=> [ "/opt/local/bin", "/opt/local/sbin", "/usr/bin", "/bin", "/usr/sbin", "/sbin", "/usr/local/bin", "/usr/X11/bin", "/Users/kouya/bin"]
Shell... -
Net
:: HTTP . start(address , port = 80 , proxy _ addr = :ENV , proxy _ port = nil , proxy _ user=nil , proxy _ pass=nil) -> Net :: HTTP (946.0) -
新しい Net::HTTP オブジェクトを生成し、 TCP コネクション、 HTTP セッションを開始します。
新しい Net::HTTP オブジェクトを生成し、
TCP コネクション、 HTTP セッションを開始します。
ブロックを与えた場合には生成したオブジェクトをそのブロックに
渡し、ブロックが終わったときに接続を閉じます。このときは
ブロックの値を返り値とします。
ブロックを与えなかった場合には生成したオブジェクトを渡します。
利用後にはこのオブジェクトを Net::HTTP#finish してください。
proxy_addr に :ENV を指定すると環境変数 http_proxy からプロクシの URI を
取り出し利用します。環境変数 http_proxy が定義されていない場合に... -
Net
:: HTTP . start(address , port = 80 , proxy _ addr = :ENV , proxy _ port = nil , proxy _ user=nil , proxy _ pass=nil) {|http| . . . . } -> object (946.0) -
新しい Net::HTTP オブジェクトを生成し、 TCP コネクション、 HTTP セッションを開始します。
新しい Net::HTTP オブジェクトを生成し、
TCP コネクション、 HTTP セッションを開始します。
ブロックを与えた場合には生成したオブジェクトをそのブロックに
渡し、ブロックが終わったときに接続を閉じます。このときは
ブロックの値を返り値とします。
ブロックを与えなかった場合には生成したオブジェクトを渡します。
利用後にはこのオブジェクトを Net::HTTP#finish してください。
proxy_addr に :ENV を指定すると環境変数 http_proxy からプロクシの URI を
取り出し利用します。環境変数 http_proxy が定義されていない場合に... -
Net
:: HTTP . new(address , port = 80 , proxy _ addr = :ENV , proxy _ port = nil , proxy _ user=nil , proxy _ pass=nil , no _ proxy=nil) -> Net :: HTTP (943.0) -
新しい Net::HTTP オブジェクトを生成します。
新しい Net::HTTP オブジェクトを生成します。
proxy_addr に :ENV を指定すると自動的に環境変数 http_proxy からプロクシの URI を
取り出し利用します。この場合環境変数 http_proxy が定義されていない場合には
プロクシは利用せず直接接続します。
詳しくは URI::Generic#find_proxy を参照してください。
明示的にプロクシのホスト名とポート番号を指定してプロクシを利用することもできます。
このときには proxy_addr にホスト名もしくは IP アドレスを渡します。
このときに proxy_userを指定するとプロク... -
IO
. popen([env = {} , [cmdname , arg0] , *args , execopt={}] , mode = "r" , opt={}) -> IO (661.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 (661.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 (661.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 (661.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 (661.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 (661.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 (661.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 (661.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 = {} , command , mode = "r" , opt={}) -> IO (661.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 = {} , command , mode = "r" , opt={}) {|f| . . . } -> object (661.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 , "-" , mode = "r" , opt={}) -> IO (661.0) -
第一引数に文字列 "-" が指定された時、fork(2) を 行い子プロセスの標準入出力との間にパイプラインを確立します。 親プロセスでは IO オブジェクトを返し、子プロセスでは nil を返します。
第一引数に文字列 "-" が指定された時、fork(2) を
行い子プロセスの標準入出力との間にパイプラインを確立します。
親プロセスでは IO オブジェクトを返し、子プロセスでは
nil を返します。
io = IO.popen("-", "r+")
if io # parent
io.puts "foo"
p io.gets # => "child output: foo\n"
io.close
else # child
s = gets
print "child output: " + s
... -
IO
. popen(env , "-" , mode = "r" , opt={}) {|io| . . . } -> object (661.0) -
第一引数に文字列 "-" が指定された時、fork(2) を 行い子プロセスの標準入出力との間にパイプラインを確立します。 親プロセスでは IO オブジェクトを返し、子プロセスでは nil を返します。
第一引数に文字列 "-" が指定された時、fork(2) を
行い子プロセスの標準入出力との間にパイプラインを確立します。
親プロセスでは IO オブジェクトを返し、子プロセスでは
nil を返します。
io = IO.popen("-", "r+")
if io # parent
io.puts "foo"
p io.gets # => "child output: foo\n"
io.close
else # child
s = gets
print "child output: " + s
... -
IO
. popen("-" , mode = "r" , opt={}) -> IO (361.0) -
第一引数に文字列 "-" が指定された時、fork(2) を 行い子プロセスの標準入出力との間にパイプラインを確立します。 親プロセスでは IO オブジェクトを返し、子プロセスでは nil を返します。
第一引数に文字列 "-" が指定された時、fork(2) を
行い子プロセスの標準入出力との間にパイプラインを確立します。
親プロセスでは IO オブジェクトを返し、子プロセスでは
nil を返します。
io = IO.popen("-", "r+")
if io # parent
io.puts "foo"
p io.gets # => "child output: foo\n"
io.close
else # child
s = gets
print "child output: " + s
... -
IO
. popen("-" , mode = "r" , opt={}) {|io| . . . } -> object (361.0) -
第一引数に文字列 "-" が指定された時、fork(2) を 行い子プロセスの標準入出力との間にパイプラインを確立します。 親プロセスでは IO オブジェクトを返し、子プロセスでは nil を返します。
第一引数に文字列 "-" が指定された時、fork(2) を
行い子プロセスの標準入出力との間にパイプラインを確立します。
親プロセスでは IO オブジェクトを返し、子プロセスでは
nil を返します。
io = IO.popen("-", "r+")
if io # parent
io.puts "foo"
p io.gets # => "child output: foo\n"
io.close
else # child
s = gets
print "child output: " + s
... -
File
. absolute _ path(file _ name , dir _ string=nil) -> String (322.0) -
file_name を絶対パスに変換した文字列を返します。
file_name を絶対パスに変換した文字列を返します。
相対パスの場合はカレントディレクトリを基準とします。
dir_string を渡した場合はそのディレクトリを基準とします。
File.expand_path と異なり、 file_name 先頭が "~" である場合
それは展開されません。普通のディレクトリ名として処理されます。
//emlist[例][ruby]{
p Dir.getwd #=> "/home/matz/work/bar"
p ENV["HOME"] #=> "/home/mat... -
File
. realpath(pathname , basedir = nil) -> String (322.0) -
与えられた pathname に対応する絶対パスを返します。
与えられた pathname に対応する絶対パスを返します。
pathname の全てのコンポーネントは存在しなければなりません。
@param pathname ファイル名を指定します。
@param basedir ベースディレクトリを指定します。省略するとカレントディレクトリを使用します。
@raise Errno::ENOENT ファイルが存在しない場合に発生します。
//emlist[例][ruby]{
ENV["HOME"] # => "/home/matz"
File.symlink("testfile", "testlink"...