我可以使用Twitter gem来缓存结果吗? (导轨4)

时间:2014-01-26 13:47:22

标签: ruby-on-rails ruby caching twitter ruby-on-rails-4

我正在使用Twitter Gem

我的模特:

class TweetyClass
  def initialize
    @client = Twitter::REST::Client.new do |config|
      config.consumer_key        = TWITTER_CONFIG['consumer_key']
      config.consumer_secret     = TWITTER_CONFIG['consumer_secret']
      config.access_token        = TWITTER_CONFIG['access_token']
      config.access_token_secret = TWITTER_CONFIG['access_token_secret']
    end
  end

  def user_timeline
    @client.user_timeline( count: 2)
  end
end

我的控制器:

def tweets
  @tweets = TweetyClass.new.user_timeline
end

我的观点:

<% @tweets.each do |tweet| %>

  <li><%= tweet.foo%></li>

<% end %>

有没有办法缓存结果,所以每次调用 user_timeline 时,它都会从app / app变量中获取结果,而不是转到Twitter并获取推文的时间轴。

如果我没有使用正确的术语,请道歉;我是缓存主题的新手。基本上我想要做的是提高我的应用程序的速度,似乎减慢它的一件事是使用user_timeline方法检索推文所花费的时间。我假设它是因为它每次都从Twitter检索这个,我认为缓存可能会有所帮助。

1 个答案:

答案 0 :(得分:3)

是的,您可以使用memcached进行操作,但必须先设置环境。

1)安装memcached

sudo apt-get install memcached (ubuntu)
brew install memcached (mac os x)

2)将dalli添加到=&gt;的Gemfile

gem 'dalli'

3)改变环境/ development.rb

config.action_controller.perform_caching = true

4)最后是your_controller.rb

@tweets = Rails.cache.fetch("your_unique_cache_key_name") do
  TweetyClass.new.user_timeline
end

您可以从this教程中了解更多信息。