herokus ymlファイルを編集する方法はありますか
-
22-07-2019 - |
質問
リモート接続をローカルでセットアップし、それを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
を実行します