2015-03-11 18 views
12

po próbuję wdrożyć mojej aplikacji poprzez Kapistrana do mojego serwera i ten komunikat o błędzie:Capistrano: powiązany database.yml plik nie istnieje na my.server.ipadress

DEBUG [605f198a] Finished in 0.084 seconds with exit status 1 (failed). 
ERROR linked file /home/deploy/myrailsapp/shared/config/database.yml does not exist on xx.xxx.xx.xxx 
(Backtrace restricted to imported tasks) 
cap aborted! 
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: exit 

SystemExit: exit 

Tasks: TOP => deploy:check:linked_files 
(See full trace by running task with --trace) 
The deploy has failed with an error: Exception while executing as [email protected]: exit 

mój deploy.rb jest:

set :deploy_to, '/home/deploy/myrailsapp' 
set :linked_files, %w{config/database.yml} 
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} 



namespace :deploy do 
    desc 'Restart application' 
    task :restart do 
    on roles(:app), in: :sequence, wait: 5 do 
     execute :touch, release_path.join('tmp/restart.txt') 
    end 
    end 
    after :publishing, 'deploy:restart' 
    after :finishing, 'deploy:cleanup' 
end 


namespace :deploy do 
    after :restart, :clear_cache do 
    on roles(:web), in: :groups, limit: 3, wait: 10 do 
     # Here we can do anything such as: 
     # within release_path do 
     # execute :rake, 'cache:clear' 
     # end 
    end 
    end 
end 

Próbowałem tego tutora https://www.gorails.com/deploy/ubuntu/14.04, to moja pierwsza próba z capistrano.

Odpowiedz

29

Wystarczy ręcznie utworzyć plik /home/deploy/myrailsapp/shared/config/database.yml i dostosować go.

Capistrano nie tworzy (ani nie zarządza) pliku konfiguracyjnego po wyjęciu z pudełka. Tak więc, powinieneś zrobić to ręcznie lub zautomatyzować korzystanie ze swoich własnych skryptów Capistrano, Puppet, , Ansible narzędzi.

+0

Rozglądałem wysokie i niskie staramy się powieść. Twoja wskazówka rozwiązała problem. Dzięki @maxd. – Red

+0

Dla mnie mam plik, ale daje mi ten błąd. Otworzyłem go nawet na vim! Dlaczego to? –

4

Ponieważ wolę mieć moje pliki centralne na serwerze wdrażania, używam tego zadania do wdrażania plików konfiguracyjnych z katalogu konfiguracyjnego do katalogu plików połączonych na serwerze aplikacji.

Wykorzystuje to rsync, ponieważ używam capistrano-rsync do wdrożenia.

namespace :deploy do 

    task :copy_config do 
    on release_roles :app do |role| 
     fetch(:linked_files).each do |linked_file| 
     user = role.user + "@" if role.user 
     hostname = role.hostname 
     linked_files(shared_path).each do |file| 
      run_locally do 
      execute :rsync, "config/#{file.to_s.gsub(/.*\/(.*)$/,"\\1")}", "#{user}#{hostname}:#{file.to_s.gsub(/(.*)\/[^\/]*$/, "\\1")}/" 
      end 
     end 
     end 
    end 
    end 

end 
before "deploy:check:linked_files", "deploy:copy_config" 
+0

Dzięki! To działa! –

0

Z CAPISTRANO szynach 1.2.3, jak poniżej, dodaj go do deploy.rb

## Linked Files & Directories (Default None): 
set :linked_files, %w{config/database.yml config/secrets.yml config/nginx.conf} 
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}