Pau*_*ell 98
更新
最初,这个答案指出虽然这可以用一些技巧,但强烈劝阻.这是基于Heroku开发人员支持网站上的建议.然而,最近Heroku发布了专门描述如何实现这一目标的通信,并在开发者网站上淡化了他们的建议.他们的电子邮件的这一部分的完整文本包括在下面:
您知道Heroku应用程序可以共享一个公共数据库吗?例如,您可以将分析功能放在与面向用户的代码不同的应用程序中.
只需将多个应用程序的DATABASE_URL配置var设置为相同的值即可.首先,获取现有应用的DATABASE_URL:
Run Code Online (Sandbox Code Playgroud)$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute1.amazonaws.com/ldfoiusfsf然后,将新应用的DATABASE_URL设置为此值:
Run Code Online (Sandbox Code Playgroud)$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74. That's it- 现在两个应用程序将共享一个数据库.
作为参考,Heroku最初的建议是创建和使用API远程访问数据.我个人的观点是,总的来说,对于很多情况来说这是一个很好的建议(即,不仅仅是将多个应用程序连接到同一个数据库),尽管我可以看到那些比它更值得麻烦的情况.
UPDATE
根据对此答案的评论,值得注意的是Heroku保留根据需要更改数据库URL的权利.如果发生这种情况,将导致您的辅助连接失败,并且您需要相应地更新URL.
小智 77
对相关问题的最新答案!
Heroku现在通过他们的插件框架正式支持更好/更优雅的解决方案.它们最新的时事通讯中描述了如何在应用程序之间共享插件.以下是文章中提到的片段:
$ heroku addons:attach my-sushi-db -a my-sushi-reporting --as MAIN_SUSHI_DB
Adding MAIN_SUSHI_DB to my-sushi-reporting... done
Setting MAIN_SUSHI_DB vars and restarting my-sushi-app-reporting... done, v3
Run Code Online (Sandbox Code Playgroud)
链接:expanding_the_power_of_add_ons
Joh*_*non 15
据我所知,这是可能的 - 您必须使用数据库查看应用程序的heroku配置变量,然后将想要共享数据库的应用程序上的database_url设置为相同的值.有点偏离轨道,以及如何支持它我不知道.
编辑只是为了让我放心,我已经在Heroku上创建了两个应用程序 - 一个带标题的简单脚手架"帖子".
http://evening-spring-734.heroku.com/posts是主人
http://electric-galaxy-230.heroku.com/posts - 是奴隶
因此,在其中任何一个上创建的帖子都将被写入Evening-spring-734的数据库URL.
我所做的就是使用heroku配置来获取Evening-spring-734的DATABASE_URL,然后将相同的值设置为电子星系-230的DATABASE_URL.
你最终可能会遇到一些果味的DB竞争条件,但这绝对是可能的.
魔术吧?
Jos*_*ers 12
我最近在Heroku时事通讯中收到了这封信.我正在通过电子邮件发送它们以确定它是否真的是批准的用法.
你知道吗?
与许多应用共享一个数据库
您知道Heroku应用程序可以共享一个公共数据库吗?例如,您可以将分析功能放在与面向用户的代码不同的应用程序中.
只需将多个应用程序的
DATABASE_URLconfig var设置为相同的值即可.首先,获取DATABASE_URL现有应用程序:Run Code Online (Sandbox Code Playgroud)$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf然后,将
DATABASE_URL新应用设置为此值:Run Code Online (Sandbox Code Playgroud)$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74.就是这样 - 现在两个应用程序将共享一个数据库.
Amazon RDS插件适用于此.多个应用可以共享相同的RDS实例.
您可以使用active_record.table_name_prefix灵活地让它们共享表或避免表名冲突.
| 归档时间: |
|
| 查看次数: |
23972 次 |
| 最近记录: |