【问题标题】:Syntax error in Capistrano deploy.rbCapistrano deploy.rb 中的语法错误
【发布时间】:2012-03-16 13:50:11
【问题描述】:

我正在使用 Capistrano 来自动部署 PHP Zend 框架应用程序。我已经取得了一些进展,但一个错误完全让我难过。我能找到的所有 capistrano 食谱示例都使用相同的 URl 样式(此处为示例http://ryanflorence.com/deploying-with-capistrano-without-rails/

在我的 deploy.rb 中,我将存储库 URL 设置如下

set :repository, "ssh://git@github.com/satyamagarwala/app.git"

我收到这个错误,似乎来自上面的行

/Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:93:in `instance_eval': ./config/deploy.rb:12: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' (SyntaxError)
set :repository, "ssh://git@github.com/satyamagarwala...
               ^
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:93:in `load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:172:in `load_from_file'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:89:in `load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:86:in `block in load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:86:in `each'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:86:in `load'
from Capfile:5:in `load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:93:in `instance_eval'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:93:in `load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:172:in `load_from_file'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:89:in `load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:86:in `block in load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:86:in `each'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/configuration/loading.rb:86:in `load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/cli/execute.rb:65:in `block in load_recipes'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/cli/execute.rb:65:in `each'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/cli/execute.rb:65:in `load_recipes'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/cli/execute.rb:31:in `execute!'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/lib/capistrano/cli/execute.rb:14:in `execute'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/gems/capistrano-2.11.2/bin/cap:4:in `<top (required)>'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/bin/cap:19:in `load'
from /Users/satyam/.rvm/gems/ruby-1.9.2-p180/bin/cap:19:in `<main>'

我看到这个线程syntax error, unexpected ':' 正在谈论如何将 : 误认为是分隔符。我尝试将 git URL 放在括号中,但这似乎不起作用。

感谢您的帮助!

萨蒂亚姆

编辑

我拼命尝试以下方法

set :repository, "abcd" 

它给了我完全相同的错误,这让我认为这不是与冒号相关的语法问题。不知道是什么问题。

【问题讨论】:

    标签: ruby capistrano


    【解决方案1】:

    好吧,这听起来可能很荒谬(过去三个小时我一直在与这个作斗争,所以相信我,我现在有点吃惊)。

    这一行是从网页复制过来的

    set :repository, "ssh://git@github.com/satyamagarwala/app.git"
    

    之后的空格似乎是问题所在。我只是碰巧将其删除并再次输入,似乎它解决了问题。我已经通过使用撤消/重做多次重现了该效果。很确定就是这样。我的整个脚本现在按预期工作。

    那里可能有某种隐藏的角色吗?如果有人对此有解释,我很想知道发生了什么。

    【讨论】:

      【解决方案2】:

      您可以删除ssh://,它应该仍然可以工作。

      【讨论】:

      • 请您发布您的 deploy.rb 文件的 sn-p (前几行 set :repo..)?你的红宝石版本是什么?
      • 嗨苏万卡。请看看我的回答。尽管我不知道为什么空格字符会导致问题,但我设法解决了这个问题。
      猜你喜欢
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多