1

次のコードでエラーが発生する理由を知っている人はいますか: undefined method 'tar' for "riak-1.4.2":String

remote_file "/vagrant/usr/src/#{node.default['riak']['version'].tar.gz}" do
  source "#{node.default['riak']['url']}"
  mode 0755
  notifies :run, "bash[extract_riak]", :immediately
end

bash "extract_riak" do 
  code <<-EOH
    # Following is the line which causes the error.
    /bin/tar xzf /vagrant/usr/src/#{node.default['riak']['version']}.tar.gz -C /vagrant/usr/src/#{node.default['riak']['version']}
  EOH
  notifies :run, "bash[make_riak]", :immediately
end
4

3 に答える 3

1

この行はエラーを引き起こしています:

remote_file "/vagrant/usr/src/#{node.default['riak']['version'].tar.gz}"

次の.tar.gzように、括弧の外側にある必要があります。

remote_file "/vagrant/usr/src/#{node.default['riak']['version']}.tar.gz"

括弧内はすべて ruby​​ コードとして実行され、結果は文字列に配置されます。最後に存在しnode.default['riak']['version'].tar.gzない関数の呼び出しを含む一連の関数呼び出しです。これらはファイル名の一部であり、括弧の外にある必要があります。targz

補足として、属性を取得node[:attribute]するために使用し、属性を設定するためにのみ使用することをお勧めします。node.default[:attribute]

于 2013-10-16T21:13:38.193 に答える
-1

それ以外の:

#{node.default['riak']['version']}.tar.gz

あなたがしたい:

#{node.default['riak']['version'].tar.gz}
于 2013-10-16T20:47:25.630 に答える