A snippet of the carrierwave documentation You might come to a situation where you want to retroactively change a version or add a new one. You can use the recreate...
...base file. This uses a naive approach which will re-upload and process the specified version or all versions, if none is passed as an argument. Call recreate_versions! on...
TLDR: A function is hard to use when it sometimes returns a promise and sometimes throws an exception. When writing an async function, prefer to signal failure by returning a...
...rejected promise. The full story When your function returns a promise ("async function"), try not to throw synchronous exceptions when encountering fatal errors. So avoid this: function foo(x) {
...the remote branch to check out, but when using more than one remote, it seems like it no longer can do that. Even if the branch is the same on...
...both remotes, you need to specify the branch to check out from explicitly, like that: $ git checkout -b my-branch origin/my-branch Branch my-branch set up to track remote branch...
Using OpenSSL it's very easy to seriously encrypt files. Use the script below. Input / Output are self explanatory. Put a long passphrase into PASSWORD_FILENAME. It is the key...
...m 60 > /tmp/openssl_encryption_password Remember to at least delete the input file afterwards. Better use shred to wipe files on Linux as used in the script below. #!/bin/sh PASSWORD_FILENAME=/opt/backup/openssl_encryption_password...
The migration DSL now supports adding and removing foreign keys. They are dumped to schema.rb as well. At this time, only the mysql, mysql2 and postgresql adapters support foreign keys...
...exclude things like default, 'not null' and foreign key constraints in the database. ActiveRecord supports most of them. comment = Comment.build(title: 'Bikini Bottom', content: 'Burgers for free', user_id...
When updating WebMock, be prepared that your specs may send real requests into the depths of the internet unless you update Curb as well.\ WebMock will not complain about those...
...requests not being stubbed. One of the commits that made it into 1.8.0 actually breaks Curb versions below 0.7.16 while fixing it for that version (and above, hopefully).\
Use Socket.gethostname. So for a machine whose hostname is "happycat", it will look like this: >> Socket.gethostname => "happycat" That should work right away for your Rails application. For plain Ruby, you...
...first need to do: require 'socket' If you don't want to use Socket for some reason, you can still just use the hostname command, at least on non-Windows...
Upgrading from Ruby 1.8.7 to 2.1.2 took me an hour for a medium-sized application. It involved hardly any changes except removing the occasional monkey patch where I had backported...
...longer in the load path by default) replacing the old debugger with byebug removing sytem_timer from Gemfile (see this SO thread for details) If you get LoadError: cannot load...
When making requests using curl, no cookies are sent or stored by default. However, you can tell curl to re-use cookies received earlier (or forge your own cookies).
...are 2 command line switches you need to use: -c will write cookies to a given file -b will read cookies from a given file Example The remote server sets...
If you open a pop-up window [1] in your Selenium tests and you want to close it, you can do this: # Find our target window handle = page.driver.find_window("My...
# Close it page.driver.browser.switch_to.window(handle) page.driver.browser.close # Have the Selenium driver point to another window last_handle = page.driver.browser.window_handles.last page.driver.browser.switch_to.window(last_handle) Mind these: find_window returns a window handle, which...
Sometimes you need a file of some size (possibly for testing purposes). On Linux, you can use dd to create one. Let's say you want a 23 MB file...
dd if=/dev/zero of=test.file bs=1048576 count=23 The block size (bs) is set to 1 MB (1024^2 bytes) here, writing 23 such chunks makes...
...its tables and their data, under a new name. Make a dump of your source database: mysqldump -uroot -p my_project -r my_project.sql Or, if you only want to dump...
...the database's table structure (schema) without any contents: mysqldump -uroot -p my_project -r my_project.sql --no-data Open up a MySQL shell: mysql -uroot -p From the MySQL shell...
...css? matcher has a couple of options you might find useful. Check that a selector appears a given number of times Use the :count option like this: Then /^I should...
...see (\d+) users?$/ do |count| page.should have_css('ul#users li', :count => count.to_i) end Check that a selector has a given text content Use the :text option like this...
Since version 11.10 Opera provides support for linear gradients using -o-linear-gradient. The syntax is pretty similar to Mozilla's -moz-linear-gradient. This will create a vertical gradient...
...image: -o-linear-gradient(top, #ff0, #f00); The first parameter defines where the gradient starts and which direction it will go. \ You can use top/left/bottom/right (and combinations of those) but...
This snippet makes links that refer to an anchor (like "...
...") scroll softly to it.\ In this example we only do it for links that also own a data-animate attribute...
...var hash = $(this).attr('href'); var offset = $(hash).offset(); if (offset) { $('html, body').animate({ scrollTop: offset.top }, 'slow'); location.hash = hash; return false; } }); Note that this could basically work for any element...
Similar to our snippet that runs all Cucumber features matching a given string, the following will run all modified or new Cucumber features by looking at your git status:
...status --short | grep -v '^ D ' | grep '.feature' | sed 's/.. //' | tr '\n' ' ' | xargs geordi cucumber If you want to know what each of the above commands does, see explainshell.
...RubyMine I have recorded two macros for debugging and linked them to some keyboard shortcuts. Since I believe everyone could benefit from having those I wanted to share this.
...first one simply inserts binding.pry and the second one .tap { |object| binding.pry } for when you do not have a reference to the object you want to inspect.
Use the PDF toolkit: sudo apt-get install pdftk To rotate page 1 by 90 degrees clockwise: pdftk in.pdf cat 1E output out.pdf # old pdftk pdftk in.pdf cat 1east output...
...is meaningful if you want other rotations. From the man page: The page rotation setting can cause pdftk to rotate pages and documents. Each option sets the page rotation as...
Call with the server's hostname (and user if you have no SSH agent), e.g. install-gems-remotely my.server.com # or without agent: install-gems-remotely me@my.server.com When you call it...
...as the gemspecs of all vendored gems in to a temporary folder on the server and does a bundle install there. If you need to install gems from anothere Gemfile...
...are usually encoded using Quoted Printable. Here is how to decode or encode such strings. You probably know Quoted Printable from e-mail bodies appearing in Rails logs, where =s...
...become =3Ds in URLs, or where long lines are split up and trailed by = after each split. Decode Quoted Printable Decoding such strings is actually quite simple using plain Ruby...
You can use the content CSS attribute to set an element's content -- which is especially useful for the :before and :after pseudo elements: a:before { content: 'Click me: '; }
...of other attributes of the element. So, if your links have a helpful title set, you could do this: a:before { content: attr(title) ": "; } There also is a jsFiddle for...
...s no user interface to give an AWS IAM user read/write access to a selected list of S3 buckets. Instead you need to attach an IAM policy like the one...
...below to the user: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket1", "arn:aws:s3:::bucket2" ] }, { "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:GetObject...
So you have multiple screens under Xfce and want to have one task bar on each screen, only showing applications on that screen. Here you go: Create one panel for...
...by going to Right click / Panel / Panel preferences... and uncheck "Lock panel". You now see a grip that you can use to drag one panel to the bottom of each...
...bar or bookmark). You will no longer get the website's favicon as a shortcut icon, but there are many great icons here: /usr/share/Icons/$YOUR_DESKTOP_THEME$/128/actions