activerecord-orale_enhanced-       adapterのご紹介      今井(   田)尚人(@elcondor)
自己紹介Ruby歴=Rails歴=3年半くらいJRuby歴=半年ちょこっと好きなメソッドはModule#included,Class#class_evalJRubyで日本語Cucumberを動くようにしました
本日のまとめRailsでOracleを使う場合は、activerecord-oracle_enhanced-adapterがオススメ
OracleでRails?オープンレガシーな企業情報システムといえば、DBはOracleのことが多い→既存システムを活かしたままRailsを使うなら、RailsもOracleに直接つなぐのが楽JRubyは、オープンレガシーとの協調、という文脈で...
What’s oracle_enhaced? Oracle Databaseと繋げます(当たり前) MRIでもJRubyでも使えます 痒いところに手が届いてます
痒いところに手が届く?
例えばこんな場合class	 CreateUsers	 <	 ActiveRecord::Migration	 	 def	 self.up	 	 	 	 create_table	 :users	 do	 |t|	 	 	 	 	 	 ......
DB定義は...    Column          Type   Size             ....   START_ON         DATE    7    END_ON          DATE    7LAST_LOG...
DB定義は...     Column          Type   Size              ....    START_ON      DATE       7     END_ON       DATE       7 LAS...
どう困る?irb(main):001:0>	 User.create!(:name	 =>	 さんぷる,	 	 :login	 =>	 sample,	 :password	 =>	 password,	 	 :start_on	 =>	 Da...
どう困る?irb(main):001:0>	 User.create!(:name	 =>	 さんぷる,	 	 :login	 =>	 sample,	 :password	 =>	 password,	 	 :start_on	 =>	 Da...
そこでoracle_enhanced-adapter       ですよ
まずはdatabase.ymldevelopment:	 	 adapter:	 oracle_enhanced	 	 uri:	 jdbc:oracle:thin:@host:1521:xe	 	 connection_alive_sql:	...
まずはdatabase.ymldevelopment:	 	 adapter:	 oracle_enhanced	 	 uri:	 jdbc:oracle:thin:@host:1521:xe	 	 connection_alive_sql:	...
モデルクラスの実装class	 User	 <	 ActiveRecord::Base	 	 set_date_columns	 :start_on,	 :end_on	 	 ...end
モデルクラスの実装 class	 User	 <	 ActiveRecord::Base 	 	 set_date_columns	 :start_on,	 :end_on 	 	 ... endset_date_columnsで日付扱いするカ...
それでどうなった?irb(main):006:0>	 User.create!(	 	 :name	 =>	 さんぷる,:login	 =>	 sample,	 	 :password	 =>	 password,	 	 :start_on	 ...
それでどうなった?irb(main):006:0>	 User.create!(	 	 :name	 =>	 さんぷる,:login	 =>	 sample,	 	 :password	 =>	 password,	 	 :start_on	 ...
それだけ?他にも命名規則で日付型かどうかを決めたり文字列カラムをフラグに使えたりとか細かく困りそうなところに手が届く
というわけで再まとめOracleでハマりがちな罠を回避するのに、activerecord-oracle_enhanced-adapterが役立つので、ぜひ使いましょう% (sudo) jruby -S gem install activerec...
終
Upcoming SlideShare
Loading in …5
×

activerecord-oracle_enhanced-adapterのご紹介

1,074 views

Published on

  • Be the first to comment

  • Be the first to like this

activerecord-oracle_enhanced-adapterのご紹介

  1. 1. activerecord-orale_enhanced- adapterのご紹介 今井( 田)尚人(@elcondor)
  2. 2. 自己紹介Ruby歴=Rails歴=3年半くらいJRuby歴=半年ちょこっと好きなメソッドはModule#included,Class#class_evalJRubyで日本語Cucumberを動くようにしました
  3. 3. 本日のまとめRailsでOracleを使う場合は、activerecord-oracle_enhanced-adapterがオススメ
  4. 4. OracleでRails?オープンレガシーな企業情報システムといえば、DBはOracleのことが多い→既存システムを活かしたままRailsを使うなら、RailsもOracleに直接つなぐのが楽JRubyは、オープンレガシーとの協調、という文脈で扱われることが多いので、OracleでRailsというのも真剣に考えておいて損はない(多分)
  5. 5. What’s oracle_enhaced? Oracle Databaseと繋げます(当たり前) MRIでもJRubyでも使えます 痒いところに手が届いてます
  6. 6. 痒いところに手が届く?
  7. 7. 例えばこんな場合class CreateUsers < ActiveRecord::Migration def self.up create_table :users do |t| ... t.date :start_on, :null => false t.date :end_on t.datetime :last_logged_at ... end end ...endstart_on/end_onは日付、last_logged_atは日時
  8. 8. DB定義は... Column Type Size .... START_ON DATE 7 END_ON DATE 7LAST_LOGGED_AT DATE 7 .... .
  9. 9. DB定義は... Column Type Size .... START_ON DATE 7 END_ON DATE 7 LAST_LOGGED_AT DATE 7 .... .日付も日時も、OracleならDATE型
  10. 10. どう困る?irb(main):001:0> User.create!(:name => さんぷる, :login => sample, :password => password, :start_on => Date.current)=> #<User id: 10001, name: "さんぷる", login: "sample", password: "password", start_on: "2010-12-25 15:00:00", end_on: nil, last_logged_at: nil, description: nil, created_at: "2010-XX-XX XX:XX:XX", updated_at: "2010-XX-XX XX:XX:XX">
  11. 11. どう困る?irb(main):001:0> User.create!(:name => さんぷる, :login => sample, :password => password, :start_on => Date.current)=> #<User id: 10001, name: "さんぷる", login: "sample", password: "password", start_on: "2010-12-25 15:00:00", end_on: nil, last_logged_at: nil, description: nil, created_at: "2010-XX-XX XX:XX:XX", updated_at: "2010-XX-XX XX:XX:XX">Dateで取り扱いたいカラムがTimeにマッピングされて困る
  12. 12. そこでoracle_enhanced-adapter ですよ
  13. 13. まずはdatabase.ymldevelopment: adapter: oracle_enhanced uri: jdbc:oracle:thin:@host:1521:xe connection_alive_sql: ‘select 1 from dual’
  14. 14. まずはdatabase.ymldevelopment: adapter: oracle_enhanced uri: jdbc:oracle:thin:@host:1521:xe connection_alive_sql: ‘select 1 from dual’adapterにoracle_enhancedを指定
  15. 15. モデルクラスの実装class User < ActiveRecord::Base set_date_columns :start_on, :end_on ...end
  16. 16. モデルクラスの実装 class User < ActiveRecord::Base set_date_columns :start_on, :end_on ... endset_date_columnsで日付扱いするカラムを指定
  17. 17. それでどうなった?irb(main):006:0> User.create!( :name => さんぷる,:login => sample, :password => password, :start_on => Date.current)=> #<User id: 10002, name: "さんぷる", login: "sample", password: "password", start_on: "2010-12-25", end_on: nil, last_logged_at: nil, description: nil, created_at: "2010-12-25 22:18:58", updated_at: "2010-12-25 22:18:58">
  18. 18. それでどうなった?irb(main):006:0> User.create!( :name => さんぷる,:login => sample, :password => password, :start_on => Date.current)=> #<User id: 10002, name: "さんぷる", login: "sample", password: "password", start_on: "2010-12-25", end_on: nil, last_logged_at: nil, description: nil, created_at: "2010-12-25 22:18:58", updated_at: "2010-12-25 22:18:58"> set_date_columnsメソッドによって、 日付型としての取り扱いを強制できた
  19. 19. それだけ?他にも命名規則で日付型かどうかを決めたり文字列カラムをフラグに使えたりとか細かく困りそうなところに手が届く
  20. 20. というわけで再まとめOracleでハマりがちな罠を回避するのに、activerecord-oracle_enhanced-adapterが役立つので、ぜひ使いましょう% (sudo) jruby -S gem install activerecord-oracle_enhanced-adapter
  21. 21.

×