Rails - 将命令行脚本添加到我的应用程序

时间:2014-03-05 03:55:56

标签: ruby-on-rails api twitter

我不喜欢问诺比的问题,但我花了更多的时间来接受谷歌搜索并试图找出这个简单的过程。我正在尝试使用twitter gem在我的应用程序视图中发布推文。

我有这个脚本,当我在命令行上运行它时,但我不知道如何访问我的视图上的数据。我安装了宝石。我尝试将此代码添加到我的控制器中,但它仍然不允许我在视图中调用它。

require 'rubygems'
require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "(redacted)"
  config.consumer_secret     = "(redacted)"
  config.access_token        = "(redacted)"
  config.access_token_secret = "(redacted)"
end

client.search("help", :result_type => "recent").take(3).each do |tweet|
  puts tweet.text

end

如果有人能指出我正确的方向,那就太棒了。

1 个答案:

答案 0 :(得分:0)

好吧,我会发布一些(未经测试的)代码,这些代码可能会帮助您找到正确的方向。这不是最好的方法,因为它不是很灵活,但它应该做你的例子所做的。确保将Twitter gem添加到Gemfile并捆绑安装。创建一个名为TweetsFromAccount的Ruby类。将它保存在/ lib目录下工作正常。

class TweetsFromAccount

  def initialize
    @client = Twitter::REST::Client.new do |config|
      config.consumer_key        = "(redacted)"
      config.consumer_secret     = "(redacted)"
      config.access_token        = "(redacted)"
      config.access_token_secret = "(redacted)"
    end
  end

  def recent_tweets(quantity)
    array_of_tweets = []

    @client.search("help", :result_type => "recent").take(quantity).each do |tweet|
      array_of_tweets << tweet.text
    end
  end

end

在控制器中,创建一个新的TweetsFromAccount对象并将其分配给实例变量@tweets。创建一个额外的实例变量,设置@ tweets.recent_tweets(3)的值。这应该取3条最新的推文。

def show
  # other stuff

  @tweets = TweetsFromAccount.new
  @array_of_tweets = @tweets.recent_tweets(3)
end

然后在你看来,只需迭代@array_of_tweets。

<ul>
  <% @array_of_tweets.each do |tweet| %>
    <li><%= tweet %></li>
  <% end %>
</ul>