我正在用 ruby 做一个 rake 任务:
namespace :generate do
desc "Export to txt"
task :txt, [:filename, :item_id] => :environment do |t, args|
puts "aaaaaaaaaaaaa #{args.length}"
puts "ssssssss #{args.size}"
puts "bbbbbbbbbb #{args}"
args.each do | arg |
puts "#{arg}"
end
end
end
前两个 put 不返回任何东西,只是 aaaaaaaaaaa
和 sssssss
被打印出来,但是 bbbbbb print 确实返回我的 args,甚至当我遍历每个参数时,它们都会被打印出来.我做错了什么?
更新
我是这样开始 rake 任务的:
rake 生成:txt[Temp.txt,22]
bbbbbbbbb 打印:
bbbbbbbbbb {:filename=>"Temp.txt", :item_id=>"22"}
每个循环打印:
[:filename, "Temp.txt"]
[:item_id, "22"]
最佳答案
args
不是一个Hash
,而是一个Rake::TaskArguments
:
puts args.class #=> Rake::TaskArguments
可能这个类没有实现size
和length
;转换为哈希对我有用:
namespace :generate do
desc "Export to txt"
task :txt, [:filename, :item_id] => :environment do |t, args|
puts "args class: #{args.class}"
args = args.to_hash
puts "args to hash: #{args.inspect}"
puts "aaaaaaaaaaaaa #{args.length}"
puts "ssssssss #{args.size}"
puts "bbbbbbbbbb #{args}"
args.each do | arg |
puts "#{arg}"
end
end
end
打印:
$ rake generate:txt[Temp.txt,22]
Rake::TaskArguments
{:filename=>"Temp.txt", :item_id=>"22"}
aaaaaaaaaaaaa 2
ssssssss 2
bbbbbbbbbb {:filename=>"Temp.txt", :item_id=>"22"}
[:filename, "Temp.txt"]
[:item_id, "22"]
关于ruby-on-rails - Ruby 哈希长度或大小不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14459502/