我可以在运行时加载Ruby类吗?

时间:2018-03-19 17:39:12

标签: ruby-on-rails ruby database class runtime

我有一个非常高级的问题: 如果我从ruby文件中读取一个完整的类定义(或从DB加载)。我可以实例化该类并执行方法。

例如: 像这样存储在DB字符串中的类数据。

"class Test\n\tdef hello\n\t\tputs \"Hello World\"\n\tend\n\n\tdef check (val)\n\t\tif val == \"new\"\n\t\t\tputs \"Value was 'new' \"\n\t\telse\n\t\t\tputs \"Value was not new\"\n\tend\n\nend"

1 个答案:

答案 0 :(得分:1)

您要问的是Lisp或JavaScript中的eval方法。你很幸运,Ruby has an eval method

要执行一些基本代码,只需将其全部存储在一个字符串中,然后调用

eval(myCodeString)

在各种情况下,有更多方法可以使用eval。有关详细信息,请参阅我链接的文章。

请注意,执行任意字符串作为代码是有风险的,因为恶意用户可以将自己的Ruby代码注入到应用程序中,即跨站点脚本(XSS)或SQL注入。