我在本地设置了一个远程连接,需要将其推送到 heroku。当我将它推送到 heroku 时,我收到一条错误消息:
未配置 RemoteDBName。
我只是假设(也搜索和看到)heroku 使用他们自己的 config.yml 文件。
我在本地设置了一个远程连接,需要将其推送到 heroku。当我将它推送到 heroku 时,我收到一条错误消息:
未配置 RemoteDBName。
我只是假设(也搜索和看到)heroku 使用他们自己的 config.yml 文件。
想通了这一点,对于任何连接到 heroku 上的远程数据库的人可能会看到这个:
Heroku 用他们自己的替换你的 database.yml 文件,覆盖你的任何东西。
要解决这个问题:
在您的初始化程序文件夹中创建一个新文件,我将其命名为 load_remote.rb。在这个文件中写下这行代码:
REMOTE_DB = YAML.load_file("#{RAILS_ROOT}/config/YOURNEWFILEHERE.yml")
使用这行代码在任何远程模型中建立连接:
建立连接 Remote_DB['无论你在 yml 文件中命名你的连接字符串']
让我向您展示使用 Heroku 时如何完成数据库配置。我认为这在文档中可能有点模糊,有些人对此感到困惑。让我们使用控制台:
zero:~/Projects/crantastic $ heroku console
Ruby console for crantastic.heroku.com
>> puts File.read(Rails.configuration.database_configuration_file)
---
production:
encoding: unicode
adapter: postgresql
username: something_random
port: 5432
host: somewhere.at.heroku
database: something_random
password: something_random
=> nil
>>
当您将站点推送到他们的服务器时,Heroku 实际上会替换您的应用程序 database.yml。无论您在本地使用什么,您的数据都将存储在他们精美的 PostgreSQL 服务器之一中——这意味着您根本不必考虑 database.yml(当然,开发目的除外)。Taps 确保一切都与数据库无关。如果您想将最新的开发数据库推送到 Heroku,只需运行 heroku db:push