我正在尝试创建一个包含用于使用API的任务的rake文件。我希望能够并将大量参数传递给任务,具体取决于要使用的调用。为了使任务更容易使用,我希望命名空间成为配置的一部分。这可能吗?
namespace :myAPI do
SERVER = 'local'
namespace :live do
SERVER = 'live'
end
namespace :beta do
SERVER = 'beta'
end
BASE_URI = {
live: "https://myapi.com/do/v1",
beta: "https://beta.myapi.com/do/v1",
local: "http://127.0.0.1:4500/do/v1"
}
desc 'Get currently logged users'
task :extract_logged_users => :environment do
get("BASE_URI[SERVER]/users/current")
end
}
然后我希望能够在实时服务器上运行它,例如:
rake myAPI:live:extract_logged_users
答案 0 :(得分:1)
您可以像这样以动态方式创建任务:
RewriteEngine on
RewriteRule ^/?(whats-news)/?$ /index.php/$1 [R=301,L,NC]
(我用require 'rake'
BASE_URI = {
live: "https://myapi.com/do/v1",
beta: "https://beta.myapi.com/do/v1",
local: "http://127.0.0.1:4500/do/v1"
}.each do |server,url|
namespace :myAPI do
namespace server do |ns|
desc 'Get currently logged users'
task :extract_logged_users do
puts 'get("%s/users/current", %s)' % [server,url]
end
end
end
end
替换你的get命令来检查发生了什么,并将url添加到命令中。)
现在你可以致电:
puts
输出:
rake myAPI:live:extract_logged_users
rake myAPI:beta:extract_logged_users
rake myAPI:local:extract_logged_users
替代编码:
get("live/users/current", https://myapi.com/do/v1)
get("beta/users/current", https://beta.myapi.com/do/v1)
get("local/users/current", http://127.0.0.1:4500/do/v1)