【发布时间】:2016-03-22 11:04:34
【问题描述】:
我正在尝试创建一个包含用于使用我的 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
【问题讨论】:
-
好吧,如果这样写,任务
extract_logged_users仍然只定义在myAPI命名空间中。此外,通过这种方式,您可以多次重新定义SERVER常量(并且 rake 会发出警告)。 -
也许您可以在主
myAPI命名空间中定义您的任务,然后在所有子命名空间中动态定义相同的任务。这些动态任务只会设置所需的变量并调用invoke("myAPI:the_task"),即主命名空间中的任务。
标签: ruby-on-rails ruby namespaces rake