【问题标题】:Redis looking for env redis url variable not sure where to put env variable bad URI(is not URI?): (URI::InvalidURIError)Redis 寻找环境 redis url 变量不确定将环境变量放在哪里错误 URI(不是 URI?):(URI::InvalidURIError)
【发布时间】:2014-06-08 12:05:16
【问题描述】:

我对 redis 很陌生。这个 rails 应用在 config/initializers 中有一个 redis.rb 文件

uri = URI.parse(ENV["REDIS_URL"])
$redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

redis url 在 heroku 配置中。

我不能只用 heroku 配置中的 REDIS_URL 替换 REDIS_URL

我收到一个 URI 解析错误

 bad URI(is not URI?):  (URI::InvalidURIError)

我的问题是我应该把 redis url 放在哪里?它在哪里搜索环境变量?

【问题讨论】:

  • 看起来您没有正确配置您的 ENV['REDIS_URL'] 变量,因为它正在将 nil 传递给 URI.parse()
  • @MikeCampbell 我认为它设置正确。我从某人那里继承了该应用程序。很高兴知道我需要仔细检查。

标签: ruby-on-rails redis


【解决方案1】:

我猜你在做 rake 时会遇到这个问题。问题是,在 rake-ing 时,您的环境变量未设置,这会导致此错误(https://devcenter.heroku.com/articles/rails-asset-pipeline 处的信息)。要克服,请改用条件初始化器,例如:

if ENV["REDISCLOUD_URL"]
    uri = URI.parse(ENV["REDISCLOUD_URL"])
    $redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
end

附:或者,使用 this 但请注意,根据 Heroku:

使用此实验室功能被认为与 Heroku 最佳做法背道而驰。 此实验室功能可以降低您的构建的确定性,并且需要 进行配置更改后重新部署。理想情况下,您的应用应该能够 无需配置即可构建。

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 2012-02-23
    • 2011-07-19
    • 2017-12-18
    • 2013-04-14
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多