我有一个非常高级的问题: 如果我从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"
答案 0 :(得分:1)
您要问的是Lisp或JavaScript中的eval
方法。你很幸运,Ruby has an eval method。
要执行一些基本代码,只需将其全部存储在一个字符串中,然后调用
eval(myCodeString)
在各种情况下,有更多方法可以使用eval
。有关详细信息,请参阅我链接的文章。
请注意,执行任意字符串作为代码是有风险的,因为恶意用户可以将自己的Ruby代码注入到应用程序中,即跨站点脚本(XSS)或SQL注入。