Posts by Jason Noble:
Rubocop is a Ruby static code analyzer. Rubocop utilizes a number of style rules, which it calls “Cops”, hence the name.
I picked a cop at random, and wanted to see what it looks for in my Ruby code. So let’s take a look at Parameter Lists
cd ~/workspace/davinci_coders_t1_2015/practice mkdir parameter_list_rubocop cd parameter_list_rubocop echo '2.1.5' > .ruby-version echo 'davinci_coders' > .ruby-gemset cd .
Here I’m going into my practice directory and making a new one. I then setup the directory to have RVM load Ruby 2.1.5 and the davinci_coders gemset. Next I need to add the guard-rubocop gem.
# Gemfile source 'https://rubygems.org' gem 'guard-rubocop'
Next we need to bundle in order to install these gems. Then we’ll initialize guard.
bundle guard init
Now we need to tell Guard to ignore the Guardfile.
# .rubocop.yml AllCops: Exclude: - 'Guardfile'
We’ll fire up Guard, and we get no offenses. Let’s add a Ruby file called program_1.rb.
#!/usr/bin/env ruby # I'm looking at https://github.com/bbatsov/rubocop/blob/master/lib/rubocop/cop/metrics/parameter_lists.rb def foo(param1) puts param1 end def foo2(param1, param2) puts param1, param2 end def foo3(param1, param2, param3) puts param1, param2, param3 end def foo4(param1, param2, param3, param4) puts param1, param2, param3, param4 end def foo5(param1, param2, param3, param4, param5) puts param1, param2, param3, param4, param5 end def foo6(param1, param2, param3, param4, param5, param6) puts param1, param2, param3, param4, param5, param6 end def foo7(param1, param2, param3, param4, param5, param6, param7) puts param1, param2, param3, param4, param5, param6, param7 end def foo8(param1, param2, param3, param4, param5, param6, param7, param8) puts param1, param2, param3, param4, param5, param6, param7, param8 end
Now our guard gives us three offenses:
So it looks like Rubocop will complain if your method has more than 5 parameters. Looks like this preference comes from the Ruby Style Guide.
I’ll have to remember to have 4 or less parameters for any methods I create in the future.
Although, I could configure Rubocop to allow me up to 7 parameters:
# .rubocop.yml Metrics/ParameterLists: Max: 7
No, that’s probably a bad idea. Nevermind.
Ok, I’m tired of looking this up, so I’m going to document it here for future me. We have a branching strategy: maint-2014.04.04 maint-2014.04.18 … master When I create a new branch based off master, I name it 1234567890_some_short_summary_master. Later I determine it should have been based off maint-2014.04.04. Here’s the process: If this helps […]
A co-worker asked if RubyMine has the ability to increase/decrease the font size (say if you were presenting on a projector). I didn’t know, but I researched it and here’s how you enable font size changes. First open RubyMine. Go to RubyMine -> Preferences. Select Keymap from the list on the left In the upper […]
Recently, one of my students Raj Solanki blogged about some podcasts that he recently found. For the past month or so, I’ve been listening to several podcasts. I listen on my iPod, but I’ve found the built in Podcasts app frankly sucks. A co-worker introduced me to Downcast, which is an alternative which ROCKS. My […]
tl;dr: Solution I’m an Ruby on Rails instructor for the DaVinci Coders program in Louisville, CO. I teach a class called Building the Toolbelt of a Junior Ruby on Rails Developer, where we teach students how to use Ruby on Rails, as well as the other tools software engineers use in their daily work. Recently, […]
One of my previous students, Ross Kinney recently blogged about an error he encountered: It turns out that some of the OS X SSL Certs were out of date and he fixed it by running: I had initially filed that away under “Good to know”, but after this weekend and yesterday, I’ve used this solution […]
I recently imported a bunch of stories into Pivotal Tracker via the Import CSV function. This worked like a charm, the problem was I wanted all the stories to be requested by a different user than what was in the CSV file. I could use the web browser to do this, but that would take […]
I recently updated my Homebrew install and installed the latest mysql (brew update && brew upgrade mysql) to 5.6.12. However, when I tried to upgrade my mysql2 gem from 0.3.11 to 0.3.12, I was getting the following error: After some googling and stack overflow answers that didn’t help, I ran across #20788, which referenced 9dd1c38 […]
Ran into an interesting issue at work today. My pair (Dave) and I opened a pull request yesterday and I checked the status this morning. It showed that Dave had closed it this morning. I asked him if he had intended to merge it, and he said he hadn’t closed it. The weird thing was […]
I have a script I want to run in rails console, but I don’t want to log the SQL and such. So I googled how to turn off all logging in Rails 3 console. Unfortunately, all the answers were old, so here’s how I did it: