Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails项目中放置代码的位置_Ruby On Rails_Ruby_Ruby On Rails 4_Tweetstream - Fatal编程技术网

Ruby on rails 在Rails项目中放置代码的位置

Ruby on rails 在Rails项目中放置代码的位置,ruby-on-rails,ruby,ruby-on-rails-4,tweetstream,Ruby On Rails,Ruby,Ruby On Rails 4,Tweetstream,我正在尝试使用Ruby Twitter Gem根据某些关键字对推文是否进行地理标记进行分类。我可以在rails控制台上很好地完成这项工作,但我只是想在视图中反映我的发现,我只是不知道如何做到这一点 以下是我在命令行上所做的操作: 我首先设置流媒体客户端: client = Twitter::Streaming::Client.new do |config| config.consumer_key = "MYCODE" config.consumer_secret =

我正在尝试使用Ruby Twitter Gem根据某些关键字对推文是否进行地理标记进行分类。我可以在rails控制台上很好地完成这项工作,但我只是想在视图中反映我的发现,我只是不知道如何做到这一点

以下是我在命令行上所做的操作:

我首先设置流媒体客户端:

client = Twitter::Streaming::Client.new do |config|
  config.consumer_key        = "MYCODE"
  config.consumer_secret     = "NOTYOURS"
  config.access_token        = "HANSHOT"
  config.access_token_secret = "FIRST"
end
然后我初始化我的计数:

count = 0
geo = 0
最后,我粘贴我的简短脚本并运行enter:

client.filter(:track => "cat") do |tweet|
    count += 1

    if(tweet.place.nil?)
      # Do nothing
    else
      geo += 1
    end
end
要访问我的结果,我需要Ctrl+C并在控制台中键入“geo”或“count”

在理想情况下,我会有一个显示计数和地理数字的视图。每当我刷新视图时,所述视图将使用更新的数字刷新

我试着将其放入一个控制器中,但是页面从未加载,因为据推测,控制器正在无限地解析流,并且从未获得渲染的机会

我把它放在一个模型文件里,但那也没用


那么,我是不是走错了路?除了IRB,从任何地方都无法获得这些数字吗?

在创建控制器代码时,需要记住以下几点:

  • 要在视图中显示的所有内容都必须由数据库调用、助手方法或实例变量提供
  • 控制器必须及时完成其计划执行的任何操作。无限循环和耗时几分钟的长时间运行的操作是严重问题
  • 视图可以自己进行计算,通常它们可以自由地运行任意Ruby代码,但在那里执行繁重的工作被认为是不好的,因为这是控制器的主要责任
因此,一般来说,控制器代码可能如下所示:

def index
  @client = Twitter::Streaming::Client.new do |config|
    # ... (Configuration)
  end

  @count = 0
  @geo = 0

  client.filter(track: "cat") do |tweet|
    @count += 1

    if (tweet.place)
      @geo += 1
    end

    break if (@count > 10)
  end
end

这假定
客户端.filter
操作可以在短时间内产生十个结果。

在创建控制器代码时,需要记住以下几点:

  • 要在视图中显示的所有内容都必须由数据库调用、助手方法或实例变量提供
  • 控制器必须及时完成其计划执行的任何操作。无限循环和耗时几分钟的长时间运行的操作是严重问题
  • 视图可以自己进行计算,通常它们可以自由地运行任意Ruby代码,但在那里执行繁重的工作被认为是不好的,因为这是控制器的主要责任
因此,一般来说,控制器代码可能如下所示:

def index
  @client = Twitter::Streaming::Client.new do |config|
    # ... (Configuration)
  end

  @count = 0
  @geo = 0

  client.filter(track: "cat") do |tweet|
    @count += 1

    if (tweet.place)
      @geo += 1
    end

    break if (@count > 10)
  end
end

这假定
客户机.filter
操作可以在短时间内产生十个结果。

这是一个很好的信息,尤其是视图中可以显示的内容(db调用、帮助器、实例变量)。但是,我希望在后台持续运行流,并在刷新视图时接收更新的计数。这让我觉得控制器不应该是操作流的那个人,但除此之外我仍然迷失了方向。控制器直接操作流没有什么错,但它必须确保流不会永远运行。如果您正在使用,那么它似乎是基于EventMachine的,在Rails应用程序中可能无法很好地发挥作用。这里应用的标准模式是使用一个轮询脚本将内容写入数据库,控制器检索这些内容以供显示。ActiveRecord使这一点变得非常容易。这是一个很好的信息,特别是视图中可以显示的内容(db调用、帮助器、实例变量)。但是,我希望在后台持续运行流,并在刷新视图时接收更新的计数。这让我觉得控制器不应该是操作流的那个人,但除此之外我仍然迷失了方向。控制器直接操作流没有什么错,但它必须确保流不会永远运行。如果您正在使用,那么它似乎是基于EventMachine的,在Rails应用程序中可能无法很好地发挥作用。这里应用的标准模式是使用一个轮询脚本将内容写入数据库,控制器检索这些内容以供显示。ActiveRecord使这一点变得非常容易。这是一个很好的信息,特别是视图中可以显示的内容(db调用、帮助器、实例变量)。但是,我希望在后台持续运行流,并在刷新视图时接收更新的计数。这让我觉得控制器不应该是操作流的那个人,但除此之外我仍然迷失了方向。控制器直接操作流没有什么错,但它必须确保流不会永远运行。如果您正在使用,那么它似乎是基于EventMachine的,在Rails应用程序中可能无法很好地发挥作用。这里应用的标准模式是使用一个轮询脚本将内容写入数据库,控制器检索这些内容以供显示。ActiveRecord使这一点非常容易做到。