我正在使用带有Postgres DB Docker容器的Rails。当我运行rails c时,我似乎遇到了以下错误:
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/uri/generic.rb:204:“初始化”中:方案postgres不接受注册表部分:postgres:@(或错误主机名?)(uri::InvalidURIError)
这不起作用有什么原因吗
我的数据库.yml是:
制作:
<<;:*违约
url:<;%=环境['DATABASE_URL']%>;
$DATABASE\u URL已定义
有趣的是,它工作了几天直到昨天,今天又停止了工作
下面是Rails 4.2.1生成的内容
#与config/secrets.yml一样,您永远不想存储敏感信息,
#就像你的数据库密码一样,在你的源代码中。如果您的源代码是
#任何人都见过,他们现在可以访问您的数据库。
#
#相反,请在启动时将密码作为unix环境变量提供
#应用程序。阅读http://guides.rubyonrails.org/configuring.html#configuring-a-数据库
#有关如何在
#生产部署。
#
#在Heroku和其他平台提供商上,您可能拥有完整的连接URL
#可作为环境变量使用。例如:
#
#数据库URL=”postgres://myuser:[email protected]/somedatabase“
#
#您可以将此数据库配置用于:
#
#制作:
#url:<;%=环境['DATABASE_URL']%>;
究竟为什么他们会推荐保留的env变量
更新:事实上,这还没有解决。运行
railsrunner时,似乎没有从database.yml文件中提取环境变量,该文件由cron任务运行以调用Sidekiq worker作业(使用where)。我不得不将url:静态值改为使其暂时工作,但鉴于dockerip每次从图像运行时都会发生变化,我更希望railsrunner正确地拾取环境变量。这可能与https://github.com/rails/rails/issues/19256#issuecomment-102980786但解决方案也不起作用
重命名您的环境变量
DATABASE\u URL由Rails保留,并由ActiveRecord本身进行解释。我遇到了同样的问题
相反,请使用以下内容:
主机:<;%=环境['DB_HOST']%>;
密码:<;%=环境['DB_PWD']%>;