首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将哈希作为参数传递给Rake任务

将哈希作为参数传递给Rake任务
EN

Stack Overflow用户
提问于 2012-05-10 04:30:58
回答 3查看 3.5K关注 0票数 9

我有一个瑞克任务

代码语言:javascript
运行
复制
task :post_hit, [:host, :title, :description, :model, :num_assignments, :reward, :lifetime, :qualifications, :p, :opts] => :environment do |t, args|

:p需要是一个散列,但如果我尝试:

代码语言:javascript
运行
复制
rake turkee:post_hit["http://www.staging.collegesportsbluebook.com","LS Info","Fill In Player First Name","MechanicalTurk",100,0.01,2,{},{id: 5},{}]

它错误地说id:不能被解析(空格似乎做了一些事情)。

如果我试过:

代码语言:javascript
运行
复制
rake turkee:post_hit["http://www.staging.collegesportsbluebook.com","LS Info","Fill In Player First Name","MechanicalTurk",100,0.01,2,{},{"id: 5"},{}]

who字符串"id: 5"被解释为单个字符串。

我们不允许将散列传递给rake任务吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-10 06:00:55

当您通过终端发出rake任务时,您是在UNIX或Bash环境中,因此您需要遵守该语言的规则,据我所知,这些规则不包括散列。不过,我可能错了。

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc5

这并不意味着编写rake任务的人没有做一些聪明的事情来将字符串解析为散列。如果我是你,我会看一下源代码,看看rake任务是如何解析它的变量的。

PS。如果它是你正在使用的gem,并且你也在使用.rake,你可以发出bundle open gem_name来开源,rake任务通常会在一个gem中结束...

票数 1
EN

Stack Overflow用户

发布于 2013-09-17 21:35:17

我使用类似查询字符串的参数,并用Rack::Utils.parse_nested_query解析它们

我是这样做的:

代码语言:javascript
运行
复制
require 'rack/utils' # needed for Rack::Utils.parse_nested_query

namespace :foo do
  task :bar, [ :args_expr ] => :environment do |t, args|
     args.with_defaults(:args_expr => "name=abdo&fruits[]=bananas&fruits[]=dates")
     options = Rack::Utils.parse_nested_query(args[:args_expr])

     puts options
  end
end

我这样称呼它:(注意数组和散列是如何传递的)

代码语言:javascript
运行
复制
bundle exec rake "foo:bar[name=abdo&fruits[]=apples&fruits[]=oranges&hash[foo]=bar&hash[cool]=notmuch]"

输出:

代码语言:javascript
运行
复制
{"name"=>"abdo", "fruits"=>["apples", "oranges"], "hash"=>{"foo"=>"bar", "cool"=>"notmuch"}}
票数 14
EN

Stack Overflow用户

发布于 2012-05-10 05:06:40

尝试将任务中的:p变量声明为散列可能?:p => {}

任务:post_hit,[:主机,:标题,:描述,:模型,:奖励,:生命周期,:资格,:p => {},:opts

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10523661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档