6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-01-18

ブログを更新しました。元の記事はコチラ


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
  

http://workabroad.jp/posts/2128

6
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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?