...or if none given, by it's number: When /^(.*?) inside the (.*?). iframe$/ do |nested_step, frame_number| page.within_frame(frame_number.to_i) do step nested_step end end When /^(.*?) inside the...
...iframe:$/ do |nested_step, frame_number, table_or_string| page.within_frame(frame_number.to_i) do step("#{nested_step}:", table_or_string) end end Use it like this: Then the radio button...
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...
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...
...video plattform ("mycustomtv") in one of our applications. I learned a lot about naming stuff. youtube_mycustomtv_chooser is a bad name for a directive. Why? if you add, for...
...example, other video systems like vimeo, the name of the method either lies or will get longer. if you replace one system, you will have to change the method and...
Spring is a Rails application preloader. When debugging e.g. the rails gem, you'll be wondering why your raise, puts or debugger debugging statements have no effect. That's because...
...Spring preloads and caches your application once and all consecutive calls to it will not see any changes in your debugged gem. Howto Disable spring with export DISABLE_SPRING...
When refactoring a sequence of steps to a new, more descriptive step, you can use the steps method and Ruby's %-notation like this: Given 'I have an article in...
steps %( When I go the article list And I open the first article And I press "Add to cart" ) end This way you can simply copy the...
CSS (+ some Javascript) framework, implementing Google's material design for static web pages. Can be used for plain websites without requiring a full blown Javascript framework, unlike the (also excellent...
...elements, or Angular material. Prelimiary impression: I would recommend against using it at this stage, for a couple of reasons: It is much less complete than you might expect from...