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



我不喜欢问菜鸟问题,但我花了比我更多的时间来承认谷歌搜索并试图弄清楚这个简单的过程。我正在尝试使用 Twitter 宝石在我的应用视图中发布推文。

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

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

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

好吧,我将发布一些(未经测试的)代码,这些代码可能有助于您朝着正确的方向前进。这不是最好的方法,因为它不是很灵活,但它应该做你的示例所做的事情。确保将 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>

最新更新