我可以通过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。
P.S. 网站上的示例对我无效。 如何从Capistrano运行rake任务? 如果我尝试
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
execute :rake, ENV['task']
吗? - Uri Agassi