我可以使用:
在Ruby中执行shell命令needed_objects = YourModel.objects.filter(jsonfield__contains={"status": value2}).exclude(jsonfield__contains={"status": value1})
我还可以使用以下方法评估Ruby中的Ruby脚本:
def run(code)
%x[ #{code} ]
end
有没有办法盲目执行/评估def run(code)
eval(code)
end
作为shell脚本,无论语言是什么?我想在code
的开头加入#!/bin/bash
或#!/usr/bin/env ruby
,但不确定如何形成字符串并调用它。
答案 0 :(得分:1)
但不确定如何形成字符串并调用它。
您正在使用#!/bin/bash
和#!/usr/bin/env ruby
指向用于解释代码的二进制文件,但我不确定您是否可以将代码作为字符串传递 - 您可能需要先将代码保存到临时文件中,然后运行它:
require 'tempfile'
code = "#!/bin/bash\necho 'hello world'"
interpreter = code.match(/#!(.*)/)[1]
file = Tempfile.new('foo')
file.write(code)
file.close
%x(#{interpreter} #{file.path}) # prints "hello world"
当然你也可以创建临时文件,将其标记为可执行文件(chmod),然后直接运行它。然后你的最后一步不需要指定的解释器:
%x(#{file.path}) # prints "hello world"
答案 1 :(得分:1)
添加shell命令ruby -e
。
%x["ruby -e " + code]