Rails ローカル開発環境からHerokuのDBに接続 / Rakeタスクとコンソール

rakeタスクを書いて、herokuにpushしてコンソール開いて実行ってのがめんどくさいので、自分のローカル開発環境から直接プロダクションのDBをさわりたかった。チームでやってると良くないと思うけど、個人プロジェクトならまぁいいかってことで。

config/database.yml

production_local:
  adapter: postgresql
  encoding: utf8
  port: 5432
  pool: 5
  database: YOUR_DB_NAME
  username: YOUR_DB_USER_NAME
  password: YOUR_DB_PASSWORD
  host: ec2-00-000-00-000.eu-west-1.compute.amazonaws.com
  sslmode: require

以下は適宜変えてください。

  • production_local(environmentの名前)
  • YOUR_DB_NAME
  • YOUR_DB_PASSWORD
  • YOUR_DB_PASSWORD
  • ec2-00-000-00-000.eu-west-1.compute.amazonaws.com

  
ホスト名の取得 ↓

$ heroku config

とすれば、HEROKU_POSTGRESQL_COLOR_URL が取得できる。
hostはここの部分。
ec2-00-000-00-000.eu-west-1.compute.amazonaws.com

コンソール

これはオプションつけて実行すればいいだけ。

$ rails c -e production_local

でも

config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:

  * development - set it to false
  * test - set it to false (unless you use a tool that preloads your test environment)
  * production - set it to true

  
と言われたので、configを足しておいた。
config/environments/production_local.rb

Yourapp::Application.configure do
  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both thread web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true
end
$ rails c -e production_local
$ Post.last
  => Herokuのデータベースのレコード

Rakeタスク

namespace :your_task do
  desc "Test task for production_local"
  task test: :environment do
    test
  end
end

# Check if production_local environment works
def test
    ActiveRecord::Base.establish_connection(:production_local)
    puts "This is test"
    post = Post.last
    puts "#{post.id} #{post.title}"
end

  
実行するとHerokuのデータベースに接続した結果が得られるはず。

$ rake your_task:test

以上です。

参考

heroku / アプリから別のアプリのデータベースに接続する | Workabroad.jp
rails consoleにて、dbをproductionに接続する。 - Qiita
postgresql - Connect local rails app on my laptop to heroku database - Stack Overflow
  

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた