puts 'hello ruby on rails'
by amol.pujari
Why should you switch to Ruby? If you are happy with Perl or Python, you don't
have to. But if you do feel there must be a better language, Ruby may be your
language of choice. Learning a new language is harmless. It gives you new
ideas and insights. You don't have to switch, just learn and try it. You may find
yourself comfortable enough with Ruby to decide to switch to it.
- Matz (Yukihiro Matsumoto), written ruby in 1995
Agenda.items.each {|item| puts item}
RoR - Market Trend
Know ruby
Principles
Features
Ruby on rails
Principles
Building blocks
Caching
Security
Community Support
Market Trend - Need for Ruby on Rails
Less “Time To Market”
Quick to build & deploy
Its free
Rapid application development
Handle traffic – when needed
Huge free libraries with strong community support
Ruby
A scripting language
Purely Object Oriented
Extreme dynamic
Easy to learn, simple
Influenced by Python, Perl and Lisp
Open source and free
Cross Platform
Ruby - Programming is fun, enjoy it
You don't want to fight with the language, feel natural
Be creative
Ruby - concise and succinct
Concentrate on the problems
Its like pseudo-code, simple
Focus on human factor
Ruby - extreme dynamic
eval, meta-programming, reflection, Open Classes
if you want to try out all these examples given then
download ruby from http://www.ruby-lang.org/en/downloads/
open console, type irb, and enter
have fun …
end
# so simple
often my code requires no comments - amol.pujari
ruby on rails
extracted by David Heinemeier Hansson from his work on Basecamp, a project
management tool by 37signals
Ruby on Rails: Rapid application development
Web application framework
Free
Very less code
Fast development & client appreciation
Quick incremental development model
Multiple Databases support
Testing support
Continues Integration support
Deployment support
Cloud ready solution
Ruby on Rails: Principles - CoC
Conventions Over Configurations
Database table name: books { id(pk), created_at, updated_at }:unicode
Database migration: app/db/migrate/<ts>_create_books.rb
Model: class Book => app/models/book.rb
Views: app/views/books/
Controller: class BooksController => app/controllers/books_controller.rb
Unit tests: app/test/unit/book_test.rb
Fixtures: app/test/fixtures/books.yml
Functional tests: test/functional/books_controller_test.rb
Routes: resources :books =>
Rails: building blocks
ORM: Active Record
Action Pack
Action Dispatch
Action Controller
Action View
Active Support
Active Model, Active Resource, Action Mailer
Railties
Rails: Active Record
CRUD support migrations
Model level validations Associations
Callbacks Query interface
Rails: Security
Session Hijacking
Stealing a user’s session_id
Use database store and SSL
Session Fixation
Attacker fixes a session id known to her
Issue a new session identifier (reset_session in RAILS)
Cross-Site Request Forgery (CSRF)
Rails includes a security token in non-GET requests
SQL Injection
Unauthorized reading/writing
Model.first(:conditions => ["login = ? AND password = ?",
entered_user_name, entered_password])
attr_protected :is_admin
HTML/JavaScript Injection
h @book.description # => 'alert('script inside');'
[email_address] -Ruby has a wealth of other features, among which are the following: Ruby has exception handling features, like Java or Python, to make it easy to handle errors. Ruby features a true mark-and-sweep garbage collector for all Ruby objects. No need to maintain reference counts in extension libraries. As Matz says, “This is better for your health.” Writing C extensions in Ruby is easier than in Perl or Python, with a very elegant API for calling Ruby from C. This includes calls for embedding Ruby in software, for use as a scripting language. A SWIG interface is also available. Ruby can load extension libraries dynamically if an OS allows. Ruby features OS independent threading. Thus, for all platforms on which Ruby runs, you also have multithreading, regardless of if the OS supports it or not, even on MS-DOS! Ruby is highly portable: it is developed mostly on GNU/Linux, but works on many types of UNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc.