文字列を使用して実行可能なコード行の一部にすることはできますか?

サッチェル

私は文字列を持っています:

parsed[tag] => "first_name: 'Richard'"

次のようなコードを実行する必要があります。

client.put_if_absent("profiles", bot_client_name, {first_name: 'Richard'})

その最初の文字列を使用して、同等のテキストのコードとして機能することは可能ですか?使っeval(parsed[tag])てみましたが失敗でした。

私は次のように変更しました:

response = "client.put_if_absent('profiles', bot_client_name, {#{parsed[tag]}})"

eval(response)

これは実際に機能します---潜在的なリスクを減らすために何ができますか?

Jazzepi

ユーザー入力の解析にevalを使用しないでください。それは非常に危険であり、安全になることは決してありません。ここでのあなたの本当の目標は、この文字列"first_name: 'Richard'"を取得し、それからこのオブジェクトを作成することであるように見えます{first_name: 'Richard'}そのタスクを実行するために評価は必要ありません。

If you're trying to take user input, and turn it into an object hash, checkout this question. How do I convert a String object into a Hash object? I recommend looking at jackquack's answer in that post to give you an idea about how you can use the methods in Ruby's powerful String library (http://www.ruby-doc.org/core-2.1.4/String.html) to parse your input.

If your user input is in a standard format like JSON, YAML, XML, etc. then you can use a library that will do all this hard work for you. If your user input is in a custom format, such as seems to be your case, then you need to roll that parsing on your own.

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

文字列を使用して実行可能なコード行の一部にすることはできますか?

分類Dev

コードの一部をデバッグ中にのみ実行させることは可能ですか?

分類Dev

実行コマンド(つまりF5)の一部としてバッチファイルを実行することは可能ですか?

分類Dev

どのように私はマップとの一致を使用してコードの私の一部を行うことができますか?

分類Dev

Windowsコマンドライン:パスの一部として変数を使用してコマンドを実行することはできません

分類Dev

コードの一部でvalgrindを実行することは可能ですか?

分類Dev

bash配列の一部がコマンドとして実行されるのはなぜですか?

分類Dev

コマンド(つまりgrep)は、glob拡張の一部として実行されたことをどのように知るのですか?

分類Dev

CSS-Gridの `gap`プロパティを使用して、一部の列または行の間にギャップがあり、他の列の間にギャップがないことを選択することは可能ですか?

分類Dev

Android Studioが一部のGitコマンドを実行できるのに、UIがマージを実行しようとしてNPEをスローするのはなぜですか?

分類Dev

文字列として挿入されたコードの一部のみを実行します

分類Dev

Swiftで実行時に文字列からコードを実行することは可能ですか?

分類Dev

データの一部を迅速にデコード可能な文字列に抽出できますか?

分類Dev

Gitフックを使用してコミットの一部をファイルのソースコードに追加することは可能ですか?

分類Dev

必要なときにコードの一部を実行するにはどうすればよいですか?

分類Dev

一部のターミナルコマンドをファイルとして保存して実行するにはどうすればよいですか?

分類Dev

FieldByFieldElementComparatorを使用して、assertJから一部のフィールドを除外することは可能ですか?

分類Dev

コードのごく一部だけが実際に「安全でない」ことを実行している「安全でない」関数のベストプラクティスは何ですか?

分類Dev

jQueryがない場合、javascriptは複数のajax呼び出しが完了したことをどのように確認し、完了したらコードの一部を実行できますか?

分類Dev

コンテンツ編集可能divのテキストの一部に対してすでに行われているテキスト形式を失うことなく文字列を置き換える方法

分類Dev

複数のString.SplitIntersectionを実行してリストに保存できる文字列として使用することは可能ですか?

分類Dev

最終的に実行されないc ++テンプレート関数の一部でエラーを回避することは可能ですか?

分類Dev

このコードを実行すると、実際には文字列が置き換えられません...なぜですか?また、これを実用的にするのでしょうか?

分類Dev

どのように私は、Javaコード内で、私のchromedriverを使用してJSのコマンドを実行することができますか?

分類Dev

URLの一部に* this *が含まれている場合はPHPコード* this *を実行します

分類Dev

「sed」コマンドを使用して特定の列または行の一部に移動する方法は?

分類Dev

ビューから複数のレコードに対して単一のレコードレポートを実行することは可能ですか?

分類Dev

すべてのテストが終了した後にコードを実行することは可能ですか?

分類Dev

sshで実行したときに一部のコマンドがユーザー環境をロードしないのはなぜですか?(他の人はそうしますが)

Related 関連記事

  1. 1

    文字列を使用して実行可能なコード行の一部にすることはできますか?

  2. 2

    コードの一部をデバッグ中にのみ実行させることは可能ですか?

  3. 3

    実行コマンド(つまりF5)の一部としてバッチファイルを実行することは可能ですか?

  4. 4

    どのように私はマップとの一致を使用してコードの私の一部を行うことができますか?

  5. 5

    Windowsコマンドライン:パスの一部として変数を使用してコマンドを実行することはできません

  6. 6

    コードの一部でvalgrindを実行することは可能ですか?

  7. 7

    bash配列の一部がコマンドとして実行されるのはなぜですか?

  8. 8

    コマンド(つまりgrep)は、glob拡張の一部として実行されたことをどのように知るのですか?

  9. 9

    CSS-Gridの `gap`プロパティを使用して、一部の列または行の間にギャップがあり、他の列の間にギャップがないことを選択することは可能ですか?

  10. 10

    Android Studioが一部のGitコマンドを実行できるのに、UIがマージを実行しようとしてNPEをスローするのはなぜですか?

  11. 11

    文字列として挿入されたコードの一部のみを実行します

  12. 12

    Swiftで実行時に文字列からコードを実行することは可能ですか?

  13. 13

    データの一部を迅速にデコード可能な文字列に抽出できますか?

  14. 14

    Gitフックを使用してコミットの一部をファイルのソースコードに追加することは可能ですか?

  15. 15

    必要なときにコードの一部を実行するにはどうすればよいですか?

  16. 16

    一部のターミナルコマンドをファイルとして保存して実行するにはどうすればよいですか?

  17. 17

    FieldByFieldElementComparatorを使用して、assertJから一部のフィールドを除外することは可能ですか?

  18. 18

    コードのごく一部だけが実際に「安全でない」ことを実行している「安全でない」関数のベストプラクティスは何ですか?

  19. 19

    jQueryがない場合、javascriptは複数のajax呼び出しが完了したことをどのように確認し、完了したらコードの一部を実行できますか?

  20. 20

    コンテンツ編集可能divのテキストの一部に対してすでに行われているテキスト形式を失うことなく文字列を置き換える方法

  21. 21

    複数のString.SplitIntersectionを実行してリストに保存できる文字列として使用することは可能ですか?

  22. 22

    最終的に実行されないc ++テンプレート関数の一部でエラーを回避することは可能ですか?

  23. 23

    このコードを実行すると、実際には文字列が置き換えられません...なぜですか?また、これを実用的にするのでしょうか?

  24. 24

    どのように私は、Javaコード内で、私のchromedriverを使用してJSのコマンドを実行することができますか?

  25. 25

    URLの一部に* this *が含まれている場合はPHPコード* this *を実行します

  26. 26

    「sed」コマンドを使用して特定の列または行の一部に移動する方法は?

  27. 27

    ビューから複数のレコードに対して単一のレコードレポートを実行することは可能ですか?

  28. 28

    すべてのテストが終了した後にコードを実行することは可能ですか?

  29. 29

    sshで実行したときに一部のコマンドがユーザー環境をロードしないのはなぜですか?(他の人はそうしますが)

ホットタグ

アーカイブ