Monday, December 23, 2013

Xmas Pet App with Hannah Howard

Hannah and I met up today at Silverlake Coffee to work on an app for her partner Ben for Christmas. We should have gotten together sooner because we ended up spending a lot of time yak shaving but didn't actually get much done. Here is some of the stuff we were dealing with to work together on this project...

Hannah is working on the newest versions of Ruby and Rails which means I have finally reached a point where I need to start using RVM a Ruby version manager.

https://rvm.io/rvm/install 
$ jen@sandinista ~/Desktop/poochpapa $ gvim .ruby-version
$ jen@sandinista ~/Desktop/poochpapa $ gvim .ruby-gemset 
* To start using RVM you need to run `source /home/jen/.rvm/scripts/rvm` in all your open shell windows, in rare cases you need to reopen all shell windows.
http://rvm.io/rvm/basics

Hannah made me a collaborator at https://github.com/hannahhoward/poochpapa.git

Ben's website for his pet sitting service: http://www.poochpapa.com/
Ben's favorite color: brown earth tones orange ocre reese pieces

Hannah is also using Postgres as her database so I downloaded it but couldn't install it. I think I need more permissions and Lars' help.

Saturday, December 21, 2013

Refactoring w/ Cynthia, Frances & REve

Grep-ing is incredibly useful when looking for something in a file you are unfamiliar with
  $ grep -rn "whatever you are looking for" . 
-r means recursively which means your computer will look in a file if it is not there then it will keep looking until there is m=nothing else to look for
n is line number
. the dot at the end means look through everything

git branch -av
   a is all
   v is verbose

git remote add upstream_user https://github.com/user/repo.git

simplecov - ruby gem that reports how much of your code is covered by tests

Add to your Gemfile

group :test, :development do  
  gem 'hpricot'  
  gem 'simplecov', :require => false #code coverage thingy
end

Add to top of tests  test.rb

  # -*- coding: utf-8 -*-
  # Tests designed to run with autotest.
 require 'simplecov'
 SimpleCov.start
  require 'test/unit'
  require 'fileutils' # for saving downloaded XML
  $LOAD_PATH << './lib'
  require 'reve'

cattr_reader so you can read the class level variable in the instance of the class

    module Class #:nodoc:
      def cattr_reader(*syms) #:nodoc:
        syms.flatten.each do |sym|
          next if sym.is_a?(Hash)
          class_eval(<<-EOS, __FILE__, __LINE__)
            unless defined? @@#{sym}
              @@#{sym} = nil
            end

            def self.#{sym}
              @@#{sym}
            end

            def #{sym}
              @@#{sym}
            end
          EOS
        end
      end

      def cattr_writer(*syms) #:nodoc:
        options = syms.last.is_a?(Hash) ? syms.pop : {}
        syms.flatten.each do |sym|
          class_eval(<<-EOS, __FILE__, __LINE__)
            unless defined? @@#{sym}
              @@#{sym} = nil
            end

            def self.#{sym}=(obj)
              @@#{sym} = obj
            end
            #{"
            def #{sym}=(obj)
              @@#{sym} = obj
            end
            " unless options[:instance_writer] == false }
          EOS
        end
      end
      def cattr_accessor(*syms) #:nodoc:
        cattr_reader(*syms)
        cattr_writer(*syms)
      end
    end


Tuesday, December 17, 2013

Rails Tutorial 3.3

Rspec  Should vs. Expect

https://www.relishapp.com/rspec/rspec-expectations/v/2-0/docs/matchers/expect-change
http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
http://betterspecs.org/

In Rspec have_title is a method which checks for an HTML title within the given content

I always forget what .erb stands for. It is embedded Ruby.

Rails method
provide
<% provide(:title, 'Home') %>
<%= yield(:title) %>
The distinction between the two types of embedded Ruby is that <% ... %> executes the code inside, while <%= ... %> executes it and inserts the result into the template.