【发布时间】:2014-07-12 19:07:33
【问题描述】:
哪种方式,我可以通过远程服务器上的 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
【问题讨论】:
-
抱歉,我没有仔细阅读回复:P - 您是否尝试过添加 capistrano 任务
execute :rake, ENV['task']? -
@UriAgassi thx 发表评论,我做了一些修复并将其添加到问题中)
-
@UriAgassi 是的,它的工作,但唯一的方式,就像我上面描述的那样
标签: ruby-on-rails ruby rake capistrano capistrano3