ruby-on-rails - capistrano3 : Don't know how to build task 'deploy:create_db'

标签 ruby-on-rails ruby rake capistrano

我使用 capistrano3 部署我的 Rails 应用。

部署.rb

namespace :deploy do
  after "deploy", "deploy:create_db"
  after "deploy", "deploy:migrate"
  after "finishing", "deploy:restart"

  task :restart do
    on roles(:web) do
        execute "mkdir -p #{current_path}/tmp"
        execute "touch #{current_path}/tmp/restart.txt"
    end
  end

  task :create_db do
    on roles(:web) do
      execute "cd #{current_path}; bundle exec rake db:create RAILS_ENV=#{rails_env}"
    end
  end

end

当我运行 cap -T 时,出现如下错误:

(Backtrace restricted to imported tasks)
cap aborted!
Don't know how to build task 'deploy:create_db'

(See full trace by running task with --trace)

cap -T --trace

** Invoke load:defaults (first_time)
** Execute load:defaults
cap aborted!
Don't know how to build task 'deploy:create_db'
/Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task_manager.rb:62:in `[]'
/Library/Ruby/Gems/2.0.0/gems/rake-10.4.2/lib/rake/task.rb:353:in `[]'
/Library/Ruby/Gems/2.0.0/gems/capistrano-3.3.5/lib/capistrano/dsl/task_enhancements.rb:12:in `after'
/Users/liuxingqi/Public/Spar/config/deploy.rb:53:in `block in <top (required)>'

希望有人能帮助我,在此先感谢!!!

最佳答案

我认为你应该先定义任务...

试试这个:

namespace :deploy do

  task :restart do
    on roles(:web) do
      execute "mkdir -p #{current_path}/tmp"
      execute "touch #{current_path}/tmp/restart.txt"
    end
  end

  task :create_db do
    on roles(:web) do
      execute "cd #{current_path}; bundle exec rake db:create RAILS_ENV=#{rails_env}"
    end
  end

  after "deploy", "deploy:create_db"
  after "deploy", "deploy:migrate"
  after "finishing", "deploy:restart"
end

关于ruby-on-rails - capistrano3 : Don't know how to build task 'deploy:create_db' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28146998/

相关文章:

ruby-on-rails - 为深层嵌套模型创建工厂

ruby-on-rails - rails : submit form with nested attributes throws 'couldn' t find entity with id=xxx'

ruby-on-rails - 在没有 rails 环境的情况下加载 resque worker?

ruby - 如何在 Rails 之外的 Ruby 项目上加载 ActiveRecord 数据库任务?

ruby - 如何在 Rake 任务依赖项中使用命名空间?

ruby-on-rails - Rails 没有将用户数据输入到 postgresql

ruby-on-rails - link_to 中的非 ascii 字符导致应用程序在 Internet Explorer 9 中的 Rails 应用程序中失败

ruby - 将发布数据传递到 Sinatra 中的其他页面

ruby-on-rails - Ruby on Rails 的 Facebook gem

javascript - Skrollr 无法在 Ruby on Rails 4 中工作