使用rake命名空间作为配置?

时间:2016-03-22 11:04:35

标签: ruby-on-rails ruby namespaces rake

我正在尝试创建一个包含用于使用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

1 个答案:

答案 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)