【发布时间】:2016-03-30 20:09:22
【问题描述】:
所以我有一个字符串数组,我想发送到我的 Rails 记录器。我想要的是在每个 rake 任务运行后,我的索引增加一,以便下一个字符串是记录器中的帖子。我已经尝试过这种使用类变量和使用 Redis 的传统方式。我的索引拒绝增加。这是我尝试过的。
试一试
accounts_controller.rb
class AccountsController < ApplicationController
cattr_accessor :index
@@index ||= 0
def self.post
current_user = User.find_by(:id => 1)
user_posts = current_user.accounts.find_by(:id => 1).posts
Rails.logger.info user_posts[@@index].tweet
end
end
post.rake
desc 'send post to twitter'
task send_posts: :environment do
AccountsController.post
AccountsController.index += 1
end
在第二次尝试中,我尝试使用 Redis 使我的 @@index 变量持久化。仍然没有增量。
accounts_controller.rb
class AccountsController < ApplicationController
cattr_accessor :index
@@index = $redis.set('index', 0)
def self.post
current_user = User.find_by(:id => 1)
user_posts = current_user.accounts.find_by(:id => 1).posts
Rails.logger.info user_posts[@@index.to_i].tweet
end
end
post.rake
desc 'send post to twitter'
task send_posts: :environment do
AccountsController.post
#AccountsController.index += 1
$redis.incr('index')
end
在每次 rake 任务运行后,有人可以帮我遍历数组吗?
【问题讨论】:
-
变量将在您加载环境时重置,这将在每次运行 rake 任务时发生。你最终想要做什么?最终目标是什么?记录所有推文?
-
是的,定期记录推文……全部。
标签: ruby-on-rails redis rake rake-task