Ruby on Rails

From Wikicliki
Jump to: navigation, search

Ruby is a language, rails is a framework. Ruby is a object-oriented, general purpose language. I attended a Railsbridge session at newcontext on 13 May 2012. These are some notes from that lesson.

rails philosophy

  • opinionated
  • convention over configuration
  • don't repeat yourself
  • test driven
  • minimal code - maximal effect

the tools

  • rails
  • rake - like make for ruby (an easy way to run tasks)
  • git - source code control
  • database - SQlite
  • heroku - free rails hosting

the command line

  • Current directory: . ("dot")
  • Parent directory: .. ("dot dot")
  • Home directory: ~ ("tilde")
  • ls - list
  • cd - go to directory (use cd ~ to go backwards)
  • pwd - "print working directory"
  • echo - repeats it (used to echo out $PATH)
  • touch - creates a file
  • cat - tells info
  • mv - move
  • cp - copy
  • rm - remove (DELETE FOREVER)
  • man <command> - tells you more (press q to get out) (man - manual)
  • mkdir - make directory
  • rmdir - remove directory
  • mdfind - find file (find via spotlight)

Example:

  • to rename a file frm file1 to file2 and move file to a different dir: mv file1 dir1/file2
  • Command-K to clear screen
  • cat <filename> - prints the file
  • ruby <filename> - runs the file
  • git status - check git (versioning) status
  • git add . - prepare to commit everything all files
  • git add <filename> - prepare to commit specific file
  • git commit -m - commit that file
  • git help <function name>

irb test example

1.9.3p194 :024 > def test (name="debbie", country="singapore")
1.9.3p194 :025?>   puts "My name is #{name}"
1.9.3p194 :026?>   puts "My country is #{country}"
1.9.3p194 :027?>   end
 => nil 
1.9.3p194 :028 > test
My name is debbie
My country is singapore
 => nil 
1.9.3p194 :029 > 

standalone file test - newfile.rb

use chomp to delete the extra line break. ! means WATCH OUT

# Clear screen
puts "\e[H\e[2J"

# Ask
puts "What is your name?"
$name = STDIN.gets
puts "\e[H\e[2J"
$name.chomp!
# $name = $name.reverse
puts "Hello " + $name
puts "Where do you live?"

$place = STDIN.gets
puts "\e[H\e[2J"
puts "Hello "+$name+" who lives in " + $place

pretty links

the pretty permalinks are referred to as "slug" here, there are slugger and slugify plugins but those are more complicated. to_param will do to make a pretty link. this code goes into the model.

def to_param  # overridden
	 "#{id}-#{title.parameterize}"
end

Naming Conventions

  • methods and variables are in snake_case
  • classes and modules are in CamelCase
  • constants are in ALL_CAPS

Variables

  • var # local variable (or method call)
  • @var # instance variable
  • @@var # class variable
  • $var # global variable
  • VAR # constant

CRUD

  • Create new records in the database
  • Read or show the records in the database
  • Update existing records
  • Destroy or delete records

See Also