如何启用redis for Dashing?

时间:2016-02-29 20:11:52

标签: ruby heroku redis dashing

我使用免费的heroku实例来运行我的Dashing项目。结果,当我的实例休眠时,它会丢失先前传递的值。我被建议使用Redis来保存历史记录。我试着按照here给出的指示。结果我得到了以下config.ru(作为我的项目的一部分):

require 'dashing'
require 'redis-objects'
require 'yaml'

configure do
  set :auth_token, 'my-token'
  set :default_dashboard, 'def' # https://github.com/Shopify/dashing/wiki/How-To:-Change-the-default-dashboard

  helpers do
    def protected!
     # Put any authentication code you want in here.
     # This method is run before accessing any resource.
    end
  end
end

def redis?
  ENV.has_key? 'REDISTOGO_URL'
end

if redis?
  redis_uri = URI.parse(ENV['REDISTOGO_URL'])
  Redis.current = Redis.new(:host => redis_uri.host,
      :port => redis_uri.port,
      :password => redis_uri.password)

  set :history, Redis::HashKey.new('dashing-history')
elsif File.exists?(settings.history_file)
  set history: YAML.load_file(settings.history_file)
else
  set history: {}
end

map Sinatra::Application.assets_prefix do
  run Sinatra::Application.sprockets
end

run Sinatra::Application

以及以下Gemfile

source 'https://rubygems.org'

gem 'dashing'
gem 'redis-objects'

## Remove this if you don't need a twitter widget.
gem 'twitter', '>= 5.9.0'

但它没有帮助。我做错了什么? 我还尝试使用this教程。但它在第redis_uri = URI.parse(ENV["REDISTOGO_URL"])行给出了一个错误(类似于wrong url is given)。

1 个答案:

答案 0 :(得分:2)

问题是该应用需要加载项Redis To Go
如果配置了 Redis To Go ,则REDISTOGO_URL被添加到环境变量中,它将起作用

有关如何设置 Redis To Go 的详情,请参阅heroku article

  

将Redis添加到应用程序提供了好处,您可能正在使用RedisToGo为简单的Resque或Sidekiq作业提供支持,或者使用Redis 2.6 Lua Scripting的原始功能来执行一些疯狂的快速操作。 Redis可以用作数据库,但它通常用作补充数据存储。有超过140个命令,可能性无穷无尽。