2013-09-27 15 views
6

Ho un'app ruby ​​on rails distribuita su heroku con un database e un database follower.È possibile eseguire la console heroku su un DB follower?

Generalmente faccio "heroku run rails console" per controllare i dati, e mi chiedo se c'è un modo per farlo sul database dei follower quindi non scrivo/elimini accidentalmente cose. So che questo dovrebbe essere semplice, ma non riesco a trovare documentazione su di esso.

Grazie!

risposta

-1

Un follower del database è una copia di sola lettura del database master che rimane aggiornato con i dati del database master. Man mano che le scritture e le altre modifiche dei dati vengono eseguite nel database master, le modifiche vengono trasmesse in tempo reale ai database follower.

Fonte - https://devcenter.heroku.com/articles/heroku-postgres-follower-databases

+0

Grazie, ma la mia domanda è se posso eseguire la console sul database seguace (in modo che solo letture sono ammessi nella console, e non eliminare accidentalmente le cose sul master). – David

4

Puoi farlo dalla console locale. Basta accenderlo:

rails console 

Quindi sono necessarie le informazioni di connessione per il database dei follower su heroku. È possibile recuperare questo da https://postgres.heroku.com/databases/. Basta cliccare la banca dati pertinente e assegnare un hash con le seguenti informazioni:

follower_db = {:adapter => "postgresql", 
:host  => "myhost", 
:username => "myuser", 
:password => "mypass", 
:database => "somedatabase"} 

Ora connettersi a questo database remoto dalla console:

ActiveRecord::Base.establish_connection(follower_db) 

Ora tutte le query si entra nella console verrà eseguito su questo DB.

+3

Se esegui 'heroku config' puoi trovare il nome del follower e poi chiamarlo direttamente in codice come:' ActiveRecord :: Base.establish_connection (ENV ['HEROKU_POSTGRESQL_FOLLOWER_URL']) ' –

0

La console ha sicuramente il suo posto, ma se voglio verificare quali dati sono in un database, preferirei guardarli direttamente senza che ActiveRecord ecc. Si intrometta. Ho trovato molte istanze in cui l'utilizzo della console richiede che tu controlli l'SQL generato in ogni caso per assicurarti che non ci siano ambiti (per esempio) che scivolano.

Ti suggerirei di provare a prendere l'abitudine di usare un'interfaccia SQL (forse PgAdminIII) ​​invece della console - un dataclip di Heroku funzionerà anche se non si vuole disturbare la connessione dal client (sebbene la stringa di connessione psql sia fornita dalla pagina del database).

0

Se siete preoccupati per l'eliminazione accidentale di roba, console correre con la bandiera sandbox

heroku run console --sandbox --app app-name 

Le modifiche verrà eseguito il rollback quando il vostro termine della sessione.

0

Questo utilizzerà le credenziali del database follower dalla variabile di ambiente FOLLOWER_DATABASE_URL nell'app Heroku per avviare una console Rails che si connette direttamente al follower anziché al database promosso. Normalmente Rails è impostato per leggere da DATABASE_URL per impostazione predefinita e questo lo imposta su un valore diverso per la durata della sessione della console.

heroku run 'DATABASE_URL=$FOLLOWER_DATABASE_URL rails console'

Problemi correlati