Domanda best practice di implementazione di database.yml


Non controllo il mio file database.yml nel controllo del codice sorgente e mi chiedevo cosa facciano gli altri / best practice per copiare questo file sul server durante la distribuzione.

Uso Capistrano per l'implementazione.


21
2018-04-26 01:53


origine


risposte:


Attualmente, tengo una cartella condivisa chiamata shared che vive al di fuori del mio deply_to dirs. Tengo il mio database.yml e altri file di configurazione lì e ho un hook in cap per cp quelli sopra durante la distribuzione. Ecco il mio compito semplice per fare la copia:

after "deploy:update_code","deploy:config_symlink"

namespace :deploy do

  task :config_symlink do
    run "cp #{shared_path}/../../shared/database.yml #{release_path}/config/database.yml"
  end
end

16
2018-04-26 02:13



Il mio script di distribuzione stava rompendo usando il after "deploy:update_code" gancio perché quella fase sembrava tentare di accedere al DB già. Faccio così:

before "deploy:assets:precompile", 'deploy:symlink_shared'

namespace :deploy do

  task :symlink_shared do
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
  end
end

9
2018-03-28 18:02



Ho battuto la testa su questo per un po 'di tempo, e ho trovato una soluzione più facile per Capistrano 3. Spero che questo aiuti quelli là fuori.

Non potevo per la vita di me ottenere i comandi "Esegui" o "Esegui" per lavorare nel mio file deploy.rb. Come si scopre, in Capistrano 3, dovresti mettere il tuo database.yml sotto la cartella deployment_directory / shared. Quindi, nel file deployment.rb, includere il file nella variabile linked_files e ottiene automaticamente il collegamento simbolico allo stesso percorso durante la distribuzione.

Ecco un esempio:

Per i principianti, non ho database.yml controllato nel controllo del codice sorgente. Il mio database.yml si trova qui sul server di produzione:

var / www / frontend / shared / config / database.yml

Nel mio deployment.rb, ho aggiunto questa linea

set :linked_files, %w{config/database.yml}

Durante la distribuzione, capistrano collega automaticamente il file a:

var / www / frontend / corrente / config / database.yml

Spero che questo aiuti gli altri là fuori. Oggi ho davvero battuto la testa contro il muro.


4
2018-03-11 21:27