> gem install rails
> sudo apt-get install ruby-full build-essential
> sudo gem install rails
> brew install postgres
> brew install git
If you're not a member, join
Pragmatic Version Control Using Git
http://pragprog.com/book/tsgit/pragmatic-version-control-using-git
> "Test" => "Test" > ["A", 1, 0.5] => ["A", 1, 0.5] > 1 + 2 => 3
> hash = { :a => 1, :b => "B", :c => [1, 2]}
> hash[:a]
=> 1
> hash = { "a" => 1, :b => "B", :c => [1, 2]}
> hash["a"]
=> 1
> hash[:a]
=> nil
class User
def name
"Barack Obama"
end
def age
50
end
end
> user = User.new > user.name => "Barack Obama" > user.age => 50
def age 50 end
def age(year) year - 1961 end
> user.age(2012) => 51
> total = 1 + 1 > total = total + 1 > total => 2
class User
def age=(age)
@age = age
end
def age
@age
end
end
> user = User.new
> user.age
=> nil
> user.age = 32
> user.age
=> 32
if 0 "it works" end
if false "does not reach here" elsif null "also does not reach here" elsif 0 "will reach here" else "never touches this" end
if !false_statement
unless false_statement
for i in [1, 2, 3] puts i end => 1 2 3
while true puts 1 end => 1 1 etc...
[1,2].each do |i| puts i end => 1 2
> [1,2].map { |i| i * 2 }
=> [2,4]
[1,2].select { |i|
i % 2 == 0
}
=> [2]
gem install rails
Programming Ruby, "Pickaxe"
http://pragprog.com/book/ruby3/programming-ruby-1-9
The Ruby Way
Design Patters in Ruby
http://test.com/users match 'users' => 'users#index'
http://test.com/users/1 match 'users/:id' => 'users#show'
class UsersController < ApplicationController
def index
...
end
end
def show @user = User.find params[:id] end
class UsersController < ApplicationController
before_filter :get_user, :only => [:show]
def get_user
@user = User.find(params[:id])
end
end
class User < ActiveRecord::Base end
> User.create(:name => 'Barack Obama')
> user = User.new(:name => 'Barack Obama') > user.save
> User.find(1) User1
> User.all => [User1, User2, ...]
> User.where(:name => 'Barack Obama') => User1 > User.where(:age => 31) => User2
> user = User.find(1) > user.name = 'Abraham Lincoln' > user.save
> user = User.find(1) > user.update_attributes(:name => 'Abramham Lincoln')
> user = User.find(1) > user.destroy
class User < ActiveRecord::Base has_one :dog end
class Dog < ActiveRecord::Base belongs_to :user end
> user = User.find(1) > user.create_dog :name => 'Woof' > user.dog => Dog1
class CreateUsers < ActiveRecord::Migration
def up
create_table :users do |t|
t.string :name
t.integer :age
t.timestamps
end
end
def down
drop_table :users
end
end
class CreateDogs < ActiveRecord::Migration
def up
create_table :dogs do |t|
t.string :name
t.integer :user_id
t.timestamps
end
end
def down
drop_table :dogs
end
end
class User < ActiveRecord::Base validates :name, :presence => true end > user = User.new > user.valid? => false > users.errors[:name] => "must be present"
validates :age, :numericality => true > user = User.new(:age => 'thirty five') > user.save > user.errors[:age] > "is not a number"
class User < ActiveRecord
def name
first_name + " " + last_name
end
end
<ul>
<% User.all.each do |user| %>
<li>
<%= user.name %>
</li>
<% end %>
</ul>
<ul>
<li>
Barack Obama
</li>
<li>
Abraham Lincoln
</li>
</ul>
class UsersController < ApplicationController
def index
@users = User.all
end
end
<ul>
<% @users.each do |user| %>
<li>
<%= user.name %>
</li>
<% end %>
</ul>
module UserHelper
def all_users
User.all
end
end
<ul>
<% all_users.each do |user| %>
<li>
<%= user.name %>
</li>
<% end %>
</ul>
http://test.com/users/1
GET, POST, PUT, DELETE
resources :users
[GET] /users => users#index [POST] /users => users#create [GET] /users/new => users#new [GET] /users/:id => users#show [GET] /users/:id/edit => users#edit [PUT] /users/:id => users#update [DELETE] /users/:id => users#destroy
class UsersController < ApplicationController def index end def new end def show end def edit end def create end def update end def destroy end end
app/
assets/
javascripts/
stylesheets/
images/
> rails g model User name:string age:integer => db/migrate/20111131_create_users_migration.rb => app/models/user.rb
> rails g scaffold Dog name:string user_id:integer => app/controllers/dogs_controller.rb => app/helpers/dogs_helper.rb => db/migrate/20111131_create_dogs_migration.rb => app/models/dog.rb => app/views/dogs/index.html.erb => app/views/dogs/new.html.erb => app/views/dogs/show.html.erb
The RSpec Book
http://pragprog.com/book/achbd/the-rspec-book
Agile Web Development With Rails
http://pragprog.com/book/rails4/agile-web-development-with-rails
The Rails 3 Way
RailsCasts
Rails for Zombies
PeepCode
RailsMentors
/