8

有没有办法配置 database.yml 文件以远程连接到 Heroku 的 Postgres?

我无法理解 Heroku、Rails 和 PG gem 如何协同工作。

看起来在部署期间,Heroku 重写了 database.yml 文件 - 是否可以看到这个更新的 .yml 文件的内容并在本地使用它?

4

3 回答 3

29

以下是从本地开发访问 Heroku db 的步骤:

  1. 登录到您的 heroku 帐户。

  2. 导航到此 URL https://postgres.heroku.com/databases/或者您可以通过在终端中运行以下命令来获取 heroku db url:heroku pg:credentials:url

  3. 选择您的应用程序数据库。

  4. 您将能够看到您的 heroku pg 凭据:

    Host         xxxxxxxxx.77777.amazonaws.com
    Database     42feddfddeee 
    Username         44444444444
    Port         xxxx
    Password     777sfsadferwefsdferwefsdf
    
  5. 收集上述详细信息并放入您的 databse.yml 文件开发 evn:

    adapter: postgresql  
    host: < host >                            # HOST 
    port: < port >                            # Port  
    database: < database name >               # Database Name  
    username: < user_name >                   # User Name  
    password: '< password >'                  # Password 
    

重新启动您的应用程序,

祝你好运..!!

于 2013-10-21T07:24:08.387 回答
2

我不是 postgres 用户,但这应该可以。你可以改变你database.yml的包括hostport

production:
  adapter: postgresql
  encoding: unicode
  database: di_production
  pool: 5
  username: user
  password:
  host: heroku.host.name
  port: <postgres listen port>

当然,您应该允许服务器端的连接,包括防火墙级别和数据库级别。

查看内容的一个简单技巧#{Rails.root}/config/database.yml是编写代码将此 yml 加载到对象中,然后在 UI 上打印出来

DB_CONFIG = YAML.load(File.read("#{Rails.root}/config/database.yml", __FILE__))
puts DB_CONFIG["production"].inspect  # or what ever method you want to print it
于 2013-10-21T06:14:25.870 回答
1

我是一个新手,可能误解了你的问题 - 但是。使用 postgress 数据库开发了一个 ROR 应用程序。然后上传到 Heroku。我跑去DB/Migrate/schema.rb设置远程 Postgresql 数据库。

从记忆中 heroku 运行rake db:init(但我可能是错的)。每当我在开发中更新数据库以在 Heroku 中获取更新时,我必须提升代码并运行 heroku runrake db:migrate

从我的config/dtabase.yml

development:
  adapter: postgresql
  encoding: unicode
  database: di_development
  pool: 5
  username: davidlee
  password:
test:
  adapter: postgresql
  encoding: unicode
  database: di_test
  pool: 5
  username: davidlee
  password:
production:
  adapter: postgresql
  encoding: unicode
  database: di_production
  pool: 5
  username: user
  password:
  • 它有效。我不记得做过别的事情了。

皮埃尔

于 2013-10-21T05:46:58.217 回答