0

私のrubyスクリプトの最初に、ワードプレスを配列にインストールするために実行する必要のある手順を宣言します

$wordpress_cmds = [ "mkdir -p #{$web_root}#{$web_directory}#{$web_url}/public_html",
                    "cp -R #{$wordpress_current}/*  #{$web_root}#{$web_directory}#{$web_url}/public_html",
                    "chown -R www-data:www-data #{$web_root}#{$web_directory}#{$web_url}",
                 ]

一部の変数は後で更新されます。arryaにアクセスするときに配列にあるすべての変数の最新の値を取得する方法はありますか?

私のコードが次のようなものである場合、必要なものではなく、常に配列の初期値を取得するとします(内部に更新された変数があります)

$web_root = '====='
$wordpress_cmds = ["#{$web_root}"]

puts $wordpress_cmds[0]
$web_root= "new value"
puts $wordpress_cmds[0] 
$web_root.replace("new value")
puts $wordpress_cmds[0]
4

1 に答える 1

2

いいえ、文字列補間は1回限りの操作です。値を代入して文字列を変更します。それだけです。ただし、わずかに変更されたコードを使用すると、次のように実行できます。

$web_root = '====='
$wordpress_cmds = [lambda{"mkdir -p #{$web_root}#{$web_directory}#{$web_url}/public_html"}]

puts $wordpress_cmds[0].call
$web_root= "new value"
puts $wordpress_cmds[0].call 
$web_root.replace("new value")
puts $wordpress_cmds[0].call

出力:

=====
new value
new value

ここでは、文字列の代わりに関数を配列に配置します。その関数は、変数の実際の値を返します。したがって、実際に呼び出す$wordpress_cmds[0].callのではなく、実行する必要があります。$wordpress_cmds[0]

于 2011-12-31T03:59:24.567 に答える