2014-01-21 2 views
2

개발 모드에서 레일 4 애플리케이션을 배포하려고합니다. cap deployment : setup을 시도하면 스테이징이 설정되지 않는다고합니다. 다음으로 제안에 따라 뚜껑 개발을 시도했는데 다음 오류가 발생했습니다. 배포를 도와주세요.Ruby on Rails : Capistrano 3 배포 오류

command: cap development deploy 

cap aborted! 
wrong number of arguments (5 for 1..2) 
/home/divya/.rvm/gems/ruby-2.1.0/gems/capistrano-3.1.0/lib/capistrano/dsl/env.rb:38:in `server' 
config/deploy/development.rb:5:in `<top (required)>' 
/home/divya/.rvm/gems/ruby-2.1.0/gems/capistrano-3.1.0/lib/capistrano/setup.rb:15:in `load' 
/home/divya/.rvm/gems/ruby-2.1.0/gems/capistrano-3.1.0/lib/capistrano/setup.rb:15:in `block (2 levels) in <top (required)>' 
/home/divya/.rvm/gems/ruby-2.1.0/gems/capistrano-3.1.0/lib/capistrano/application.rb:15:in `run' 
/home/divya/.rvm/gems/ruby-2.1.0/gems/capistrano-3.1.0/bin/cap:3:in `<top (required)>' 
/home/divya/.rvm/gems/ruby-2.1.0/bin/cap:23:in `load' 
/home/divya/.rvm/gems/ruby-2.1.0/bin/cap:23:in `<main>' 
/home/divya/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `eval' 
/home/divya/.rvm/gems/ruby-2.1.0/bin/ruby_executable_hooks:15:in `<main>' 
Tasks: TOP => development 
(See full trace by running task with --trace) 

다음 파일 사용 : deploy.rb

set :application, 'timeTracker' 
set :scm, :git 
set :repository, "[email protected]:p/project.git" 
set :user, "r" 
set :scm_passphrase, "r" 
set :branch, "master" 
set :deploy_via, :remote_cache 
set :stages, ["staging", "development", "production"] 
set :default_stage, "development" 
#set :rvm_ruby_string,   :local 
#before 'deploy:setup', 'rvm:install_rvm' 
#set :default_shell, "/bin/bash -l" 
#set :rvm_type, :user 
#set :rvm_install_with_sudo, true 
#default_run_options[:pty] = true 
#ssh_options[:forward_agent] = true 
#ssh_options[:auth_methods] = "publickey" 
# ssh_options[:keys] = "il.pem" 
# set :ssh_options, {:auth_methods => "publickey"} 
# set :ssh_options, {:keys => ["/home/c/mbk.pem"]} 

# default_environment['PATH'] = '/usr/local/rvm/gems/ruby-1.9.3-p392:$PATH' 
# default_environment['GEM_PATH']= '/usr/local/rvm/gems/ruby-1.9.3-p392' 
# set :location, "http://ec2-23-23-59-41.compute-1.amazonaws.com" 
# set :use_sudo, false 
# ssh_options[:keys] = ["/home/c/ec2/mbk.pem"] 

설정/development.rb

require "rvm/capistrano" 
require 'capistrano/bundler' 
server "IP", :app, :web, :db, :primary => true 
set :deploy_to, "/var/www/t/" 
set :branch, 'master' 
set :scm_verbose, true 
set :use_sudo, false 
set :rails_env, "development" #added for delayed job 
set :rvm_type, :system 
after 'deploy:update_code' do 
# run "cd #{release_path}; RAILS_ENV=production rake assets:precompile" 
run "cd #{release_path};" 
run "mkdir -p #{release_path}/tmp/cache;" 
run "chmod -R 777 #{release_path}/tmp/cache;" 
run "mkdir -p #{release_path}/public/uploads;" 
run "chmod -R 777 #{release_path}/public/uploads" 
run "rm -rf #{release_path}/public/system" 
# run "unlink #{release_path}/public/db_admin" 
# run "unlink #{release_path}/public/blog" 
run "ln -s #{shared_path}/system/ #{release_path}/public/" 
run "ln -s '/var/www/blog' #{release_path}/public/" 
run "mv #{release_path}/config/database.example.yml #{release_path}/config/database.yml" 

run "cd #{release_path} && bundle install" 
run "cd #{release_path} && rake db:create" 
run "cd #{release_path} && rake db:migrate" 
# run "cd #{release_path} && RAILS_ENV=production rake assets:precompile" 
# run "chown -R www-data:www-data #{release_path}/*" 
# run "chmod -R 777 #{release_path}/log" 
end 

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

답변

16
wrong number of arguments (5 for 1..2) 
/home/divya/.rvm/gems/ruby-2.1.0/gems/capistrano-3.1.0/lib/capistrano/dsl/env.rb:38:in `server' 

그것은 당신이 너무 전달하는 당신을 말하고에 대한 많은 논증. 두 번째로 첫 번째 라인을 교체하십시오 :

server "151.236.218.85", :app, :web, :db, :primary => true 
server "151.236.218.85", roles: [:app, :web, :db], :primary => true 

그것은 당신이 청소기 찾을 경우 roles: %w(app web db)를 사용하는 것도 가능합니다.

+0

감사합니다. 도움이되었습니다. –