我有一個Ruby應用程序部署在Heroku上的一個數據庫和一個追隨者數據庫的應用程序。你可以在追隨者數據庫上運行heroku控制檯嗎?
我通常會使用「heroku run rails console」來查看數據,並且我想知道是否有一種方法可以在跟隨者數據庫上執行它,所以我不會意外地寫入/刪除東西。我知道這應該很簡單,但我似乎無法找到關於它的文檔。
謝謝!
我有一個Ruby應用程序部署在Heroku上的一個數據庫和一個追隨者數據庫的應用程序。你可以在追隨者數據庫上運行heroku控制檯嗎?
我通常會使用「heroku run rails console」來查看數據,並且我想知道是否有一種方法可以在跟隨者數據庫上執行它,所以我不會意外地寫入/刪除東西。我知道這應該很簡單,但我似乎無法找到關於它的文檔。
謝謝!
數據庫追隨者是主數據庫的只讀副本,與主數據庫數據保持同步。隨着寫入和其他數據修改在主數據庫中提交,這些更改將實時傳輸到跟隨者數據庫。
來源 - https://devcenter.heroku.com/articles/heroku-postgres-follower-databases
您可以從本地控制檯做到這一點。只需啓動它:
rails console
然後,您需要在heroku上跟隨數據庫的連接信息。你可以從https://postgres.heroku.com/databases/檢索這個。只需點擊相關數據庫,並與下面的信息分配的哈希:
ActiveRecord::Base.establish_connection(follower_db)
現在你在控制檯輸入任何查詢將運行於:
follower_db = {:adapter => "postgresql",
:host => "myhost",
:username => "myuser",
:password => "mypass",
:database => "somedatabase"}
現在從控制檯連接到該遠程數據庫這個DB。
如果你運行'heroku config',你可以找到跟隨者的名字,然後直接用代碼調用它:'ActiveRecord :: Base.establish_connection(ENV ['HEROKU_POSTGRESQL_FOLLOWER_URL'])' –
控制檯當然有它的位置,但是如果我想檢查數據庫中的數據,那麼我寧願直接看它而不用ActiveRecord等。我發現很多使用控制檯的例子要求你檢查生成的SQL,以確保沒有示波器滑落。例如,一個SQL接口(可能是PgAdminIII)而不是控制檯 - 如果你不想麻煩從客戶端連接(儘管psql連接字符串是從數據庫頁面給你的),Heroku dataclip甚至可以工作。
如果你擔心不小心刪除的東西,運行控制檯與沙箱標誌
heroku run console --sandbox --app app-name
您的更改將回滾會話結束時。
這將使用Heroku應用程序中FOLLOWER_DATABASE_URL環境變量的跟隨者數據庫憑據來啓動直接連接到跟隨者而不是升級數據庫的Rails控制檯。通常,Rails默認設置爲從DATABASE_URL讀取,並且在控制檯會話持續時間內將其設置爲不同的值。
heroku run 'DATABASE_URL=$FOLLOWER_DATABASE_URL rails console'
謝謝,但我的問題是我是否可以運行在跟隨數據庫上的控制檯(以便只讀取被允許在控制檯,我不小心在主刪除的東西)。 – David