ruby-on-rails – 如何通过capistrano 3运行自定义耙子任务?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何通过capistrano 3运行自定义耙子任务?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
哪个方式,我可以通过capistrano远程服务器上运行rake命令.

例如我有一个lib / task / reparse.rake与一些方法

  1. desc "it's take csv file,makes some changes and fill db with this info"
  2. task :example1 => :environment do
  3. require 'csv'
  4. rows_to_insert = []
  5. # some actions
  6. # ...
  7. end

在本地服务器上都很好 – 我只是运行rake reparse:example1
它的工作(正确填充db).
所以问题是 – 在实际的托管之后如何运行这个命令?

我使用轨道4.1 capistrano 3.

附:网站上的例子不适合我
How do I run a rake task from Capistrano?

如果我尝试盖生产耙:调用任务= reparse:土地
它失败了:

  1. cap aborted!
  2. Don't know how to build task 'rake:invoke'

一些修复

  1. namespace :somenamespace do
  2. task :runrake do
  3. on roles(:all),in: :sequence,wait: 5 do
  4. within release_path do
  5. execute :rake,ENV['task'],"RAILS_ENV=production"
  6. end
  7. end
  8. end
  9. end

以这种方式开始执行

  1. cap production somenamespace:runrake task=custom_task_file:custom_method1

解决方法

基于capistrano / rails gem: https://github.com/capistrano/rails/blob/master/lib/capistrano/tasks/migrations.rake
  1. namespace :somenamespace do
  2. task :runrake do
  3. on roles(:all) do
  4. within release_path do
  5. with rails_env: fetch(:rails_env) do
  6. execute :rake,ask :task
  7. end
  8. end
  9. end
  10. end
  11. end

猜你在找的Ruby相关文章