...Rails 3.2, Rails 4.2 and Rails 5.0. Basic Usage Our example will be a simple address book: class Contact < ActiveRecord::Base validates_presence_of :name, :street, :city, :email end
...create a new class ContactFilter that will describe the searchable columns: class ContactFilter include Minidusen::Filter filter :text do |scope, phrases| columns = [:name, :email] scope.where_like(columns => phrases) end
ImageMagick can automatically crop surrounding transparent pixels from an image: convert input.png -trim +repage output.png You need to +repage to update the image's canvas, or applications will...
...be randomly confused. Trimming specific colors is also possible, see the documentation. Resizing into a box Occasionally, you want to resize an image to a maximum width or height, and...
SudoSlider is a simple yet powerful content slider that makes no (or very few) assumptions about your markup and is very customizable. You can basically embed any HTML into the...
...slides, so you can mix images, videos, texts, and other stuff. Check out the demos. Please note: There is a ton to configure. Check the demos and read the docs...
If you save a non-standard object (not a String or Fixnum, etc) like the AwesomeClass from your application in the session of visitors be prepared that some time you...
...will get this exception: ActionController::SessionRestoreError: Session contains objects whose class definition isn't available. Remember to require the classes for all objects kept in the session. (Original exception: ...)
Sometimes your code has long lines: describe 'foo' do describe 'bar' do really_long_line_really_long_line_really_long_line another_line When you're working with multiple editor...
...really_long_line_really_long_| another_line | To help with this you can activate Soft wraps in the RubyMine options under General → Editor . Your code will now look like this...
...it might be unavoidable to have different CSS rules for Internet Explorer than for sane browsers. Using Sass, this can be achieved in a relatively non-hackish way without CSS...
Step 1 Move your current Sass file into a partial. Let's assume it was called screen.sass. Rename it _screen.sass. Step 2 Create two new Sass files:
If your requests blow up in Ruby or CURL, the server you're connecting to might only support requests with older SSL/TLS versions. You might get an error like: OpenSSL...
...SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=unknown state SSL Server Test This SSL Server Test can help finding out which SSL/TLS versions the server can handle...
FactoryBot allows a :class option to its factory definitions, to set the class to construct. However, this option is not supported for traits. Most often, you can just define a...
If you need/want to use traits instead (for example, it might make more sense semantically), you can not use a :class on a trait. In that case, use initialize...
The way MySQL's FULLTEXT tokenizer splits text into word tokens might not always be what you need. E.g. it splits a word at period characters. Since the tokenizer has...
...near-zero configuration options (minimum word length and stopwords list), you need to hack it. There are three options available. Option 1: If you like pain Write a Full-Text...
...id attributes for fields again. This card presents you with a way to call something like - form_for @user, :prefix => 'overlay' do |form| = form.text_field :email and get this as...
...we would not want to pass an overlay_user[email] param to the controller. Setting :id explicitly will not be affected by the prefix. First, have your FormBuilder keep the...
...but keep the database itself), you have two options. Option 1: Drop the entire schema You will need to re-create the schema and its permissions. This is usually good...
...enough for development machines only. DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public; Applications usually use the...
If you get one of this errors: Error: Could not retrieve catalog from remote server: Error 400 on SERVER: ( ): found character that cannot start any token while scanning for the...
Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run Error: Could not retrieve catalog from remote server: Error 400 on SERVER: undefined method...
...column, remove_column, etc. more than once in a migration makes that migration run slower than it should. Use change_table instead. Consider this migration: add_column :users, :name, :string...
...users, :cool, :awesome Migrating in this case means that all those commands are processed step by step, causing 4 SQL statements to change the table. In turn, your database needs...
jQuery comes with .animate() that lets you transition some CSS selectors: function floatIn($element) { $element.css({ 'opacity': 0, 'margin-top': 200px }); $element.animate({ 'opacity': 1, 'margin-top': 0 }, { duration: 500 }); }
...is implemented using setInterval and Javascript. This works great, but it's not as smooth as a CSS transition. Fortunately the animate API can be mapped almost 1:1 to...
Large projects usually have large test suites that can run for a long time. This can be annoying as running tests blocks you from picking up the next story -- but...
...it doesn't have to be that way! Simply clone your project's repo twice (or even more often). When your work on a feature branch is done, simply push...
...expression that forces a repaint (e.g. by computing an element's width, or running something like element.is(':visible')) you may end up with "page flickering" or scroll offset changes.
...to the end of a digest cycle to avoid that. The following is basically straight from the docs, but pretty awkward to use. Do it like this (example here is...
There are times when you need to send SQL to the database, like this: def self.some_count(field) field = connection.quote_column_name(field) scoped(:select => "COUNT(DISTINCT #{field}) AS count...
Although the given variable is sanitized here, the MySQLAdapter's (and probably other adapters as well) method for this is insufficient as it only wraps backticks around it, not...
...not migrated yet). $ rake db:rollback $ If that happens to you, check your migration status. $ rake db:migrate:status up 20160503143434 Create users up 20160506134137 Create pages up 20160517112656 Migrate...
...to roll back the latest change that was migrated. In the case above, your schema_migrations table contains an entry 20160518112023 that you do not have the corresponding migration file...
When your site is mapped into the URL-space of another server using mod_proxy, ProxyPass and ProxyPassReverse, all requests in your Apache logs are logged with the IP address...
...of the proxying server. The IP address of the original client doing the request is not logged, making it difficult to trace problems and run statistics. Short answer
When you have a pending Cucumber step (or feature) that also uses an existing VCR cassette, your pending test may fail at the very end with an error like this...
...often a good configuration. If you do not want to change your whole test suite's settings because of a pending test, you can disable this behavior for pending features...
Let's say you need to revert a migration that happened a while back. You'd create a new migration that removes what was added back then in the up...
...do that. Especially when the up/down paths already contained some logic (that executed update statements on the created column, for example), copying does not feel right. Someone already added the...
Yesterday I stumbled across a talk in which the guy mentioned module sub-classing. I was curious what you can do with it and found his blog post with a...
...cool example. It allows you to inject some state into the module you are including elsewhere. Check it out! class AttributeAccessor < Module def initialize(name) @name = name end def included...
JavaScript structures that include circular references can't be serialized with a"plain" JSON.stringify. Example: a = { name: 'Groucho' }; b = { name: 'Harpo', sibling: a }; a.sibling = b; Doing a JSON.stringify(a) will...
...throw an error: TypeError: Converting circular structure to JSON There is not much you can do about that except specifying a custom serializer function that detects and cleans up circular...
...does not need to, be your LVM group name): cryptsetup luksOpen /dev/sda5 some_name Since your encryption container most likely contains an LVM group (root + swap for example), enable the...
...mkdir /mnt/ext-root), and then mount /dev/mapper/LVM_NAME-root /mnt/ext-root GRUB It is possible that GRUB (your system loader) will pick up on the new LVM group and add an entry to your...