大家好,我是 play 框架和 Heroku 的新手。我被要求开发一个由其他人编写的在 Heroku 上托管的 Play 应用程序。该应用程序附加了一个 PostgreSQL 数据库。
我想知道处理它的最佳方法是什么。我不想每次为了查看结果而进行一些更改时都必须将我的应用程序推送到 heroku。
由于远程数据库问题,“play run”命令无法在本地运行。我复制了 DATABASE_URL 值并将其放入配置文件中,但它仍然无法正常工作,因为它显示“SSL 关闭”并且似乎打开 SSL 并不是一件容易的事。
关于我应该如何处理这个项目有什么想法吗?
提前致谢!
最佳答案
为了从本地计算机访问 Heroku Postgres 数据库,必须使用 SSL 连接。为此,您需要将以下查询参数添加到数据库连接字符串中:
?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
此外,在本地运行时,我建议使用 Foreman ,它可以读取您的 Procfile 并注入(inject)环境变量,就像在 Heroku 上一样。要设置要使用的环境变量,请创建(但不要 checkin )一个包含您希望应用程序可用的键值对的 .env
文件。例如,像这样:
DATABASE_URL=postgres://user:pass@ec2-107-22-182-123.compute-1.amazonaws.com:5432/db?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
然后,您将能够像这样运行您的应用:
foreman run play run
提示:为了更轻松地创建 .env
,请检查 heroku-config
插件,它提供了一个 heroku config:pull
命令来将配置从你的应用程序拉到一个 .env
文件。当然,您可能希望使用开发数据库进行本地开发,但如果您愿意,这可以让您投入生产。
关于ssl - 如何在本地处理 Play 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15859114/