Próbuję uruchomić Capistrano i uruchomić go po raz pierwszy w aplikacji rails. Mam serwer linuksowy z systemem Ubuntu 12.04, nginx, jednorożcem i szynami, jednak wydaje mi się, że mam kilka problemów. Używam również Capistrano 3.0.0, rails 3.2.14, bundler 1.4.0 & ruby 1.9.3p448 używając RVM.Niezdefiniowana metoda "instance" dla Capistrano :: Configuration: Class
Mam tylko etap produkcji i teraz zajmuję się tylko komunikowaniem się Capistrano z moim serwerem i przesuwaniem mojego kodu z github (jeszcze nie ma migracji i pakowania itp.).
Kiedy próbuję polecenie cap production deploy:check
lub cap production deploy:setup
(co wydaje się być przestarzałe?) O poniższej konfiguracji, pojawia się następujący msg błędzie:
nie jestem pewien, gdzie zacząć o tym błędzie, a Google nie sugeruje zbyt wiele. Próbowałem dodać klejnot rvm-capistrano
, ale bez skutku. Jak mogę zmienić mój kod, aby rozwiązać ten błąd?
cap aborted!
undefined method `instance' for Capistrano::Configuration:Class
/Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/bundler-1.4.0.rc.1/lib/bundler/capistrano.rb:11:in `<top (required)>'
config/deploy.rb:1:in `<top (required)>'
/Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/lib/capistrano/setup.rb:12:in `load'
/Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/lib/capistrano/setup.rb:12:in `block (2 levels) in <top (required)>'
/Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/lib/capistrano/application.rb:12:in `run'
/Users/andrew/.rvm/gems/ruby-1.9.3-p448/gems/capistrano-3.0.0/bin/cap:3:in `<top (required)>'
/Users/andrew/.rvm/gems/ruby-1.9.3-p448/bin/cap:23:in `load'
/Users/andrew/.rvm/gems/ruby-1.9.3-p448/bin/cap:23:in `<main>'
Tasks: TOP => production
(See full trace by running task with --trace)
deploy.rb
require "bundler/capistrano"
set :stages, %w(staging production)
set :default_stage, "production"
set :application, "my_app"
set :user, "andrew"
set :scm, "git"
set :repository, "https://github.com/my_repo/#{application}"
set :branch, "master"
set :deploy_to, "/home/rails/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
after "deploy", "deploy:cleanup" # keep only the last 5 releases
namespace :deploy do
task :restart, roles: :app do
run "touch #{current_path}tmp/restart.txt"
end
end
after :finishing, 'deploy:cleanup'
wdrożyć/production.rb
#Real IP ommitted
server "10.2.32.68", :web, :app, :db, primary: true
Capfile
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Includes default deployment tasks
require 'capistrano/deploy'
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
# require 'capistrano/bundler'
# require 'capistrano/rails/assets'
# require 'capistrano/rails/migrations'
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
EDIT Po zapoznaniu się z naruszającego l ine w capistrano.rb wewnątrz bundler wspomina o dodaniu wymagać "bundler/deployment" do deploy.rb, które wydawało się pozbyć błędu instancji capistrano.
UWAGA Zdegradowana do Capistrano 2.15.5, która pozbyła się błędów.
Naprawiono to dla mnie, dzięki. – Asciant
Naprawdę nie sądzę, aby powrót do wersji 2 był łatwiejszy. Najpierw warto zacząć od nowa z instalacją cap (ale najpierw wykonaj kopię zapasową plików deploy.rb, production.rb i capifile!), A następnie dodaj elementy z powrotem, dopóki nie zadziała. Naprawiłem ten problem za pomocą capistrano 3.1. I kwestia na capistrano 3.3.5. – yekta
@yekta pytanie zadano w 2013 r. Właśnie wtedy, gdy uruchomiono limit 3. W tym momencie łatwiej byłoby mu wrócić do wersji 2, ponieważ niewiele było pomocy. –