0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
167 Ansichten6 Seiten
RAILS 3 BUNDLER COMMANDS required I optional GEMFILE SYNTAX WORKFLOW $ bundle Make sure all dependencies in your Gemfile are available to your application. If they are not available, go install them.
RAILS 3 BUNDLER COMMANDS required I optional GEMFILE SYNTAX WORKFLOW $ bundle Make sure all dependencies in your Gemfile are available to your application. If they are not available, go install them.
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
RAILS 3 BUNDLER COMMANDS required I optional GEMFILE SYNTAX WORKFLOW $ bundle Make sure all dependencies in your Gemfile are available to your application. If they are not available, go install them.
Copyright:
Attribution Non-Commercial (BY-NC)
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
BASIC ROUTING
OPTIONAL
PARAMETERS
REDIRECTION
NAMED ROUTES
RACK ROUTING
CONSTRAINTS
LEGACY ROUTE
SCOPE
RAILS 3
@ ROUTING API
NESTED ROUTES
YourApp: Application. routes.draw do
esources :posts
fateh "/all' => ‘posts#index'
oot sto => "honebindex*
end!
natch */posts(/:yy(/:am))" => "poststindex”
class Postscontrolter < Applicationcontrotter
‘def index
# parans{¥y]
parans (mn)
end
atch */sign_cut*
fateh */users/nane’
natch */googte"
redirect(*/signout")
redirect {jparans| "/e{paranstsnane]}">
redirect ‘http://go0gle-com")
namespace :api do
Manespace ‘internal do
Tesources accounts ¢o
rember 6
get :sumary
ost suspend
ent
post :contirn, ion => :menber
Eoilection 30
get :pending
end
get :blocked,
end
on => collection
+ Gives you sign in_path helper
a
get */netto®
Get ‘rack endpoint
get */rack-ap"
proc {Jenv| 200, (2, *Hetto Rack"I>
PostsControtler-action(:index)
CustomRackape
mmateh */:year*
posterindex,
year => Adta)/,
constraints shost = /locathost/) do
constraints IpRestrictor
get “adnin/accounts" => "queenbeetaccounts
end
atch */:controtler(/:action(/:id(.:format)))" =
Ap => /192\,168\.1\.\441,3)/
Gives reset password path'key’)
Responds to selfimatches?(request)
[~ ‘Commented out by default
scope *:token',
token = wish do
resources Foon do
Tesourees incetings
end
end
scope *(:tocate)",
Fesources. :posts
Foot sto => "poststindex’
locate = /en|p/ do ——
Requires token parameter to get to resources
and must be § alphanumeric characters
[— Locale is optional for these routes
sina 1SRAILS 3
BUNDLER
BUNDLER $ bundle $ bundle show [gen_nane]
COMMANDS | Sicsicctiteytereraalie goinlthon epancenc igor gen, owe wheel sda
< > requied $ bundle —-without
{ Teptonal ] reas eveything exept geme incade in
(Opens the gem source inthe deft eo.
$ bundle ~—deploynent
olates al gems ito vendo/ound, raques upto date $ bundle update [gen_nane]
Gemfle lac use gem in vendorcache fay exit. Recrentes Gemleck nd une bunde”t instal new dependencies
$ bundle check $ bundle package
Checks ifthe dependencies tinted in Gee Copies all roject gems to vendr/ache/—use tif you dont
Sr ssienedby curently ntl gem ‘nan rayon estar errs er depoymant
GEMFILE source "nttp://rubygens.org” ‘Additional parameters
SYNTAX gen “hpricot”, "0.6
gen : sqlites"
en /Sites/local_gen”
gen git: /githud.con/rails/rasts.git™
git “git://qithu.com/rails/ratis.git" do
gen "raitties"
gem “active _nadet"
end
Creating a gemset for your app
Near:
a eee
3 fim Senet ace ne
sroup :test do 5
Nee eres caterer ieee)
WORKFLOW | peveloping a new application
1. § cd new_260/
2 $ Sinden anie sr
2. Aad pfs doped
4 Chee cae rd Gerelck into Ves
After adding or removing dependencies from Gemfile
1. § bundte
2 Commit Gemfile and Gemfelock
After modifying existing dependency versions
1. § bundle update
2. Commit Gentile and Gemflelock
Deploying your application
$ bundle package * locally
§ bundle # server
installs ge fom vendor/cache -no extemal seer communication.
For more info, visit htp//gembundlercom
envylabs
wiRAILS 3
@ ACTIVERELATION
LAZY LOADING
posts = Post.order(parans|:order])
@published "= posts.where(:published => true)
Gunpublished = posts.where( :published => false)
CRUD
METHODS
sports_posts = Post.where(:categary => ‘sports")
hne«_sports_post
‘new_sports_post.
plished => false)
true
sports_posts.update_al
sports_posts.exists? #
CHAINING
Gjoe_posts = Post.where(:authar => “Joe").includes(: comments). Limit (10)
Foxes query execution ond
(NAMED) SCOPES — ctass post = activenecors::tase retus an ary, not elation
default_scope order('titie')
‘scope :published, where(:published => true)
‘scope iunpublished, where(:published => false)
end
DEPRECATED find(ad-or-orray-of-ids, options) su opoon -
find(:first, options options are now se
fFind(zatt, options) Using the chain methods
tirst(options)
alt(options)
Update_alU(updates, conditions, options)
Produced by
envylabsXSS PROTECTION
UNOBTRUSIVEJS
HTMLS CUSTOM
DATAATTRIBUTES sew-sevos
DEPRECATED
USING JQUERY
RAILS 3
@ YSS PROTECTION & WS
<= Qpost.body % ——>
safe by default unsafe
t= Link to raw("
not escaped escaped not escaped
> true
de form for(gpost, sremote => true) do |f| %
nethod => idelete =
= Link to ‘Destroy’, epost,
Gata-renote —_data-confirm
y-disable-with
Go to https/fjthub comyralsjquery-us for instructions
Produced by
envylabs® Atti
RAILS 3
RGA
RAILS MAIL GENERATOR
BASIC MAILER SYNTAX
DELIVERING MESSAGES
DEFAULTS AND
ATTACHMENTS
RESPOND_ TO AND
RESPOND_ WITH
rails generate mailer Usertlailer welcone forgot_password —
Creates:
class Userlailer < ActionHailer: :Base apprncws/ser abril
def welcone(user, subdomain) soph aewshee sae
user = user
(subdomain = Subdomain a7 5
mail(: from => ‘admingapp.con ese instance variables are
tom euserrensity dvalable within your view
subject => ‘Welcone*)
end
end
Usertlailer.welcone(user, subdonain) deliver
message = UserMailer.welcone(user, subdonain)
nnessage.deLiver
class Usertailer < ActionMailer: #1
default :fron => ‘admingtest. con
ply_to => ‘noreply@test. com
“Timé-Code" => Tine,now.to_i.to_s
ees eae)
fst easter cocoa
stiscments[‘testrpat']_ = File-read{ Rails. root oin( ‘public/test.pdf"))
attachments['photo.jpg'] = { :content => generate_image()
maill:to evseicers subject => ‘Welcome to TestApp') do | format]
ae ecae eters ta Rent el
xt { render “otheratextowetcme’ }) Deets Tes
class UsersControtler < ApplicationControtler
Fespond_to :html, :json, only => :index
respond to :xml,” :except => :index
def index
respond_with(@users = User.all, :status => +
end
def create
‘user = User. create(params{:user])
respond withi@user) do |fornat|
fornat.html { redirect_to(users_path) }
end
end
end
envylabs
wi“ACTIVEMODEL
RAILS 3
DIRTY
VALIDATIONS
SERIALIZATION
CALLBACKS
class Person
include ActiveModel::Dirty
define attribute methods [:nanel
det name
‘@nane
end
def nane=(val)
rnane_wil_change!
@nane = val
end
def save
@previously_changed = changes
@changed_attributes.clear
end
end
class Person
Include Activetodel: :Validations
attraccessor :enail
validates presence_of :enail
end
= Person.new
Person: 0x000002021071
Lid?
peerrors
> Cenai
‘can't be blank"1}
class Person
Include Activetlodel: :Serializers:
attraccessor :name
det attributes
{sname => name}
end
end
class Person
extend ActiveModel::CaLtbacks
define model_cal backs :save
before_save faction before save
def save
—run_save_callbacks do
# Your save action methods here
end
end
private
def action_before_save
end
end
>> person = Person.find{ id)
3> person. changed?
= fatce
>> person.nane = ‘Bob!
35 person. changed?
>> person.nane_changed?
>> person.nane_was
>> person.nane_change
= T'unele Bob", "B0b')
>> person.nane = ‘Bitl'
> person. nane_change
TUnete Bob", "BILL
Shortcuts
validates :torms, sacceptance => true
Validates password, confirmation => true
Validates Husernane, :exclusia
validates :enail, :fornat
swith => AUST 0
create }
age, tnclusio
validates
MODULES
Attributeethods
Cattbacks:
birty
Errors
Naming
Observing
Serialization
Validations
Cain's sw(adain)
2-20-9] \.) +1a-21{2,)1\2/i,
sn 0.9)
validates :first-none,.slength => { snaxinun => 30 }
validates :2ge, inunericality
validates ‘username, ‘presence => trve
mniqueness => rue
validates :usernane,
>> p = Person.new
> R> ponane = "Grego"
Gregg)
> p.to_ison
Grega\"}
sina 1S