Ответ 1
Ну, ~>
(оператор оптимистичный) используется, когда вы хотите указать версию "до следующего основного" | минор | патч. Например:
~> 0.1.2
вы получите версию до 0,2 (но не включая 0,2 и выше)
~> 0.1
предоставит вам версию до 1.0 (но не включая 1.0 и выше)
~> 0
предоставит вам версию 0 и выше (так же, как если бы она была опущена)
где 0.1.2
означает "Я хочу эту точную версию"