Git stash saves your uncommited work on a temporary stack and removes it from the current workspace, allowing you to switch branches without seeing complaints about uncommited changes.
// FIXME: this can very rapidly hit the call stack size limit | |
function findPropertyValue(obj, value) { | |
if (typeof obj.seenBefore === "undefined") { | |
// treat for object graph circularity | |
obj.seenBefore = true; | |
for (var key in obj) { | |
if (obj[key] == value) { | |
return key; |
Abstract | |
======== | |
This project aims at allowing users to record normal usage on a | |
website and then have a script generated that can reproduce such | |
actions. | |
This script is generated in Ruby and can be changed and mixed with | |
existing Ruby code to extend its behaviour, using regular Ruby | |
variables, loop constructs, etc. |
Deleting branches after merging them into other branches can help unclutter your list of branches. If you use a lot of topic branches for features and don't delete them, pretty soon you'll have a very long list of old, unmaintained branches, and that's going to make it harder for you to find the ones you're currently working on.
You can always get back to old branches anyway. When you merge, a merge commit is created on the branch you merged into. Merge commits have two parents, which are referenced by their SHA1s. So if you need to see the old branch, just check out the SHA1 of the corresponding parent on the merge commit. Since it's referenced in a living branch, it's not gonna get garbage-collected by Git.
The only case where the original SHA1 wouldn't be kept around is if it was a fast-forward merge. To prevent that from happening, you can use the option --no-ff
on the git merge
command, which will create a merge commit even when a fast forward would be possible.
# -*- coding: utf-8 -*- | |
class String | |
def downcase_with_accents | |
return nil if s.nil? | |
norm = self.downcase | |
norm.tr!('ÁÉÍÓÚÇ', 'aeiouç') | |
norm.tr!('ÀÈÌÒÙ', 'aeiou') | |
norm.tr!('ÄËÏÖÜ', 'aeiou') | |
norm.tr!('ÂÊÎÔÛ', 'aeiou') | |
norm.tr!('áéíóú', 'aeiou') |
class Hash | |
def assign_with_debugger(key, value) | |
debugger if key == "action_dispatch.request.path_parameters" | |
self.assign_without_debugger(key, value) | |
end | |
alias :assign_without_debugger :[]= | |
alias :[]= :assign_with_debugger | |
end |
#!/usr/bin/env ruby | |
require 'rubygems' | |
require 'mechanize' | |
require 'ostruct' | |
require 'open-uri' | |
require 'hpricot' | |
require 'yaml' | |
# fix for screwed up net/http | |
# found at: http://pw.tech-arts.co.jp/technical/cat57/ |
#!/usr/bin/env ruby | |
require 'rubygems' | |
require 'json' | |
require 'open-uri' | |
def google_fight(queries) | |
queries.max { |a,b| JSON.load(open("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=#{a}"))["responseData"]["cursor"]["estimatedResultCount"].to_i <=> JSON.load(open("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=#{b}"))["responseData"]["cursor"]["estimatedResultCount"].to_i } | |
end | |
if __FILE__ == $0 |
class AddStatsToDelayedJobs < ActiveRecord::Migration | |
def self.up | |
add_column :delayed_jobs, :first_started_at, :datetime | |
add_column :delayed_jobs, :last_started_at, :datetime | |
add_column :delayed_jobs, :finished_at, :datetime | |
end | |
def self.down | |
remove_column :delayed_jobs, :finished_at | |
remove_column :delayed_jobs, :last_started_at |