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

标签 ruby-on-rails ruby rake capistrano capistrano3

哪种方式,我可以通过远程服务器上的 capistrano 运行 rake 命令。

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

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

在本地服务器上一切正常 - 我只是运行 rake reparse:example1 它的工作(正确填充数据库)。 所以问题是 - 部署后如何在真实主机上运行此命令?

我正在使用 rails 4.1 + capistrano 3。

附言网站上的例子对我不起作用 How do I run a rake task from Capistrano?

如果我尝试cap production rake:invoke task=reparse:land 它失败了:

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

一些修复

namespace :somenamespace do
  task :runrake do  
    on roles(:all), in: :sequence, wait: 5 do      
      within release_path do
        execute :rake, ENV['task'], "RAILS_ENV=production"
      end 
    end
  end
end

以这种方式开始执行

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

namespace :somenamespace do
  task :runrake do
    on roles(:all) do
      within release_path do
        with rails_env: fetch(:rails_env) do
          execute :rake, ask :task
        end
      end 
    end
  end
end

关于ruby-on-rails - 如何通过 capistrano 3 运行自定义 rake 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828950/

相关文章:

windows - ruby win32api & 结构 (VerQueryValue)

ruby-on-rails - Thinking Sphinx——在配置文件中找不到索引

jQuery insertBefore 和单引号问题

ruby-on-rails - 如何为法语设置 Rails?

ruby-on-rails - 与非类/模块错误相比

mysql - 如何检查ActiveRecord中的 "autocommit"值

ruby-on-rails - 类型安全的 Rails 3 无表模型

ruby - %{} 和 %s 有什么区别?

ruby-on-rails - Ruby on Rails : Migrations: how do I merge to tables into a new table?

ruby - rake 中止!语法错误,意外的 tLSHFT