LoginSignup
7
6

More than 5 years have passed since last update.

RailsでHeroku の DB(Postgres) にローカルや外部サーバーなどからアクセスする方法

Last updated at Posted at 2015-03-18

HerokuのPostgresの情報を見つける

$ heroku pg:info --app appname
=== HEROKU_POSTGRESQL_HOGE_URL (DATABASE_URL)
Plan:        Hobby-dev
Status:      Available
Connections: 1/20
PG Version:  9.3.6
Created:     2014-01-01 01:00 UTC
Data Size:   0.1 MB
Tables:      1
Rows:        1/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported
$ heroku pg:credentials HEROKU_POSTGRESQL_HOGE --app appname
Connection info string:
   "dbname=db host=host port=port user=user password=password sslmode=require"
Connection URL:
    postgres://hogehoge~~~~

この情報を使っていきます。

pryで試してみます

Frame number: 0/6
[1] pry(main)> require 'pg'
true
[2] pry(main)> require 'active_record'
false
[3] pry(main)> ActiveRecord::Base.establish_connection(
[3] pry(main)*   adapter:  'postgresql',
[3] pry(main)*   host:     'host',
[3] pry(main)*   database: 'db',
[3] pry(main)*   port:     port,
[3] pry(main)*   username: 'user',
[3] pry(main)*   password: 'password',
[3] pry(main)*   sslmode:  'require'
[3] pry(main)* )
#<ActiveRecord::ConnectionAdapters::ConnectionPool:0x007f287aaba640
 ・
 ・
 ・

[4] pry(main)> ActiveRecord::Base.connection.execute("SELECT version()").first
   (226.5ms)  SELECT version()
{
    "version" => "PostgreSQL 9.3.6 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit"
}

# 生SQLを使う版
[5] pry(main)> ActiveRecord::Base.connection.execute("SELECT * from hoges;").first
   (525.7ms)  SELECT * from product_comments;
{
                             "id" => "1",
                               .
                               .
                               .
}

# ActiveRecordを使う版
[6] pry(main)> Hoge.first
{
                             "id" => "1",
                               .
                               .
                               .
}

コードでは

  def get_data_from_heroku_pg
    require 'pg'
    require 'active_record' # 必要あれば

    # Change the following to reflect your database settings
    ActiveRecord::Base.establish_connection(
      adapter:  'postgresql',
      host:     'host',
      database: 'db',
      port:     port,
      username: 'user',
      password: 'password',
      sslmode:  'require'
    )

  ・
  ・
  ・

References

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6