ruby字符串eval

2013年10月17日 17:21

在任务分发系统中,任务的内容使固定的,但是ID是根据时间动态生成的,一开始任务是在发送之前拼装的。后面任务的种类增加了,有的任务ID需要出现2次,发送前拼装就显得捉襟见肘了。ruby的string eval正好可以解决这个问题。先生成pattern,在执行的时候,用相应的需要替换的内容填充。用模式匹配,然后替换也可以,但是这样对于任务种类增加的时候,需要随之进行修改。

direct_content = 'Test ID=#{test_id}\n' + 
                 'url=script://#{test_id}.pts\n' + 
                 ...


test_id = rand(1000)_Time.new.strftime("%Y-%m-%d-%H")

puts eval( '"' + direct_content  + '"')

直接使用eval存在安全隐患,但是我的应用中不会存在,因为这些字符串是我自己的程序构建的。