Ho ricevuto il server con la configurazione di cui sopra.Bundler + RVM + Passeggero + implementazione di Capistrano e gemme mancanti
Questa è la parte importante della mia ricetta deploy.rb:
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
require 'bundler/capistrano'
set :rvm_ruby_string, 'ruby-1.9.2-p290'
set :rvm_type, :system
set :bundle_flags, "--deployment"
set :default_environment, {
'PATH' => ENV['PATH'],
'RAILS_ENV' => ENV['RAILS_ENV']
}
set :stages, %w(staging production)
require 'capistrano/ext/multistage'
Esecuzione cap staging deploy
come è, porta ad un errore:
* executing "cd /mnt/data-store/project/releases/shared &&
bundle install --gemfile /mnt/data-store/project/releases/shared/Gemfile
--path /mnt/data-store/project/shared/bundle --deployment --without development test"
** [out :: localhost] The --deployment flag requires a Gemfile.lock.
Please make sure you have checked your Gemfile.lock into version control
before deploying.
... rolling back ...
failed: "env PATH=... RAILS_ENV=staging rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.2-p290' -c 'cd /mnt/data-store/project/releases/shared && bundle install --gemfile /mnt/data-store/project/releases/shared/Gemfile --path /mnt/data-store/project/shared/bundle --deployment --without development test'" on localhost
Gemfile e Gemfile.lock sono nel controllo del codice sorgente . Ho eseguito lo bundle install
localmente per primo per generare il file .lock. Ma il bundler/capistrano punta a/mnt/data-store/project/releases/shared/Gemfile quindi ho copiato manualmente entrambi i file lì. Sono sicuro che sto sbagliando qui. Immagino che dovrebbe essere copiato automaticamente.
deploy Eseguito nuovamente (1) e non sicuro sul fascio installare, aveva anche
Your bundle is complete! It was installed into /mnt/data-store/project/shared/bundle
nell'output.
MA, una delle attività del mio cap esegue un rake. Il risultato è: * Impossibile trovare bcrypt-ruby-3.0.1 in nessuna delle fonti * Provare a eseguire bundle install
.
Procedendo con la mia avventura, ho scoperto che una volta che hai .bundle/config con BUNDLE_PATH: /mnt/data-store/project/shared/bundle
funziona. Ho avuto questa directory, probabilmente creata da bundler, sotto /mnt/data-store/releases/shared/
, quindi ho copiato manualmente nella root dei binari.
Ora, rastrello/rotaie funzionano.
bundle show twitter
mostra .../shared/bundle/ruby/1.9.1/gems/twitter-1.7.1
.
MA, il ridistribuzione mi riporta a (1) perché la directory .bundle non è presente.
domande concrete:
- Ho bisogno di creare/copiare .bundle/config manualmente?
- Devo copiare Gemfile/Gemfile.lock manualmente nella directory condivisa? Cosa succede se aggiungo gemme? Devo tenere due copie o sincronizzarle manualmente/programmaticamente?
- COSA STO FACENDO SBAGLIATO?
Grazie!
Grazie! Non riesco ancora a capire perché "current_release" punti al percorso condiviso anziché alla versione attuale. – elado