ruby-on-rails - Capistrano 无法加载此类文件 -- net/scp (LoadError)
问题描述
尝试在 DigitalOcean 上部署我的项目时出错。当我通过 deploy@ip 运行命令“cap production deploy”时 - 得到这个错误:
/usr/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- net/scp (LoadError)
这是我本地路径中的 gemfile 的一部分:
gem 'capistrano', '~> 3.11', require: "net-scp"
gem 'capistrano-rails', '~> 1.4'
gem 'capistrano-passenger', '~> 0.2.0'
gem 'capistrano-rbenv', '~> 2.1', '>= 2.1.4'
gem "capistrano-sidekiq"
gem "capistrano-db-tasks", require: false
gem 'net-scp', '~> 3.0'
gem 'net-ssh', '~> 6.1'
如您所见 - 我的所有 gem 都已安装,但这个错误仍然困扰着我。注意:但正如您从错误字符串中看到的那样 - 它还放置了旧 ruby (ruby/2.7.0) 的路径,所以问题可能出在此,但我不确定。
解决方案
使用以下 gem 修改您的 gem 文件。
在开发组中添加这个宝石。
gem 'capistrano', '~> 3.10', require: false
gem 'capistrano-rails', '~> 1.5', require: false
gem 'capistrano-rbenv', '~> 2.1'
gem 'capistrano-db-tasks', require: false
之后运行: -
bundle install
然后在终端中运行以下命令生成部署配置文件。
bundle exec cap install
推荐阅读
- object - 使用英特尔实感进行对象检测
- azure - 通过 PowerShell 获取 Azure 中资源的资源创建者
- javascript - 不使用 Safari 浏览器加载 CSS
- java - 带有枚举的通用输入参数编译错误
- python - ModuleNotFoundError:没有名为“cStringIO”的模块·
- javascript - 如何在 Html 的服务器端分页期间保存检查列表值?
- flutter - Flutter 构造函数参数
- wso2 - 如何将第一页从发布者更改为存储并将非 https 地址重定向到 https
- matplotlib - Matplotlib Pylot - 图像以低分辨率显示(像素到像素)
- python - 如何构建一个在轮询时不重复完全相同消息的 Python 日志记录函数