我使用免费的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
)。
答案 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个命令,可能性无穷无尽。