gpt4 book ai didi

ruby - Capistrano:使用参数调用任务(内部)

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:19 27 4
gpt4 key购买 nike

我有这个代码

namespace :mysql do
task :change_password do
run "mysqladmin -u #{user} -p#{old} password #{new}"
end
end

我想用它来更改多个用户的密码。我如何使用参数而不是从命令行执行此任务。下一个实现会很棒。

task :change_passwords do
mysql.change_password('user1', 'oldpass', 'newpass');
mysql.change_password('user2', 'oldpass', 'newpass');
mysql.change_password('user3', 'oldpass', 'newpass');
end

不幸的是,这不起作用。使这项工作有效的一种方法是每次在执行任务之前设置全局变量,但这不是一个优雅的解决方案。

你能告诉我一个更好的实现方法吗?

PS 我不懂 ruby​​,我只是使用 capistrano 进行部署

最佳答案

任务不接受任意参数。但是,您可以在 Capfile 中包含任何 ruby​​ 代码。所以你可以定义一个调用run的方法:

def mysql_change_password(user, old, new)
run "mysqladmin -u #{user} -p#{old} password #{new}"
end

您还可以使用迭代器:

task :change_passwords do
[
['user1', 'oldpass', 'newpass'],
['user2', 'oldpass', 'newpass'],
['user3', 'oldpass', 'newpass']
].each do |ary|
mysql_change_password(*ary)
end
end

关于ruby - Capistrano:使用参数调用任务(内部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16231011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com