Skip to content

Instantly share code, notes, and snippets.

@such
such / gist:8136555
Created December 26, 2013 17:46
Demonstrates that update_all behavior is different between mysql and the other databases
# Activate the gem you are reporting the issue against.
gem 'activerecord', '4.0.2'
gem 'pg'
require 'active_record'
require 'minitest/autorun'
require 'logger'
ActiveRecord::Base.establish_connection(adapter: 'postgresql', username: 'user', password: 'pass', database: 'test')
ActiveRecord::Base.logger = Logger.new(STDOUT)
@such
such / gist:9d52b6b632bd296152a5
Created January 9, 2015 09:31
Bug report adequate record
# Activate the gem you are reporting the issue against.
gem 'activerecord', '4.2.0'
require 'active_record'
require 'minitest/autorun'
require 'logger'
# Ensure backward compatibility with Minitest 4
Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test)
# This connection will do for database-independent bug reports.

Keybase proof

I hereby claim:

  • I am such on github.
  • I am such (https://keybase.io/such) on keybase.
  • I have a public key whose fingerprint is 619A 4FB1 D076 8905 F539 AFF5 47DF 2102 DE5C 8CE2

To claim this, I am signing this object:

setInterval(() => {
document.getElementById('my-countdown').textContent = new Date();
}, 1000)
<Moment date={date} interval={1000} format="HH:mm:ss" durationFromNow />
setTimer = () => {
const { interval } = this.props;
this.clearTimer();
if (!Moment.pooledTimer && interval !== 0) {
this.timer = setInterval(() => {
this.update(this.props);
}, interval);
}
};
Moment.pooledTimer = setInterval(() => {
Moment.pooledElements.forEach((element) => {
if (element.props.interval !== 0) {
element.update();
}
});
}, interval);
export const TickerContext = React.createContext(null);
export function TickerProvider({ children }) {
const [now, setNow] = useState(new Date());
useEffect(() => {
const interval = setInterval(() => setNow(new Date()), 1000);
return () => clearInterval(interval);
}, []);
export function Timer({ date }) {
const { now } = useContext(TickerContext);
return intervalToDuration({ start: date, end: now });
};
// in the Context provider:
const interval = setInterval(() => setNow(new Date()), 1000);
// becomes:
const interval = setInterval(() => setNow(moment()), 1000);
// in the Component:
return intervalToDuration({ start: date, end: now });
// becomes:
return moment.duration(now.diff(date)).format('HH:mm:ss');