14. Conditions if grade >= 10 puts "Yey!" else puts "humpf" end case minutes_late when 0..5 thenputs "ontime" when 5..15 thenputs "fair" when 15..30 thenputs "late" elseputs "doorclosed" end
15. Cycles whilenothungry puts "work" end puts "work" whilenothungry 1.upto(10) { |n|puts n } ['ruby', 'python', 'php'].each do |language| puts "I cancode " + language end
16. Functions defgreetings(names) names.each do |first, last| puts "Hello " + first + " " + last end end names = { 'Sérgio' => 'Santos', 'Pedro' => 'Gaspar' } greetings(names)
24. get '/hello/:name' do @name = params[:name] erb :hello end template :hello do "Hello <%= @name %>" end
25. get '/hello/:name' do @name = params[:name] erb :hello end views/hello.erb: Hello <%= @name %>
26. get '/show' do @names = ['Sérgio', 'Pedro'] erb :show end views/show.erb: <% if @names.empty? %> This place is empty. <% else %> We got: <% for name in @names %> <%= name %> <% end %> <% end %>
29. require 'sinatra' require 'dm-core' require 'dm-migrations' DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/event.sqlite3") class Person include DataMapper::Resource property :id, Serial property :name, String property :email, String property :date, Time, :default => Time.now end DataMapper.auto_upgrade!
30. Types Boolean String Text Float Integer Decimal DateTime, Date, Time http://datamapper.org/docs/properties
34. Validations require 'dm-validations' class Person include DataMapper::Resource property :id, Serial property :name, String property :email, String property :date, Time, :default => Time.now validates_length_of :name, :within => 3..100 validates_uniqueness_of :email end http://datamapper.org/docs/validations
35. Validations get '/' do erb :index end post '/registration' do @person = Person.create(:name => params['name'], :email => params['email']) if @person.saved? erb :thanks else erb :index end end views/index: <p style="color: red;"> <% for error in @person.errors %> <%= error %><br/> <% end %> </p>