2014-01-17 61 views
0

在自定義Rake任務例如:在Rake任務的名稱中,尾部冒號代表什麼意思?

desc "I am short, but comprehensive description for my cool task" 
task task_name: [:prerequisite_task, :another_task_we_depend_on] do 
    # All your magic here 
    # Any valid Ruby code is allowed 
end 

是什麼task_name冒號後的後綴說明什麼?通常,任務名稱是一個符號 - 如果您有先決條件,這有什麼不同?

回答

2

literal {task_name: [:symbol]}{:task_name => [:symbol]}一個速記符號,這個符號與Ruby 1.9的介紹:

{task_name: [:symbol]} 
# => {:task_name=>[:symbol]} 

你舉的例子其實就是等同於:

task :task_name => [:prerequisite_task, :another_task_we_depend_on] do 
    ... 

如果您有任何先決條件,你必須使用通常的符號notaion:

task :task_name do 
    ... 

Ruby Style Guide建議更喜歡較新的「JSON風格」,表示法。

+1

根據符號是否爲散列鍵的一部分,您需要使用'task_name:'或':task_name'這一事實,使我更喜歡舊的hashrocket語法。它可能並不總是相當漂亮,但它更加一致並且在更多情況下以相同的方式工作。 – sockmonk

+0

@sockmonk我也是,爲了完整性,我已經提到了Ruby風格指南。 – toro2k

+0

哎呀。我首先想到的是,這將使得將json哈希定義直接複製到ruby中變得更加容易,但它甚至沒有做到這一點,因爲哈希鍵不能是帶有:分隔符的字符串。 – fields

0

語法something: value的含義與:something => value完全相同。它只是更可讀一點。

相關問題