【问题标题】:capistrano 3.0.1 Don't know how to build task 'starting' when using capistrano/rails/assetscapistrano 3.0.1 使用 capistrano/rails/assets 时不知道如何构建任务“开始”
【发布时间】:2013-12-22 10:05:08
【问题描述】:

尝试使用 Capistrano 3.0.1 进行部署时,出现以下错误:

cap aborted!
Don't know how to build task 'starting'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/dsl/task_enhancements.rb:5:in `before'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/tasks/assets.rake:9:in `block in <top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/tasks/assets.rake:8:in `<top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/rails/assets.rb:1:in `load'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/rails/assets.rb:1:in `<top (required)>'
/Users/user/Documents/rails/shop/Capfile:18:in `require'
/Users/user/Documents/rails/shop/Capfile:18:in `<top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/application.rb:22:in `load_rakefile'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/application.rb:12:in `run'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/bin/cap:3:in `<top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/cap:23:in `load'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/cap:23:in `<main>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)

当我取消注释用于加载资产和在 Capfile 中执行迁移的要求行时,这似乎已经开始:

  # Load DSL and Setup Up Stages
  require 'capistrano/setup'

  # Includes tasks from other gems included in your Gemfile
  #
  # require 'capistrano/rvm'
  # require 'capistrano/rbenv'
  # require 'capistrano/chruby'
  # require 'capistrano/bundler'
  require 'capistrano/rails/assets'
  require 'capistrano/rails/migrations'

  # Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
  Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }

并将宝石添加到 Gemfile:

gem 'capistrano',  '~> 3.0.0'
gem 'capistrano-rails', '~> 1.1.0'

就像在默认 capistrano 任务之前加载所需的资产一样,它们会失败,因为尚未定义加载 starting 的时间。我不知道如何解决这个问题,

有什么想法吗?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 capistrano asset-pipeline


    【解决方案1】:

    “不知道如何构建任务”错误可能是由于 Capfile 中的“require”行错误的顺序造成的。

    【讨论】:

      【解决方案2】:

      Capfile 漏掉了一行:

       require 'capistrano/deploy'
      

      这负责加载部署任务。

      缺少该要求,任务将无法加载并且它们将丢失。

      【讨论】:

        【解决方案3】:

        试试 master 的 capistrano,也试试 master 的 rails gem。

        两者都有一个新版本,所以最好还是抢先一步:

        gem 'capistrano', github: 'capistrano/capistrano', ref: 'master'
        gem 'capistrano-rails', github: 'capistrano/rails', ref: 'master'
        

        【讨论】:

        • 谢谢,这并没有改善,现在它停止了:Don't know how to build task 'deploy:updated',调用自:/Users/user/.rvm/gems/ruby-2.0.0-p353/bundler/gems/rails-e12513279ad4/lib/capistrano/tasks/assets.rake:48:in block in '`
        • 我认为我的 Capfile 缺少 require 'capistrano/deploy' 行,我一定是不小心删除了,这阻止了 Capistrano 加载任务。所以在声明 afterbefore 时确实没有找到它们。
        【解决方案4】:

        我确实运行了cap -T 并得到了同样的错误。我已经开始去谷歌寻找解决方案,直到我意识到这个项目根本不是为 capistrano 设置的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-18
          • 2014-06-11
          • 1970-01-01
          • 2017-01-02
          • 2014-12-17
          • 1970-01-01
          • 2013-12-23
          相关资源
          最近更新 更多