大量のコードが残っています。私は文脈の中で明白な何かを逃したかもしれないと心配しています。Rubyの文字列補間は、1.9.3では構文エラーをスローしますが、2.3.1ではありません
def remove_runbook_items(runbook_id, runbook_item_id)
item_id = runbook_item_id.to_s
method = 'POST'
url = @the_endpoint
data = {
invokeDetail: {
process: 'remove_runbook_items',
parameters: {
runbook_id: runbook_id,
runbook_items: {
"#{item_id}": {
cores: options[:cores],
ram: options[:ram],
rank: options[:rank],
wait_time: options[:wait_time]
}
}
}
}
}
data.merge! @common_data
result = send_request(method, url, data.to_json)
result['resultDetail'] # Returns contents of response from REST API server
end
問題のラインは言うものである「#{ITEM_ID}」:{
「データ」JSONに変換されると呼ばれるテキストのブロック、私は補間しなければなりません文字列 "item_id"でなければ、結果的にitem_idの内容ではなく、 "item_id"を文字通り吐き出します。実際には、補間なしでコンテンツを取得する方法があれば、それを知りたいです。
このようにして文字列を補間すると、Ruby 2.3.1ではうまく動作します。しかし、私はRubyの1.9.3を使用しているマシン上で同じコードを実行しようとすると、私は構文エラーの連祷はどこにでも、私はこのような文字列を補間している取得:
/home/mydir/mydir/mydir/mydir/mydir/restapi_helper.rb:1122: syntax error, unexpected ':', expecting tASSOC "#{device_id}": { ^ /home/mydir/mydir/mydir/mydir/mydir/restapi_helper.rb:1128: syntax error, unexpected '}', expecting keyword_end /home/mydir/mydir/mydir/mydir/mydir/restapi_helper.rb:1163: syntax error, unexpected ':', expecting tASSOC "#{item_id}": { ^ /home/mydir/mydir/mydir/mydir/mydir/restapi_helper.rb:1169: syntax error, unexpected '}', expecting keyword_end /home/mydir/mydir/mydir/mydir/mydir/restapi_helper.rb:1257: syntax error, unexpected ':', expecting tASSOC "#{item_id}": { ^ /home/mydir/mydir/mydir/mydir/mydir/restapi_helper.rb:1263: syntax error, unexpected '}', expecting keyword_end (SyntaxError)
を誰もが何かアドバイスはありますか?テストマシンでRubyのバージョンをアップグレードすることは、残念なことにオプションではありません。
'{:"シンボル ":値}"は1.9でも動作するはずです(文字列内の先頭のコロンに注意してください)。 – mudasobwa
@mudasobwa '{:" symbol "=> value} '? –
@Jordan Oh、はい、本当に '{:" symbol "=> value}'、物事を混乱させて申し訳ありません。 – mudasobwa