0
我是Ruby on Rails的新手(几天前刚开始使用它)。我正在制作一个简单的Web前端来显示各种系统信息,包括S.M.A.R.T信息。我做了这个小类:以正确的方式实现缓存
class SmartValues
attr_reader :data
KEYS = [:id, :name, :flag, :value, :worst, :thresh, :type, :updated, :failed, :raw]
def initialize(devices)
@data = Hash[devices.map {|dev| [dev, SmartValues.getValues(dev)]}]
end
def self.getValues(device)
lines = `sudo /usr/sbin/smartctl -A #{device}`.split("\n")[7..-1].collect! { |line| line.split }
return lines.map { |line| Hash[KEYS.zip line] }
end
end
它工作正常,除了它列入我的控制器是这样的:
class HomeController < ApplicationController
def index
@smart = SmartValues.new(["/dev/sda", "/dev/sdb", "/dev/sdc", "/dev/sdd", "/dev/sde", "/dev/sdf"]).data
end
end
所以它必须是在执行smartctl读取二进制多次为页面的每个请求。我想添加某种缓存,以便定期更新信息,但不是每次请求。什么是正确的RoR方法?
我开始喜欢Rails :) – madprogrammer 2012-08-17 07:29:06
@madprogrammer Ruby和Rails都是美味的工具:) – apneadiving 2012-08-17 07:29:56