Ruby on Rails Oracle adaptera izstrāde
-
Upload
rsim -
Category
Technology
-
view
1.037 -
download
10
Transcript of Ruby on Rails Oracle adaptera izstrāde
![Page 1: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/1.jpg)
Ruby on RailsOracle adaptera izstrāde
+
![Page 2: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/2.jpg)
Raimonds Simanovskis
TietoEnator Alise
![Page 3: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/3.jpg)
Kas irRuby on
Rails?
![Page 4: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/4.jpg)
Ruby irobjektorientēta
dinamiskaprogrammēšanas valoda
vienkārša pēc izskata
spēcīgas iespējas
![Page 5: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/5.jpg)
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
![Page 6: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/6.jpg)
PamatprincipiNeatkārto sevi
DRY - Don’t Repeat Yourself
Vienošanās nevis konfigurēšanaConvention over Configuration
Programmatūra ar viedokliOpinionated software
![Page 7: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/7.jpg)
Komponentes
![Page 8: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/8.jpg)
Active Record (Model)
![Page 9: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/9.jpg)
Action Controller
![Page 10: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/10.jpg)
Action View
![Page 11: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/11.jpg)
Ruby platformasMRI 1.8.6
Ruby/YARV 1.9.1
JRuby
Rubinius IronRuby MacRuby
MagLev BlueRuby
![Page 12: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/12.jpg)
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
![Page 13: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/13.jpg)
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
![Page 14: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/14.jpg)
ActiveRecordOracle Enhanced
Adapter
![Page 15: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/15.jpg)
Ruby on Rails=> Oracle
gem install activerecord-oracle_enhanced-adapter
database.ymldevelopment: adapter: oracle_enhanced database: XE username: blogdemo password: blogdemo encoding: utf8
![Page 16: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/16.jpg)
SQL bind variables
database.ymldevelopment: adapter: oracle_enhanced database: XE username: blogdemo password: blogdemo encoding: utf8 cursor_sharing: similar
Employee.find(1)
SELECT * FROM employees WHERE (employees.id = 1)
SELECT * FROM employees WHERE (employees.id = :SYS_B_0)
ActiveRecord
Oracle optimizer
![Page 17: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/17.jpg)
Oracle Data TypesRuby Rails Oracle
Fixnum :integer NUMBERFloat :float NUMBER
BigDecimal :decimal NUMBER, DECIMALTime :datetime DATETime :time DATEDate :date DATEString :string VARCHAR2String :text CLOBString :binary BLOB
True/FalseClass :boolean NUMBER(1), CHAR(1)
![Page 18: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/18.jpg)
Citi ierobežojumi
Identifikatori līdz 30 simboliem
CLOB / BLOB izmantošana SQL pieprasījumos
LIMIT, OFFSET neesamība
lēni Data Dictionary skatījumi
tukšs String == NULL
Oracle XE nav uz Mac OS X
![Page 19: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/19.jpg)
Multi platformu atbalsts
MRI 1.8.6 Ruby/YARV 1.9.1
JRuby
ruby-oci8 1.x ruby-oci8 2.x JDBC
oracle_enhanced adapter
![Page 20: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/20.jpg)
PL/SQL izsaukšana no Ruby
require "oci8"conn = OCI8.new("hr","hr","xe")
cursor = conn.parse <<-EOSBEGIN :return := test_uppercase(:p_string);END;EOScursor.bind_param(':p_string',"xxx",String)cursor.bind_param(':return',nil,String,4000)cursor.execputs cursor[':return']cursor.close
![Page 21: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/21.jpg)
ruby-plsql gem
gem install ruby-plsql
require "ruby-plsql"plsql.connection = OCI8.new("hr","hr","xe")
puts plsql.test_uppercase('xxx')
![Page 22: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/22.jpg)
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
![Page 23: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/23.jpg)
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
![Page 24: Ruby on Rails Oracle adaptera izstrāde](https://reader030.fdocuments.net/reader030/viewer/2022020122/55592f75d8b42a543d8b4885/html5/thumbnails/24.jpg)
Paldies!http://blog.rayapps.comhttp://github.com/rsim