【发布时间】:2016-02-08 17:02:40
【问题描述】:
现在我有一个帮手:
def blog_posts
Rails.cache.fetch("blog_posts", :expires_in => 30.minutes) do
url = URI('http://www.xxxxxxxx.com/blog/?json=get_recent_posts')
request = Net::HTTP.get(url)
response = JSON.parse(request)
response['posts'].take(4)
end
rescue => e
logger.error "Error retrieving blog posts!"
logger.error "#{e.message}\n#{e.backtrace.join("\n")}"
[]
end
而我的观点:
<% blog_posts.each do |blog| %>
<div class="col col-3">
<a class="search-page-links" href="<%= blog['url'] %>" target="_blank">
<img class="post-image" src="<%= blog['thumbnail'] %>">
<br/><br/>
<%= blog['title'].html_safe %>
</a>
</div>
<% end %>
效果很好。除了我们根本不希望在页面加载时拉取数据,因为我们不能总是依赖源。计划是在部署过程中添加一个 Rake 任务,以便可以在每次部署时在 Rails 部分中更新静态数据,并将其呈现到视图中。我该怎么做呢?
【问题讨论】:
-
我建议您将获取的数据存储在数据库中。每次要更新此视图时都更新应用程序代码库似乎很痛苦。
-
假设数据库现在不是一个选项(不是“我的”应用程序,不是我的规则那种情况)。我们每天部署,这部分实际上只会每周更改一次,因为“最近的帖子”并不频繁。所以我们不会部署更新部分。相反,当我们部署时,如果碰巧有帖子的更改/更新,我们希望部分更新
标签: ruby-on-rails ruby json rake