Is there a “do … while” loop in Ruby?

CAUTION: The begin <code> end while <condition> is rejected by Ruby’s author Matz. Instead he suggests using Kernel#loop, e.g. loop do # some code here break if <condition> end Here’s an email exchange in 23 Nov 2005 where Matz states: |> Don’t use it please. I’m regretting this feature, and I’d like to |> remove … Read more

What is Ruby’s double-colon `::`?

:: is basically a namespace resolution operator. It allows you to access items in modules, or class-level items in classes. For example, say you had this setup: module SomeModule module InnerModule class MyClass CONSTANT = 4 end end end You could access CONSTANT from outside the module as SomeModule::InnerModule::MyClass::CONSTANT. It doesn’t affect instance methods defined … Read more

Ruby: Can I write multi-line string with no concatenation?

There are pieces to this answer that helped me get what I needed (easy multi-line concatenation WITHOUT extra whitespace), but since none of the actual answers had it, I’m compiling them here: str=”this is a multi-line string”\ ‘ using implicit concatenation’\ ‘ to prevent spare \n\’s’ => “this is a multi-line string using implicit concatenation … Read more

When monkey patching an instance method, can you call the overridden method from the new implementation?

EDIT: It has been 9 years since I originally wrote this answer, and it deserves some cosmetic surgery to keep it current. You can see the last version before the edit here. You can’t call the overwritten method by name or keyword. That’s one of the many reasons why monkey patching should be avoided and … Read more

How to map/collect with index in Ruby?

If you’re using ruby 1.8.7 or 1.9, you can use the fact that iterator methods like each_with_index, when called without a block, return an Enumerator object, which you can call Enumerable methods like map on. So you can do: arr.each_with_index.map { |x,i| [x, i+2] } In 1.8.6 you can do: require ‘enumerator’ arr.enum_for(:each_with_index).map { |x,i| … Read more

What is the difference between include and require in Ruby?

What’s the difference between “include” and “require” in Ruby? Answer: The include and require methods do very different things. The require method does what include does in most other programming languages: run another file. It also tracks what you’ve required in the past and won’t require the same file twice. To run another file without … Read more

What does map(&:name) mean in Ruby?

It’s shorthand for tags.map(&:name.to_proc).join(‘ ‘) If foo is an object with a to_proc method, then you can pass it to a method as &foo, which will call foo.to_proc and use that as the method’s block. The Symbol#to_proc method was originally added by ActiveSupport but has been integrated into Ruby 1.8.7. This is its implementation: class … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)