URI :: InvalidURIError:部署带有多个数据库的HEROKU应用程序时,URI错误(不是URI?)

时间:2019-03-13 01:54:00

标签: ruby-on-rails ruby postgresql heroku multiple-databases

我正在尝试部署具有多个数据库的Heroku应用程序(目前为2个)。我正在关注本教程

Multiple database guide

说我需要配置一个这样的文件

production:
  adapter: postgresql
  encoding: utf8
  url:  <%= ENV["DATABASE_DAVILA_URL"] %>
  pool: <%= ENV["DB_POOL"] || 5 %>

问题是当我尝试部署到heroku时,会发生此错误

-----> Detecting rake tasks
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       URI::InvalidURIError: bad URI(is not URI?): <%= ENV["DATABASE_DAVILA_URL"] %>

这就像是无法正确解析链接一样,因为我什至试图在变量中对URI进行硬编码,但无法正常工作。这是环境变量的重要部分:

DATABASE_DAVILA_URL:         postgres://somethinguser:somethingpass@somethinghost.compute-1.amazonaws.com:5432/somethingdb
DATABASE_URL:                postgres://somethinguser:somethingpass@somethinghost.compute-1.amazonaws.com:5432/somethingdb
HEROKU_POSTGRESQL_MAUVE_URL: postgres://somethinguser:somethingpass@somethinghost.compute-1.amazonaws.com:5432/somethingdb

我几乎遵循了所找到的所有教程,但始终遇到相同的错误。我什至尝试使用此代码读取类似于“未在预编译阶段加载env vars”的内容,但没有进行任何更改

module Indicadoresrails
  class Application < Rails::Application

    config.load_defaults 5.2

    config.assets.initialize_on_precompile = false
  end
end

请帮助:(

1 个答案:

答案 0 :(得分:0)

确保URI.parse(<DATABASE_DAVILA_URL here>)成功。您的数据库用户名/密码中可能包含非URL安全字符。您需要URI.encode