Ich versuche, eine Ruby On Rails-App sowohl für die Bereitstellung als auch für die Produktion mit Capistrano bereitzustellen.Capistrano Bereitstellung in Staging und Produktion
Der einzige Unterschied zwischen den beiden ist die: Domäne und das: Repository
ich diese Anleitung hier gefolgt sind: https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension
ich um das Netz gesucht und alles, was ich finden sind Artikel, die im Grunde wieder aufwärmen, was Ich habe oben.
Ich habe versucht, nur die Einstellung: Domain und: Repository in der config/deploy/staging.rb und config/deploy/production.rb
Ich habe meine Schreibweisen überprüft, um sicherzustellen, dass ich die Unter dirs Dinkel richtig und die Namen der Dateien.
Lesen Sie diesen Artikel: staging and live app with capistrano es sieht so aus, als ob ich nur in der Lage sein sollte, die Unterschiede hier zu erklären.
Es sieht nicht so aus, als würde die staging.rb-Datei tatsächlich gelesen. Ich habe meine "deploy.rb" geändert, um ein einziges Schimpfwort als erste Zeile zu haben, "cap deploy" gibt mir den erwarteten Fehler.
Stecke ich ein einziges Wort schwören auf die erste Zeile von „staging.rb“ oder „production.rb“ Ich habe den gleichen Fehler:
`method_missing': undefined local variable or method `domain'
Die Linie in Frage:
role :web, domain
weil der Wert nicht aufgenommen wird. Aber sicher sollte es auf dem einzelnen Schimpfwort in staging.rb oder production.rb scheitern und gar nicht laufen?
Wenn ich das: Domain und: Repository zurück in die Hauptdatei "deploy.rb" verschiebe, bekomme ich den Fehler mit dem Schimpfwort. Es sieht also so aus, als könnte ich in den Dateien "staging.rg" und "production.rb" keine Variablen setzen, sondern nur Aufgaben erledigen.
Jede Hilfe wäre viel oder geschätzt werden, denken Sie, ich sollte die Pizza-Lieferung Job nur nehmen ...
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
Und meine config/deploy/staging.rb Datei :
setzenset :domain, 'example.com'
set :repository, "ssh://[email protected]/~/rails/chamonix-mont-blanc.net"
Wenn ich das: Domain und: Repository im Haupt „deploy.rb“ es ist alles schön und gut funktioniert.
Spot auf. Vielen Dank!! Alles funktioniert. Ich werde der Pizza-Lieferfirma sagen, dass ich ihren Job nicht will !! –