- if (typeof(sentryPublicDSN) != "undefined")
	script(type="text/javascript").
		require.config({
			paths: {
				'raven': 'libs/raven-3.15.0.min'
			}
		});

		require(["raven"], function(Raven) {
			if (typeof(Raven) != "undefined" && Raven.config) {
				Raven.config("#{sentryPublicDSN}", {
				tags: { 'commit': '@@COMMIT@@', 'build': '@@RELEASE@@' },
				release: '@@RELEASE@@',
				// Ignore list based off: https://gist.github.com/1878283
				ignoreErrors: [
					'DealPly',
					// Random plugins/extensions
					'top.GLOBALS',
					// See: http://blog.errorception.com/2012/03/tale-of-unfindable-js-error.html
					'originalCreateNotification',
					'canvas.contentDocument',
					'MyApp_RemoveAllHighlights',
					'http://tt.epicplay.com',
					'Can\'t find variable: ZiteReader',
					'jigsaw is not defined',
					'ComboSearch is not defined',
					'http://loading.retry.widdit.com/',
					'atomicFindClose',
					// Facebook borked
					'fb_xd_fragment',
					// ISP optimizing proxy - `Cache-Control: no-transform` seems to reduce this. (thanks @acdha)
					// See http://stackoverflow.com/questions/4113268/how-to-stop-javascript-injection-from-vodafone-proxy
					'bmi_SafeAddOnload',
					'EBCallBackMessageReceived',
					// See http://toolbar.conduit.com/Developer/HtmlAndGadget/Methods/JSInjection.aspx
					'conduitPage',
					'/NS_ERROR_NOT_CONNECTED/i',
					"/Cannot read property 'row' of undefined/i",
					'TypeError: start is undefined'
				],
				ignoreUrls: [
					// Facebook flakiness
					/graph\.facebook\.com/i,
					// Facebook blocked
					/connect\.facebook\.net\/en_US\/all\.js/i,
					// Woopra flakiness
					/eatdifferent\.com\.woopra-ns\.com/i,
					/static\.woopra\.com\/js\/woopra\.js/i,
					// Chrome extensions
					/extensions\//i,
					/^chrome:\/\//i,
					// Other plugins
					/127\.0\.0\.1:4001\/isrunning/i,  // Cacaoweb
					/webappstoolbarba\.texthelp\.com\//i,
					/metrics\.itunes\.apple\.com\.edgesuite\.net\//i,
					/a\.disquscdn\.com/i,
					/platform\.twitter\.com/i,
					/pstatic\.datafastguru\.info/i
				],
				shouldSendCallback: function(data) {
					// only send a fraction of errors
					var sampleRate = 0.01;
					return (Math.random() <= sampleRate);
				},
				dataCallback: function(data) {
					// remove circular references from object
					var cache = [];
					var s = JSON.stringify(data, function(k, v) { if (typeof v === 'object' && v !== null) { if (cache.indexOf(v) !== -1) return "[circular]"; cache.push(v); }; return v; });
					return JSON.parse(s);
				}
				// we highly recommend restricting exceptions to a domain in order to filter out clutter
				// whitelistUrls: ['example.com/scripts/']
				}).install();
			}
		}, function(err) {
			console.log(">> error loading raven", err);
		})
	- if (user && typeof(user) != "undefined" && typeof (user.email) != "undefined")
		script(type="text/javascript").
			if (typeof(Raven) != "undefined" && Raven.setUserContext) {
				Raven.setUserContext({email: '#{user.email}'});
			}
