4 ms·
In Ruby that would be sleep 3.seconds Hard to to be more concise than that
by 33degrees 5y ago
In Ruby that would be
sleep 3.seconds
Hard to to be more concise than that
- mfkp 5y agoTechnically Ruby only accepts seconds. You're thinking of ActiveSupport from Rails.
- inopinatus 5y agoHere's a fun way to annoy a Rails developer. (Time.now + 1.month).to_i == Time.now.to_i + 1.month.to_i #=> false
- irjustin 5y agoNot sure why that's annoying? The right side doesn't really make sense. Though it does seem pretty easy for a novice to do thinking it's the same, but what does 1.month.to_i even mean!?
- lloeki 5y ago> 1.month.to_i Duration of a month in seconds? Before you balk at the idea, there exists a definition of a constant month duration for accounting stuff. I you hate dates - and yourself - try accounting, there's mind boggling stuff that makes the engineer mind recoil in absolute terror.
- inopinatus 5y agoActually taken almost verbatim from the report summarizing a real and subtle bug (distributed across multiple files) in code written by definitely-not-novices.
- neurostimulant 5y agoI'm not really familiar to RoR. Is is due to Time.now getting called twice and each returns slightly different value?
- deleted 5y ago[deleted]
- inopinatus 5y agoAlas, no. It's because ActiveSupport's duration arithmetic is not distributive under conversion. The expression on the left hand side advances time (as a domain object) by exactly a month, then converts the result to integer unix time. The expression on the right adds 2629746¹ to the current unix time. The conversion becomes dangerously magical in the presence of shared code that accepts both object and integer representations of time & duration. A consumer from one part of a system can inadvertently obtain different results to another unless they use identical calling conventions. [1] this is 1/12 of the mean length of a gregorian year² [2] 365.2425 days i.e. 31,556,952 seconds
- neurostimulant 5y agoOh wow. This is totally make sense when you think about it, but something that'll never cross my mind when casually checking the code. I guess this is why python's timedelta doesn't have month unit as the length of a month is highly context dependent.
- ativzzz 5y agoI would just use `1.month.from_now` instead of the additions anyway
- inopinatus 5y agoThat won’t save you; 1.month.from_now is implemented by addition.
- inopinatus 5y agoAre we golfing? Because that's identical to sleep 3
- wyattpeak 5y agoAre we golfing? This whole discussion is about clarifying units.
- inopinatus 5y agoI must clarify, that was intended rhetorically, and in the most self-serving fashion; I try never to miss a golfing prompt