我想讓Capistrano第一次啓動並在Rails應用程序中運行。我有一臺運行Ubuntu 12.04的Linux服務器,nginx,unicorn和rails,但是,我似乎遇到了一些問題。我也使用Capistrano 3.0.0,rails 3.2.14,bundler 1.4.0 & ruby 1.9.3p448使用RVM。Capistrano的未定義方法實例::配置:類
我只有一個生產階段,在這個時間點上,我只關心Capistrano與我的服務器通信,並從github推送我的代碼(沒有遷移和捆綁等等)。
當我嘗試的命令cap production deploy:check
或cap production deploy:setup
(這似乎是過時?)下面的設置,我收到以下錯誤信息:
我真的不知道從哪裏開始對這個錯誤,並谷歌不建議太多。我曾嘗試添加rvm-capistrano
寶石,但無濟於事。我如何修改我的代碼來解決這個錯誤?
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'
部署/ 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 }
編輯看着違規l在在bundler中的capistrano.rb中,它提到將require'bundler/deployment'添加到deploy.rb中,似乎它已經擺脫了capistrano實例錯誤。
注意降級到capistrano 2.15.5這擺脫了錯誤。
爲我修好了,謝謝。 – Asciant
我真的不認爲回到v2更容易。首先,值得嘗試重新開始一次cap安裝(儘管首先重新制作deploy.rb,production.rb和capifile文件!),然後再添加一些內容直到它工作。另外,我通過使用capistrano 3.1來解決這個問題。我關於capistrano 3.3.5的問題。 – yekta
@yekta這個問題在2013年被問到。就在第3章發佈時。在那個時候,他會更容易回到第2版,因爲沒有太多的幫助。 –