Initially my question was going to be "why did you swap the ordering of the conditionals?".  But now I'm thinking that having nested conditionals like this seems a little odd, and I think that using guard statements make it more clear:

``` ruby
globals[position][scope].each do |hook|
  next unless scope == :each || hook.options_apply?(host)
  next if host.parent_groups.any? {|a| a.hooks[position][scope].include?(hook)}
  self[position][scope] << hook
end
```