Rails 4,Capistrano 3.0.0,无法加载这样的文件——部署

Posted

技术标签:

【中文标题】Rails 4,Capistrano 3.0.0,无法加载这样的文件——部署【英文标题】:Rails 4, Capistrano 3.0.0, cannot load such file -- deploy 【发布时间】:2013-10-15 09:11:20 【问题描述】:

我刚刚运行了 bundle update 并且 capistrano 已更新到 3.0.0 但现在当我运行 cap deploy 时出现错误并且无法弄清楚如何解决这个问题。在这次更新之前,我每天都在更新我的服务器,没有问题。

cap aborted!
cannot load such file -- deploy
/home/mark/rails_apps/myapp/Capfile:1:in `load'
/home/mark/rails_apps/myapp/Capfile:1:in `<top (required)>'

头文件

load 'deploy'
load 'deploy/assets'
load 'config/deploy' # remove this line to skip loading any of the default tasks

【问题讨论】:

Capistrano v3 与之前的版本完全不兼容。但是在您准备好尝试之前,继续使用 v2 是完全可以的。 我怎样才能知道我需要升级哪些步骤或降级到哪个版本? Capistrano官网:capistranorb.com版本历史:rubygems.org/gems/capistrano/versions 我将 gemfile 更改为 group :development do gem 'capistrano', '~> 2.15' end 但同样的错误。 似乎无法加载任何文件。 【参考方案1】:

我不得不 gem 卸载 capistrano 并选择了 3.0.0 版本

(即将 gem 降级到 2.x)

【讨论】:

谢谢。但是,在我卸载它之前,为什么一切都坏了?我什至没有使用那个版本,它只是偶然在捆绑器中。 您显然运行了捆绑更新?我现在已将我的版本修复为 2.15.5。所以在我看到有关该主题的教程之前,它不会再次更新。 我遇到了同样的问题,将其降级到 capistrano 2.+ 是解决方案 你的意思是 Capistrano 3.0 不支持资产预编译? Capistrano 3.0 中必须有一种方法来支持它【参考方案2】:

我不得不跑 gem uninstall capistrano

然后更新 gemfile gem 'capistrano', '~&gt; 2.15'

然后运行以重新安装正确的版本 bundle update capistrano

【讨论】:

谢谢!我有多个版本的 capistrano。当我删除 1 个版本上限时开始工作。【参考方案3】:

确保您使用的是 bundle exec(很可能您有多个 gem 版本的 capistrano)

bundle exec cap -T

【讨论】:

使用bundle exec cap production deploy:check 使其按预期通过!泰!【参考方案4】:

不要降级到 Capistrano 2,而是使用当前版本的新配置。

require "capistrano/bundler"
require "capistrano/rails/assets"
require "capistrano/rails/migrations"

See also this nice posting,总结了 Capistrano 2 和 3 的区别。

【讨论】:

【参考方案5】:

将相关宝石添加到您的Gemfile

即对于

gem 'capistrano-bundler' # for capistrano/bundler
gem 'capistrano-rails' # for capistrano/rails/*

不要为此降级到 2.x。

【讨论】:

@sixty4bit 请详细说明,或者打开一个新的 *** 问题。 已经过了几个星期,但我想我必须添加 require: false 以避免加载错误。请注意,升级指南指出:capistranorb.com/documentation/upgrading【参考方案6】:

我今天遇到了这个问题,上面 Pastullo 的解决方案修复了它,只是我必须运行 gem uninstall capistrano(正如 markhorrocks 回答的那样)而不是 bundle uninstall capistrano。

我还发现这个关于 bundler 的博客非常有用:http://viget.com/extend/bundler-best-practices

感谢您分享此内容,因为它为我节省了大量时间。 x

【讨论】:

【参考方案7】:

我发现解决此问题的最快方法是备份 cap 文件(Capfile、config/deploy.rb 和 config/deploy/*.rb),然后重新 capify(它不再称为“capify”):

bundle exec cap install STAGES=staging,production

然后从备份中重新创建您的 cap 文件。完成此操作将花费您 5 分钟,您将完成 Capistrano 升级的主要障碍。

【讨论】:

【参考方案8】:

我用过

bundle exec cap production deploy

而不仅仅是cap production deploy

【讨论】:

【参考方案9】:

就我而言,我已经更改了我的项目 ruby​​ 版本。可能是bundle 也在这里工作。

但我把它改回原来的样子。

例如:

rbenv local 2.4.1

【讨论】:

以上是关于Rails 4,Capistrano 3.0.0,无法加载这样的文件——部署的主要内容,如果未能解决你的问题,请参考以下文章

rails 4.1 无法通过 capistrano 3 部署

ruby 使用Capistrano 3和rsync进行本地Rails 4资产预编译

Rails 3 -- Bundler/Capistrano 错误

无法通过 capistrano 部署 rails 5 应用程序

资产预编译 Capistrano 3.4

Capistrano 部署 Rails 应用程序 - 如何处理长时间迁移?