In Ruby, an assignment returns its value.
> a = 1 => 1
You can slightly abuse it to nest variable assignments inside an array assignment:
a = [ b = 1, c = 2 ] > a => [1, 2] > b => 1 > c => 2
You could even go a step further to nest variable assignments inside array assignments nested inside yet another array assignment - although it seems to be losing readability at this point:
a = [ *b = [ c = 1, d = 2 ], *e = [ f = 3, g = 4 ] ] > a => [1, 2, 3, 4] > b => [1, 2] > c => 1
This may be useful in tests, where you have multiple variables, which you need to use both individually and collectively, and you want to have descriptive variable names:
triggers = [ trigger_with_conditions_fulfilled = create(:trigger), trigger_with_conditions_not_fulfilled = create(:trigger) ] allow(trigger_with_conditions_fulfilled).to receive(:conditions_fulfilled?).and_return(true) allow(trigger_with_conditions_not_fulfilled).to receive(:conditions_fulfilled?).and_return(false) ExecuteTriggers.call(triggers)