2013-05-07 2 views
2

У меня есть пример приложения с использованием рельсов и попытка его развертывания с использованием capistrano для bluehost. Но я не могу этого сделать. Я следовал инструкциям, упомянутые в этом http://vasil-y.com/2012/08/21/rails-capistrano-git-bluehost/Ошибка аргумента при развертывании приложения rails через capistrano to bluehost

Это содержимое моей конфигурации/deploy.rb:

require 'bundler/capistrano' 

set :application, "rails_scaffold" 

# BlueHost SSH user 
set :user, "username" 

# App Domain 
set :domain, "example.com" 

# We don't need sudo on BlueHost 
set :use_sudo, false 

# git is our SCM 
set :scm, :git 

# master is our default git branch 
set :branch, "master" 

# Use local git repository 
set :repository, "#{domain}:/home/#{user}/rails_apps/#{application}" 
set :local_repository, "." 

# Checkout, compress and send a local copy 
set deploy_via, :copy 
set deploy_to, "/home/#{user}/rails_apps/#{application}" 

# We have all components of the app on the same server 
server domain, :app, :web, :db, :primary => true 

namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 

    # Touch tmp/restart.txt to tell Phusion Passenger about new version 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "touch #{File.join(current_path, 'tmp', 'restart.txt')}" 
    end 
end 

# Clean-up old releases 
after "deploy:restart", "deploy:cleanup" 

Но когда я запускаю колпачок развёртывании: команду установки, я получаю следующее сообщение об ошибке:

/home/swaroop/.rvm/gems/ruby-1.9.3-p362/gems/capistrano-2.14.2/lib/capistrano/configuration/variables.rb:22:in `set': invalid variable `/u/apps/rails_scaffold' (variables must begin with an underscore, or a lower-case letter) (ArgumentError) 

Сообщается, что имя приложения должно начинаться с символов нижнего или нижнего регистра. И мое имя приложения выглядит так, как будто оно действительно. Что я здесь делаю неправильно?

Спасибо

ответ

2

Пару ваших set звонков аргументы, которые не являются символами:

set deploy_via, :copy 
set deploy_to, "/home/#{user}/rails_apps/#{application}" 

Они должны быть:

set :deploy_via, :copy 
set :deploy_to, "/home/#{user}/rails_apps/#{application}" 

(Примечание двоеточия перед тем deploy_via и deploy_to)

Вы можете понять, почему он может выглядеть связанным с вашей переменной :application, если мы проверим, что происходит в строке, содержащей :deploy_to: сначала он вызывает метод deploy_to (поскольку вам не хватает двоеточия, это похоже на вызов метода) и deploy_to по умолчанию к "/u/apps/#{application}" в Capistrano source code:

_cset(:deploy_to) { "/u/apps/#{application}" } 

Так на самом деле, ваш код эффективно пытается пытается запустить это:

set "/u/apps/#{application}", "/home/#{user}/rails_apps/#{application}" 

но "/u/apps/#{application}" не является допустимым именем переменной в Capistrano. Добавление двоеточий к этим строкам должно исправить это.

+1

Благодарим вас за ответ. Определенно попробуем это. – swaroopsm

Смежные вопросы