厨师模板变量&#34;未定义的方法`bytesize&#39;对于#<hash“

时间:2017-11-06 12:56:05

标签: ruby chef httprequest

=”“

我尝试使用以下代码将对HTTP的响应保存到模板变量中:< p>

    template '/etc/new.conf' do
    owner "root"
    group "root"
    mode "0644"
    source "TestTemp.txt.erb"
    variables(

    my_id: Chef::HTTP.new('https://myIP/').post('/api/sessions/', {'user-
    principal' => '{"userName":"myusername","password":"mypass"}', 'Accept' 
    =>'application/*+xml;version=5.6', 'Content-type' => 'application/json' 
    })  )
    end

我在配方文件中遇到语法错误:

undefined method `bytesize' for #<Hash:0000>` on chef-client convergence on my node.

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

问题在于:

之间的换行符
'Accept'

=>'application/*+xml;version=5.6'

您不能在哈希键和=>之间设置换行符。

答案 1 :(得分:0)

看起来你希望哈希是请求头,这个sqoop import -D mapreduce.map.memory.mb=2048 \ --connect "jdbc:sqlserver://some.server\SQL2012;database=SomeDB;username=someUser;passwor =somePass" \ --e "SELECT SOMETHING" where \$CONDITIONS"\ --fields-terminated-by \\002 \ --escaped-by \\ \ --check-column Message_Audit_Log_Id \ --incremental append \ --last-value 1 \ --split-by Message_Audit_Log_Id \ --target-dir /target/path/ 中间位是POST主体。另外值得注意的是,如果您期待JSON回来,您可能希望使用.post('/api/sessions/', '', {...}),因为它会为您处理解码。