Ruby 通过capistrano将rails应用程序部署到bluehost时出现参数错误

Ruby 通过capistrano将rails应用程序部署到bluehost时出现参数错误,ruby,git,ruby-on-rails-3.2,capistrano,Ruby,Git,Ruby On Rails 3.2,Capistrano,我已经使用rails构建了一个示例应用程序,并尝试使用capistrano将其部署到bluehost。 但我没有这样做。我遵循了这篇文章中提到的说明 这是我的config/deploy.rb的内容: require 'bundler/capistrano' set :application, "rails_scaffold" # BlueHost SSH user set :user, "username" # App Domain set :domain, "example.com"

我已经使用rails构建了一个示例应用程序,并尝试使用capistrano将其部署到bluehost。 但我没有这样做。我遵循了这篇文章中提到的说明

这是我的config/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" 
但是,当我运行cap deploy:setup命令时,会出现以下错误:

/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)
它说应用程序名必须以下划线或小写字母开头。我的应用程序名看起来是有效的。 我做错了什么


谢谢

您的一些
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\u via
deploy\u to
前面的冒号)

如果我们检查包含
:deploy_to
的行中发生的事情,您可以看到为什么它看起来可能与
:application
变量相关:它首先调用
deploy_to
方法(因为您缺少冒号,它看起来像是一个方法调用),而
deploy_to
默认为
“/u/apps/{application}”
中的:

因此,实际上,您的代码正在有效地尝试运行:

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

但是,
“/u/apps/#{application}”
在Capistrano中不是有效的变量名。在这些行中添加冒号可以解决问题。

谢谢您的回复。我一定会试试这个。
set "/u/apps/#{application}", "/home/#{user}/rails_apps/#{application}"