Web aplikāciju izstrāde ar Ruby on Rails un Oracle DB

Post on 18-May-2015

1.563 views 3 download

Transcript of Web aplikāciju izstrāde ar Ruby on Rails un Oracle DB

Web aplikāciju izstrāde ar Ruby on Rails un Oracle

+

Raimonds Simanovskis

TietoEnator Alise

Kas ir Ruby on Rails?

Ruby programmēšanas valoda

• Izveidoja Yukihiro Matsumoto (“Matz”) 1993-1995

• Ietekmējās no Perl, Python, Smalltalk, Lisp, CLU, ...

• “Programming Ruby”, 2000Dave Thomas, Andy Hunt

• Ruby on Rails, 2004David Heinemeier Hansson (DHH)

• 2006 2007

Ruby principi & priekšrocības

Pilnībā objektorientēta valoda

Vienkārša un saprotama sintakse

Elastīgas dinamiskās un metaprogrammēšanas iespējas

Mazāka apjoma kods

Projesionāla un atsaucīga kopiena

Ruby on RailsModerns “tīmekļa lietojumu ietvars”

Veidots Ruby programmēšanas valodā

Radies no 37signals Basecamp aplikācijas

Atvērtā koda programmatūra

Fokusējas uz izstrādātāju produktivitāti

Spējā (Agile) programmatūras izstrādes pieeja

PamatprincipiNeatkārto sevi

DRY - Don’t Repeat Yourself

Vienošanās nevis konfigurēšanaConvention over Configuration

Programmatūra ar viedokliOpinionated software

Komponentes

Active Record (Model)

Action Controller

Action View

Ruby => Oracle

Ruby application

ruby-oci8

require 'oci8'OCI8.new('scott', 'tiger').exec('select * from emp') do |r| puts r.join(',')end

Oracle Instant Client Oracle Database

SQL*Net

JRuby => Oracle

Ruby application

JRuby

require "java"sql = JavaSQL::DriverManager.getConnection(db, user, password)statement = sql.createStatementstatus = statement.execute "select * from parts;"rs = statement.getResultSet()

JDBC driver Oracle Database

SQL*Net

Ruby on Rails=> Oracle

gem install activerecord-oracle_enhanced-adapter

database.ymldevelopment: adapter: oracle_enhanced database: XE username: blogdemo password: blogdemo encoding: utf8

Demonstrācija

jeb kā uztaisīt blogaplikāciju 10 minūtēs...

ruby-plsql gemplsql.connection = OCI8.new("hr","hr","xe")

plsql.test_uppercase('xxx') # => "XXX"plsql.test_uppercase(:p_string => 'xxx') # => "XXX"plsql.test_copy("abc", nil, nil) # => { :p_to => "abc", # :p_to_double => "abcabc" }plsql.test_copy(:p_from => "abc", :p_to => nil, :p_to_double => nil) # => { :p_to => "abc", # :p_to_double => "abcabc" }plsql.hr.test_uppercase('xxx') # => "XXX"plsql.test_package.test_uppercase('xxx') # => 'XXX'plsql.hr.test_package.test_uppercase('xxx') # => 'XXX'

plsql.logoff

PL/SQL procedūras

esošās datubāzēs

class Employee < ActiveRecord::Base set_create_method do plsql.employees_pkg.create_employee( :p_first_name => first_name, :p_last_name => last_name, :p_employee_id => nil )[:p_employee_id] end set_update_method do plsql.employees_pkg.update_employee( :p_employee_id => id, :p_first_name => first_name, :p_last_name => last_name ) end set_delete_method do plsql.employees_pkg.delete_employee( :p_employee_id => id ) endend

Ruby on Rails + Oracle references

Paldies!http://blog.rayapps.comhttp://github.com/rsim