Tuesday, January 21, 2014

Day4 WeBrand Ruby Standard Library abbrev

Day 4 was an abort mission. Kurtis and I met at Cafe Primo while Kevin & Brandon were away at Sundance. The internet was too slow to work there so Kurtis told me to take the rest of the day off and to play with the Ruby Standard library.

It took me several days and a mini melt down to figure out how to do that. Finally on Monday after going back to Learn Ruby the Hard Way exercise 12 I realized that all you have to do is open a new whatever.rb file and require the gem then you can screw around with it.

I looked up documentation on the abbrev gem. Here are some good links:
http://endofline.wordpress.com/2010/12/25/ruby-standard-library-abbrev/
http://www.aimred.com/news/developers/2010/05/11/rediscovering_ruby_abbrev/

I called the method .abbrev on a the string "elephant" and it returned:
eelephantelephanelephantelephantelephanteleelephantelephelephantelephaelephantelepelephantelelephant
broken into lines it looks like this:
e
elephant
elephan
elephant
elephant
elephant
ele
elephant
eleph
elephant
elepha
elephant
elep
elephant
elelephant


$ gem search -r post_install
*** REMOTE GEMS ***
post_install (0.0.2)

$ gem search -i post_install # installed?
false

Gems
http://net.tutsplus.com/tutorials/ruby/ruby-for-newbies-working-with-gems/

I didn't realize that rails is a gem. Wow.

Tutorials:
http://net.tutsplus.com/sessions/ruby-for-newbies/

https://www.ruby-toolbox.com/

http://guides.rubygems.org/

https://www.ruby-lang.org/en/libraries/

Thursday, January 16, 2014

Day 3 Webrand Platforming Day

At Trails Cafe for our first platforming location.

My tasks today

In the admin/products panel

change out old logo to new log
  not sure what the new logo is

add horizontal stripes to the table
  <table class="table table-striped">
  http://getbootstrap.com/2.3.2/base-css.html

make the heading products smaller and change new to a + symbol
  done

get rid of the word "ADD" between the sizes
  in _products.html  changed
  <td class="sizes"><%= product.sizes.to_sentence %></td> to
  <td class="sizes"><%= product.sizes.to_sentence(last_word_connector: ',') %></td>

change the "A star logo in the footer to the WB logo
  <div><%= image_tag 'wb-teal-logo.png', :size => "75x75" %></div>

add a sort area to sort by mens, womens etc.
  I didn't get to this.

Re-factor Controllers
  Kurtis wants me to go through the controllers and do some re-factoring.
  I looked at some of them. I don't really know where to start because I don't really know much about controller best practices. I found a few articles I am going to read.




  

Wednesday, January 15, 2014

Day 2 WeBrand Pairing Ack Grep

We created a user for me so I can be an admin. I started to fix some issues.

Fixed issues: 

  • We want to remove the unused links on the admin layout so that customers don't see the bad links.
  • Delete Social Links on admin/products page
  • Switch admin/products footer to startuplife footer
  • Create partial of footer app/_footer

Talked with Kevin (co-founder) about admin layout. Changes to be made tomorrow.

Previously I was using Grep to locate files but Kurtis said I should checkout Ack
So I did and I installed Ack http://beyondgrep.com/install/
I need to go through the documentation and play with it a bit.

Law of Demeter don't chain methods together because the expectation on them all returning something. if one returns nil the entire chain breaks.

I realized that rails console is just a version of irb

Tuesday, January 14, 2014

First Day at WeBrand with Kurtis

Yak Shaving Day at WeBrand

Installing RVM again https://rvm.io/rvm/install hope I don't have to implode it again. Last time it broke everything but I was unclear how to even use it so this time I am hoping to learn it properly.

Signing the contract!!

Installing RVM https://rvm.io/rvm/install

Cloning

List remote branches: git remote branch -v   http://gitready.com/intermediate/2009/02/13/list-remote-branches.html

Installing Mysql
  Because I run Linux Ubuntu I had to follow these directions:
    http://ariejan.net/2007/12/12/how-to-install-mysql-on-ubuntudebian/
  When I ran bundle install the mysql2 gem wouldn't work so:
    I did a gem install mysql2 -v '0.3.13'
    That didn't work so I contacted Lars and Kurtis found this link:
      http://stackoverflow.com/questions/3608287/error-installing-mysql2-failed-to-build-gem-native-extension
     I ran $ sudo apt-get install libmysql-ruby libmysqlclient-dev
       Lars' directions: $ apt-get install build-essential libmysqlclient-dev
       if it still complains then try the
       $ apt-get install libmysql-ruby
   and when I ran the bundle install it worked this time.

Seeding the Database:
These are rake commands:
$ SEED_DATA=product bundle exec rake db:create db:migrate db:seed

$ SEED_DATA=pointlessmerch_entries bundle exec rake db:seed

$ SEED_DATA=pointlessmerch bundle exec rake db:seed

Tried to bundle install again and ran into a postgress error:
  PG::Error (fe_sendauth: no password supplied
So I used these directions: http://stackoverflow.com/questions/12452073/trying-to-set-up-postgres-for-ror-app-getting-error-fe-sendauth-no-password
    sudo gvim /etc/postgresql/9.1/main/pg_hba.conf
Lars says: $ sudo su - postgres
                 Then psql

I changed the pg_hba.conf  methods to trust.
Once I did that I restarted $ sudo service postgresql restart

Set up a user in pg
I get this error:createuser: could not connect to database postgres: FATAL:  role "root" does not exist

Google:postgres setup root user
This solved it:
sudo -s -u postgres
createuser -d

Then I seeded the database 
$ SEED_DATA=product bundle exec rake db:create db:migrate db:seed

$ SEED_DATA=pointlessmerch_entries bundle exec rake db:seed

$ SEED_DATA=pointlessmerch bundle exec rake db:seed

I ran $ bundle exec rails s   and it worked.

I now have a local copy of webrand.

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.