我想动态计算内存以设置sysctl值。我的db.erb
模板包含:
hugepage = <%= system "grep Hugepagesize /proc/meminfo|awk '{print $2}'" %>
但它只是在最终输出中打印true
。如果我在irb
shell中运行以下命令,它将起作用:
[root@localhost templates]# irb
irb(main):001:0> system "grep Hugepagesize /proc/meminfo|awk '{print $2}'"
2048
=> true
答案 0 :(得分:1)
你误解了Kernel#system的作用。文档非常清楚它返回的内容:
如果命令给出零退出状态,则系统返回true,对于非零退出状态,系统返回false。如果命令执行失败,则返回nil。
如果要将命令的输出而不是系统方法的返回值插入模板,则需要使用反引号或%x。例如:
hugepage = <%= `grep Hugepagesize /proc/meminfo | awk '{print $2}'` %>