2012-08-17 21 views
6

Próbuję wdrożyć aplikację Ruby On Rails zarówno do inscenizacji, jak i produkcji za pomocą Capistrano.Wdrażanie Capistrano do inscenizacji i produkcji

Jedyną różnicą między nimi jest: domena a: repozytorium

Śledzę ten podręcznik tutaj: https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension

Szukałem po sieci i wszystko znajdę to artykuły, które w zasadzie powtarzać co Mam powyżej.

Próbowałem tylko ustawienie: domeny i: repozytorium w config/deploy/staging.rb i config/deploy/production.rb

Sprawdziłem moje pisowni, aby upewnić się, że orkisz pod-katalogi poprawnie i nazwy plików.

Czytanie tego artykułu: staging and live app with capistrano wygląda na to, że powinienem móc zadeklarować różnice tutaj.

Wygląda na to, że plik staging.rb nie jest aktualnie czytany. Zmieniłem plik "deploy.rb", aby w pierwszej linii było jedno przekleństwo, "cap caploy" daje oczekiwany błąd.

Jeśli mogę umieścić jedno przekleństwo na pierwszej linii „staging.rb” lub „production.rb” uzyskać ten sam błąd:

`method_missing': undefined local variable or method `domain' 

Linia na pytanie brzmi:

role :web, domain 

ponieważ wartość nie jest odbierana. Ale na pewno powinien zawieść na pojedynczym przekleństwie w insaging.rb lub production.rb i nie uruchomić w ogóle?

Jeśli przeniesię domenę: i repozytorium z powrotem do głównego pliku "deploy.rb", otrzymam komunikat o błędzie z powodu przekleństwa. Wydaje się więc, że nie mogę ustawiać zmiennych w plikach "staging.rg" i "production.rb", a jedynie wykonywać zadania.

Każda pomoc będzie bardzo doceniane, czy myślisz, że należy po prostu wziąć zadanie dostarczania pizzy ...

deploy.rb:

require 'capistrano/ext/multistage' 
set :stages, %w(production staging) 
set :default_stage, "staging" 

set :user, 'dave' 

set :applicationdir, "~/rails/example.com" 

set :scm, 'git' 

set :git_enable_submodules, 1 # if you have vendored rails 
set :branch, 'master' 
set :git_shallow_clone, 1 
set :scm_verbose, true 

set :keep_releases, 5 
after "deploy:update", "deploy:cleanup" 

# roles (servers) 
role :web, domain 
role :app, domain 
role :db, domain, :primary => true 

after "deploy", "deploy:migrate" 

# deploy config 
set :deploy_to, applicationdir 
set :deploy_via, :export 
# set :rake, 'bundle exec rake' 

# additional settings 
default_run_options[:pty] = true # Forgo errors when deploying from windows 
set :ssh_options, {:forward_agent => true} 
#ssh_options[:keys] = %w(/home/user/.ssh/id_rsa)   # If you are using ssh_keysset :chmod755, "app config db lib public vendor script script/* public/disp*"set :use_sudo, false 


# Passenger 
namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 
    task :restart, :roles => :app, :except => { :no_release => true } do 
     run " touch #{File.join(current_path,'tmp','restart.txt')}" 
    end 
end 

A mój config/wdrożyć plik/staging.rb :

set :domain, 'example.com' 
set :repository, "ssh://[email protected]/~/rails/chamonix-mont-blanc.net" 

Jeśli umieściłem domenę i: repozytorium w głównym pliku "deploy.rb", wszystko działa poprawnie i elegancko.

Odpowiedz

5

Move roles do pliku staging.rb tak, że wygląda jak

set :domain, 'example.com' 

role :web, domain 
role :app, domain 
role :db, domain, :primary => true 

set :repository, "ssh://[email protected]/~/rails/chamonix-mont-blanc.net" 

Usuń kod ról z deploy.rb. Ponadto będziesz musiał zmodyfikować swój production.rb w podobny sposób.

+7

Spot na. Dziękuję Ci bardzo!! Wszystko działa. Powiem pizzerce, że nie chcę ich pracy !! –

Powiązane problemy