【问题标题】:connection failed for: domain.com (NoMethodError: undefined method `>' for true:TrueClass)连接失败:domain.com(NoMethodError:未定义方法 `>' for true:TrueClass)
【发布时间】:2011-11-12 02:28:05
【问题描述】:

我不知道发生了什么,这让我没毛了!

我试图让 cap:deploy 命令工作,然后,不知从何而来,我得到了这个错误: connection failed for: domain.com (NoMethodError: undefined method>' for true:TrueClass) `

我根本没有编辑代码。为了找出问题所在,我开始在 deploy.rb 文件中逐行删除,我意识到如果这 3 行中的至少一行不存在,则不会发生错误。

role :web, "domain.com"
role :app, "domain.com"
role :db,  "domain.com", :primary => true

然后当然它给了我另一个关于服务器不存在的错误。知道什么可能给我这个错误吗?

就在出现此错误之前,我试图将其设置为正确...

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"
set :rvm_bin_path, "$HOME/.rvm/bin/"
set :rvm_path, "/usr/local/rvm/"
set :rvm_ruby_string, '1.9.2-p290'
set :rvm_type, :user

但如果我删除这些行并再次运行 cap deploy:setup 它仍然会给我同样的错误。

不知道是什么原因造成的!

【问题讨论】:

  • 发布完整的回溯 - 这样我们就可以知道 > 从哪里传播
  • 从角色 :db 中删除 , :primary => true 会发生什么?
  • 发现错误!!谢谢斯蒂芬,在阅读了您的评论后,我检查了部署文件中包含“true”的所有内容,发现我设置了 :verbose, true 而不是 set :scm_verbose, true。
  • @StephRose 详细说明一个答案,这样我就可以付给你赏金
  • 我做到了。谢谢,@leonel,很高兴你知道在哪里照顾我们这么远!

标签: ruby-on-rails ruby deployment capistrano


【解决方案1】:

每当您看到以下错误提示:

undefined method > for [class]

我通常发现这是由于定义的symbol => value

在这种情况下,你的说是> for true:TrueClass,所以试着去掉, :primary => true

如果这是罪魁祸首,请检查部署文件中的设置,或者查看您定义的符号是否是实际存在/适用的符号,或者您的语法是否正确。

在我的一个案例中,我有一个 if 声明,例如:

XXX, if :symbol > 0 

在导致错误的模型中,我需要将其转换为Proc

(我扩展了一点,以防其他人出于不同的原因使用相同的未定义方法。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多