【问题标题】:Capistrano install errorCapistrano 安装错误
【发布时间】:2017-10-04 03:14:03
【问题描述】:

我尝试在我的项目中安装 capistrano gem 并发现错误:

未初始化的常量 Capistrano::Configuration::SSHKit (NameError)

完整日志:

bundle exec cap install
/home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/configuration/server.rb:4:in `<class:Configuration>': uninitialized constant Capistrano::Configuration::SSHKit (NameError)
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/configuration/server.rb:3:in `<module:Capistrano>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/configuration/server.rb:2:in `<top (required)>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/configuration.rb:4:in `require_relative'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/configuration.rb:4:in `<top (required)>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/configuration/filter.rb:1:in `require'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/configuration/filter.rb:1:in `<top (required)>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/dsl.rb:5:in `require'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/dsl.rb:5:in `<top (required)>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/all.rb:11:in `require'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/lib/capistrano/all.rb:11:in `<top (required)>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/bin/cap:2:in `require'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/gems/capistrano-3.9.1/bin/cap:2:in `<top (required)>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/bin/cap:22:in `load'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/bin/cap:22:in `<main>'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
from /home/ubuntu/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'

Ubuntu 服务器 16.04 红宝石 2.4.0 导轨 5.1.4

如何解决?

UPD 1

ubuntu@rails-serv-1:/var/www/cargo$ bundle exec gem list cap ssh

*** LOCAL GEMS ***

capistrano (3.9.1)
capistrano-bundler (1.3.0)
capistrano-rails (1.3.0)
capistrano-rvm (0.1.2)
capistrano3-puma (3.1.1)
capybara (2.15.2)
invisible_captcha (0.9.3)

*** LOCAL GEMS ***

airbrussh (1.3.0)
net-ssh (4.2.0)
sshkit (1.14.0)

【问题讨论】:

  • 你能包含这个命令的输出吗? bundle exec gem list cap ssh
  • @MattBrictson 我添加了输出。
  • 您的项目中是否已有Capfile?如果是这样,请在运行 bundle exec cap install 之前将其删除。这有什么不同吗?
  • @MattBrictson 不,我的项目中没有 Capfile。

标签: ruby-on-rails capistrano


【解决方案1】:

我有相同的 Capistrano 版本,bundle exec cap install 适合我。

*** LOCAL GEMS ***

capistrano (3.9.1)

*** LOCAL GEMS ***

airbrussh (1.3.0)
net-ssh (4.2.0)
sshkit (1.14.0)

我唯一的猜测是您的 Gemfile 中的额外 capistrano- gem 会导致问题。

如果您还没有这样做,我建议您将 require: false 添加到您的 Gemfile 中以获取 所有 Capistrano 相关的 gem。

例如

gem "capistrano", require: false
gem "capistrano-bundler", require: false
gem "capistrano-rails", require: false
gem "capistrano-rvm", require: false
gem "capistrano3-puma", require: false

另外,我建议完全删除capistrano-rvm。那颗宝石很旧,可能不再与 Capistrano 一起使用,而且似乎已被废弃:

https://github.com/capistrano/rvm/issues/83

【讨论】:

  • 你有什么版本的 ruby​​ 和 rails?
  • 这应该没什么区别,因为 Capistrano 根本不使用 Rails gems。我用 Rails 5.0.6 和 5.1.4 进行了测试,cap install 对两者都很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多