The Edge Rider gem gives your relations a method #traverse_association which returns a new relation by "pivoting" around a named association. Say we have a Post model and each...
...traversal is achieved internally by collecting all foreign keys in the current relation and return a new relation with an IN(...) query (which is very efficient even for many thousand...
...function escapeHighASCII(string) { let unicodeEscape = (char) => "\\u" + char.charCodeAt(0).toString(16).padStart(4, '0') return string.replace(/[^\x00-\x7F]/g, unicodeEscape) } Escaping high ASCII in Ruby def escape_high_ascii(string...
...but includes the space character /[[:punct:]]/ Punctuation character /[[:space:]]/ Whitespace character ([[:blank:]], newline, carriage return, etc.) /[[:upper:]]/ Uppercase alphabetical /[[:xdigit:]]/ Digit allowed in a hexadecimal number (i.e., 0-9a...
...error, it will fail with a not-so-helpful error message: expected present? to return true, got false (Spec::Expectations::ExpectationNotMetError) Solution That can be fixed easily. RSpec expectations allow...
When you use method_missing to have an object return something on a method call, always make sure you also redefine respond_to_missing?. If you don't do it...
...is not defined within the receiver. When it has not been defined properly, its return value is a false negative! Thus, you need to patch respond_to_missing? as well...
...e.g. for use in the client's browser: function svgUri(text) { let svg = ` ${text} ` return 'data:image/svg+xml;charset=utf8,' + window.escape(svg) } See the attached JSFiddle for an example.
...If you want to check your setting, do the following. By default, it will return matching (see above). $ git config --global push.default matching So to change that to push only...
...of hashes, where the keys are the table headers from the first row table.headers Return only the first row table.rows Return all but the first row as an array of...
...HTTPS forwarding header, Rails recognizes that a request originally was on HTTPS and will return the correct protocol. Caveats: You need to harden your server setup to forbid the routing...
...that dynamically composes person.firstName and person.lastName: var person = { firstName: 'Guybrush', lastName: 'Threepwood', get fullName() { return this.firstName + " " + this.lastName; }, set fullName(name) { var parts = name.split(" "); this.firstName = parts[0]; this.lastName = parts[1]; } };
...use Object.defineProperty() instead: var person = { firstName: 'Guybrush', lastName: 'Threepwood' }; Object.defineProperty(person, "fullName", { get: function() { return this.firstName + " " + this.lastName; }, set: function(name) { var parts = name.split(" "); this.firstName = parts[0]; this.lastName = parts[1]; } });
...PATH=$(find-up .nvmrc | tr -d '[:space:]') if [[ $NVM_PATH == $NVM_PATH_WAS ]]; then return fi NVM_PATH_WAS=$NVM_PATH if [[ -f "$NVM_PATH/.nvmrc" ]]; then nvm use $(<"$NVM_PATH/.nvmrc...
...in replacement for trigger() (requires Unpoly): jQuery.fn.triggerNative = function(...args) { this.each(function() { up.emit(this, ...args) }) return this } With this you can replace a call like $element.trigger('change') with $element.triggerNative('change'). You...
if (!$event.originalEvent) { let eventProps = up.util.only($event, ...convertedPropNames) up.emit($event.target, eventName, eventProps) up.event.halt($event) } }) return this } Here is an example usage: $element.select2().enableNativeEvent('change') Make sure this function is applied...
text: ' ', } element.addEventListener('click', (event) => { navigator.share(data) event.preventDefault() }) } If you require feedback, navigator.share will return a promise that resolves or rejects, depending on whether the sharing was completed.
...an element is present, without errors raised, you can use #has_css?. It will return a Boolean – but will wait as well. If the element does not exist, it will...
...take the configured Capybara.default_wait_time for this check to return false, which is usually several seconds. The solution is to disable the waiting for just that check:
When your JavaScript bundle is so massive that you cannot load it all up front, I would recommend to load...
...can safely be represented in JavaScript. Number.MAX_SAFE_INTEGER will return the largest integer that can accurately be represented. For arbitrary large numbers (even >= 2^53), BigInt objects can be...
...is no longer possible. You might want to set event.returnValue = true, as a truthy returnValue was necessary to trigger the alert in Chrome < 119 You might want to return any...
...page? Changes you made may not be saved.' event.returnValue = leaveMessage // support for Chrome < 119 return leaveMessage // support for older browsers } } window.addEventListener('beforeunload', warnBeforeUnload...
Task.where("details->'a'->>'b' = ?", "value") # same as above, but via operator chaining -> returns JSON, whereas ->> returns text. Note that the key(s) must be passed with single quotes...
...a setter (when it gets the new value as an argument): $scope.name = function(newName) { return angular.isDefined(newName) ? (_name = newName) : _name; } You need to bind this function with ng-model and...
...angular.module('getterSetterExample', []) .controller('ExampleController', ['$scope', function($scope) { var _name = 'Brian'; $scope.user = { name: function(newName) { return angular.isDefined(newName) ? (_name = newName) : _name...
...this in your uploaders already. end def remove_empty_container_directory(dir = store_dir) return unless Dir.empty?(dir) Dir.delete(dir) remove_empty_container_directory(File.dirname(dir)) end end
...function. Where promiseState() becomes useful is when writing unit tests for a function that returns a promise. Let's say we write a promise-based variant of setTimeout(): function setTimer...
return new Promise(resolve, reject) { setTimeout(resolve, delay) } } We would use it like this: setTimer(300).then(function() {...
Here is a test for setTimer() that uses promiseState(): describe('setTimer...
...version_appendix(version) Versionomy.parse(version) end def self.major_version_change?(version_1, version_2) return false if version_1.blank? || version_2.blank? parse_major_version(version_1) != parse_major_version(version_2)
...on the last argument to that method, before assigning optional arguments. If to_hash returns an instance of Hash, the hash is taken as keyword arguments to that method.
...it most likely will), Ruby will raise ArgumentError. Bah. (If to_hash does not return a Hash, assignment will work as expected – but this should actually never happen.)
Usually, Unpoly compiler destructors are returned from the compiler function. However, when using async compiler functions, you can not register destructors via return. This will not work: up.compiler('my-example...
...async (element) => { await something return function onDestroy() { // ... } }) Instead, use up.destructor: up.compiler('my-example', async (element) => { await something up.destructor(element, function onDestroy() { // ... }) }) However, note that your element might be removed from...