数组中的元素会失去价值

时间:2014-02-22 22:07:01

标签: ruby concurrency sinatra

我有一个奇怪的问题。来自我的数组中元素的值消失了。

Sinatra部分看起来像这样:

config do
  $api = MyWrappr.new
end

get "/"
 erb :view, :locals => {:elements => $api.allElements }
end

所有allElements首先检查是否已有数组,然后检查数组是否需要刷新。

def allElements
  @elements ||= getElements
  if Time.now-@time > 60
    @elements = getElements
    @time = Time.now
  end
  @elements
end

@elements是一个包含元素的数组,看起来像这样

class Element
  attr_accessor :property_1 :property_2
end

现在当我启动使用thin作为服务器的应用程序时,我足够快地刷新网站:property_2刚刚消失并变为零。为什么会这样,我该如何解决?

哦,如果我在这里描述我的问题是完整的project

1 个答案:

答案 0 :(得分:0)

嗯,只是短篇小说我有点傻。

我在我的视图中操纵了这个对象:

<div class="title">
    <b><%= "#{element.property_1.slice!(0, 24)}" %><%= "..." if (element.property_1.length > 24) %></b>
</div>

之后,很清楚为什么property_1是空的。