-1

Rubyコードに次のステートメントがあります

curlsyntax = "URL = "

restcall = 'http://myurl.com/File?schema=1.5&token=' + auth_token + '&product=http://myurl.com/Product/8283&form=json&productname=http://myurl.com/name/' + productname + '&priority=now'

call = curl + restcall

それが私に与えているのは、最終アウトの最初の引用、つまり「URL = http ...ですが、実際には最初の引用を表示したくないのですが、URL = "httpである必要があります。

4

3 に答える 3

3

URLの前に表示されている引用符は、rubyが文字列を表す方法であり、実際には文字列の一部ではありません。前後に二重引用符を追加するにはrestcall、次のようにします。

call = "#{curlsyntax}\"#{restcall}\""
于 2012-12-06T16:52:59.697 に答える
1

このようなクエリを手動で作成するのは安全ではありません。私は次のようなものを使用することを選択します: https://github.com/sporkmonger/addressable

于 2012-12-06T16:55:55.510 に答える
1

これを行う:

call = %{URL = "#{restcall}"}

しかし、安全なシステム コールのために、おそらくhttp://ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.htmlのようなものを使用する必要があります。例:

require 'open3'
require 'shellwords'

command = Shellwords.shelljoin(['curl', 'arg1', 'arg2', 'arg3'])
stdin, stdout, stderr = Open3.popen3({'ENV1' => 'value1', 'ENV2' => 'value2'}, command)

result = stdout.read

そうすれば、コマンド ラインに渡された引数を安全にエスケープし、環境変数を呼び出しに渡すことさえできます。

于 2012-12-06T16:53:40.447 に答える