質問

リモート接続をローカルでセットアップし、それをherokuにプッシュする必要があります。 Herokuにプッシュすると、次のエラーが表示されました。

RemoteDBNameは設定されていません。

私は、herokuが独自のconfig.ymlファイルを使用している(また検索および表示された)と仮定しています。

役に立ちましたか?

解決

これを理解するために、herokuのリモートデータベースに接続している人のために、これを理解しました:

Herokuはdatabase.ymlファイルを独自のものに置き換え、あなたのものを上書きします。

これを回避するには:

  • configフォルダーに新しいファイルを作成し、whatever.ymlという名前を付けます
  • このファイルに接続文字列を設定します。
  • 初期化フォルダに新しいファイルを作成します。私はload_remote.rbと呼びます。このファイルに次のコード行を記述します。

    REMOTE_DB = YAML.load_file("#{RAILS_ROOT} /config/YOURNEWFILEHERE.yml")

  • 次のコード行を使用して、任意のリモートモデルで接続を確立します。

    establish_connection Remote_DB ['ここでymlファイルに接続文字列に名前を付けたものは何でも']

他のヒント

Herokuで作業するときにデータベースの設定がどのように行われるかを説明します。これはドキュメントでは少し曖昧かもしれませんが、混乱する人もいます。コンソールを活用しましょう:

zero:~/Projects/crantastic $ heroku console
Ruby console for crantastic.heroku.com
>> puts File.read(Rails.configuration.database_configuration_file)
---
production:
  encoding: unicode
  adapter: postgresql
  username: something_random
  port: 5432
  host: somewhere.at.heroku
  database: something_random
  password: something_random

=> nil
>>

Herokuは、サイトをサーバーにプッシュすると、実際にはアプリのdatabase.ymlを置き換えます。ローカルで使用するものに関係なく、データは豪華なPostgreSQLサーバーの1つに保存されます-これは、database.ymlをまったく考慮する必要がないことを意味します(開発目的以外は当然)。 Tapsは、すべてのデータベースが不可知であることを確認します。最新の開発データベースをHerokuにプッシュする場合は、単にheroku db:push

を実行します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top