質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

239閲覧

Heroku PostgreSQLを2つのSinatraアプリで共有したい

b_kazu

総合スコア26

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2018/05/25 06:52

編集2018/08/13 08:40

Heroku PostgreSQLを共有するときの接続方法がわかりません。

現在2つのSinatraアプリ(first_appとsecond_app)をデプロイ済です。
各々のアプリでPostgreSQLを使っていて問題なく稼働しています。

first_appのデータベースは
データベース名: first
テーブル名: firsts

second_appのデータベースは
データベース名: second
テーブル名: seconds

今後second_appでfirst_appのデータベースも使いたいと思っています。
Heroku addons:attachを試したのですがアプリに接続すると(できず)エラーになってしまいます。

試したこと。

Heroku addons:attach

heroku addons:attach first_app::DATABASE --app second_app

Herokuの返答

Attaching postgresql-*-** to ⬢ second_app... done
Setting HEROKU_POSTGRESQL_<color> config vars and restarting ⬢
second_app... done, v**

second_app.rb

ruby

1require 'sinatra' 2require 'active_record' 3require 'dotenv/load' 4 5get '/' do 6 class Second < ActiveRecord::Base 7 establish_connection(ENV['DATABASE_URL']) 8 end 9 10 class First < ActiveRecord::Base 11 establish_connection(ENV['HEROKU_POSTGRESQL_<color>_URL']) 12 end 13 14 @second = Second.all 15 @first = First.all 16 17 erb :index 18end

index.erb

<!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html" charset="utf-8"> <title>Test</title> </head> <body> <% @second.each do |second_row| %> <ul> <li><%= "#{second_row['column_name']}" %></li> </ul> <% end %> <% @first.each do |first_row| %> <ul> <li><%= "#{first_row['column_name']}" %></li> </ul> <% end %> </body> </html>

Herokuのエラーログ

ActiveRecord::StatementInvalid - PG::UndefinedTable: ERROR: relation "firsts" does not exist

その他、試したこと。
heroku addons:attachで
first_app::DATABASE --app second_appを
second_app::DATABASE --app first_appと逆にしても同じ結果になりました。

解決方法がわかりましたらよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。
first_appのmaintenanceモードを解除し忘れていました。
接続自体は質問に記載したコードでできました。
失礼しました。

投稿2018/05/26 01:28

b_kazu

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問