際際滷

際際滷Share a Scribd company logo
activerecord-orale_enhanced-
       adapterのごB初
      書小(   弥)賓繁(@elcondor)
徭失B初
RubysRailss3定磯くらい

JRubys衆訥蠅舛腓海辰

挫きなメソッドはModule#included,
Class#class_eval
JRubyで晩云ZCucumberを咾ように
しました
云晩のまとめ

RailsでOracleを聞う栽は、
activerecord-oracle_enhanced-adapterが
オススメ
OracleでRails
オ`プンレガシ`な二I秤鵐轡好謄爐
いえば、DBはOracleのことが謹い
★屡贋システムを試かしたままRailsを聞う
なら、RailsもOracleに岷俊つなぐのがS

JRubyは、オ`プンレガシ`とのf{、という猟
}でQわれることが謹いので、OracleでRailsと
いうのも寔に深えておいてpはない(謹蛍)
What¨s oracle_enhaced?

 Oracle Databaseと、欧泙(輝たり念)


 MRIでもJRubyでも聞えます


 剽いところに返が曙いてます
剽いところに返が曙く?
箭えばこんな栽
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

	 	 ...
end
start_on/end_onは晩原、last_logged_atは晩r
禽京協吶は...
    Column          Type   Size
             ....
   START_ON         DATE    7
    END_ON          DATE    7
LAST_LOGGED_AT      DATE    7
            ....
             .
禽京協吶は...
     Column          Type   Size
              ....
    START_ON      DATE       7
     END_ON       DATE       7
 LAST_LOGGED_AT   DATE       7
             ....
              .
晩原も晩rも、OracleならDATE侏
どう是る?
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">
どう是る?
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で函りQいたいカラムがTimeに
マッピングされて是る
そこで
oracle_enhanced-adapter
       ですよ
まずはdatabase.yml
development:
	 	 adapter:	 oracle_enhanced
	 	 uri:	 jdbc:oracle:thin:@host:1521:xe
	 	 connection_alive_sql:	 `select	 1	 from	 dual¨
まずはdatabase.yml
development:
	 	 adapter:	 oracle_enhanced
	 	 uri:	 jdbc:oracle:thin:@host:1521:xe
	 	 connection_alive_sql:	 `select	 1	 from	 dual¨


adapterにoracle_enhancedを峺協
モデルクラスのg廾

class	 User	 <	 ActiveRecord::Base
	 	 set_date_columns	 :start_on,	 :end_on
	 	 ...
end
モデルクラスのg廾

 class	 User	 <	 ActiveRecord::Base
 	 	 set_date_columns	 :start_on,	 :end_on
 	 	 ...
 end



set_date_columnsで晩原Qいするカラムを
峺協
それでどうなった?
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">
それでどうなった?
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メソッドによって、
 晩原侏としての函りQいを崙できた
それだけ?

麿にも

凋兆tで晩原侏かどうかをQめたり

猟忖双カラムをフラグに聞えたりとか

かく是りそうなところに返が曙く
というわけで壅まとめ

OracleでハマりがちなFを指閲するのに、
activerecord-oracle_enhanced-adapterが叨羨
つので、ぜひ聞いましょう

% (sudo) jruby -S gem install activerecord-
oracle_enhanced-adapter
嶮

More Related Content

温界岳庄厩艶姻艶界看姻糸-看姻温界鉛艶喝艶稼鞄温稼界艶糸-温糸温沿岳艶姻のご府初

Editor's Notes

  1. &amp;#x4ECA;&amp;#x4E95;(&amp;#x3068;&amp;#x3088;&amp;#x3060;)&amp;#x3068;&amp;#x8A00;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;\nTwitter&amp;#x3067;&amp;#x306F;@elcondor&amp;#x3067;&amp;#x3064;&amp;#x3076;&amp;#x3084;&amp;#x3044;&amp;#x3066;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x3088;&amp;#x308D;&amp;#x3057;&amp;#x304F;&amp;#x304A;&amp;#x306D;&amp;#x304C;&amp;#x3044;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n\n
  2. &amp;#x521D;&amp;#x767B;&amp;#x5834;&amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x300C;&amp;#x304A;&amp;#x524D;&amp;#x306F;&amp;#x4F55;&amp;#x8005;&amp;#x306A;&amp;#x3093;&amp;#x3060;&amp;#x300D;&amp;#x3068;&amp;#x601D;&amp;#x308F;&amp;#x308C;&amp;#x308B;&amp;#x65B9;&amp;#x304C;&amp;#x591A;&amp;#x3044;&amp;#x304B;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x306E;&amp;#x3067;&amp;#x3001;&amp;#x81EA;&amp;#x5DF1;&amp;#x7D39;&amp;#x4ECB;&amp;#x3092;&amp;#x7C21;&amp;#x5358;&amp;#x306B;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\nRuby&amp;#x6B74;&amp;#x3068;&amp;#x304B;JRuby&amp;#x6B74;&amp;#x306F;&amp;#x3001;&amp;#x3053;&amp;#x3053;&amp;#x306B;&amp;#x66F8;&amp;#x3044;&amp;#x305F;&amp;#x901A;&amp;#x308A;&amp;#x3067;&amp;#x3059;&amp;#x3002;\nJRuby&amp;#x30B3;&amp;#x30DF;&amp;#x30E5;&amp;#x30CB;&amp;#x30C6;&amp;#x30A3;&amp;#x3078;&amp;#x306E;&amp;#x8CA2;&amp;#x732E;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x306F;&amp;#x3001;&amp;#x65E5;&amp;#x672C;&amp;#x8A9E;Cucumber&amp;#x3092;&amp;#x66F8;&amp;#x3051;&amp;#x308B;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x3059;&amp;#x308B;&amp;#x3001;JRuby&amp;#x672C;&amp;#x4F53;&amp;#x3078;&amp;#x306E;&amp;#x30D1;&amp;#x30C3;&amp;#x30C1;&amp;#x3092;&amp;#x66F8;&amp;#x3044;&amp;#x305F;&amp;#x3001;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  3. &amp;#x3067;&amp;#x3001;&amp;#x3044;&amp;#x304D;&amp;#x306A;&amp;#x308A;&amp;#x4ECA;&amp;#x65E5;&amp;#x306E;&amp;#x307E;&amp;#x3068;&amp;#x3081;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;\nRails&amp;#x3067;oracle&amp;#x3092;&amp;#x4F7F;&amp;#x3046;&amp;#x5834;&amp;#x5408;&amp;#x306F;&amp;#x3001;activerecord-oracle_enhanced-adapter&amp;#x3092;&amp;#x4F7F;&amp;#x3044;&amp;#x307E;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3001;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x306B;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n
  4. Oracle&amp;#x3067;Rails?&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x5411;&amp;#x304D;&amp;#x3082;&amp;#x3042;&amp;#x308B;&amp;#x304B;&amp;#x3068;&amp;#x601D;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x306A;&amp;#x3093;&amp;#x3060;&amp;#x304B;&amp;#x3093;&amp;#x3060;&amp;#x3067;&amp;#x4F7F;&amp;#x3046;&amp;#x5C40;&amp;#x9762;&amp;#x306F;&amp;#x591A;&amp;#x3044;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x601D;&amp;#x3046;&amp;#x306E;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\nJRuby&amp;#x306F;&amp;#x7279;&amp;#x306B;&amp;#x3001;&amp;#x30AA;&amp;#x30FC;&amp;#x30D7;&amp;#x30F3;&amp;#x30EC;&amp;#x30AC;&amp;#x30B7;&amp;#x30FC;&amp;#x3001;&amp;#x4F8B;&amp;#x3048;&amp;#x3070;EJB&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x306A;&amp;#x3093;&amp;#x304B;&amp;#x3068;&amp;#x306E;&amp;#x9023;&amp;#x643A;&amp;#x3001;&amp;#x307F;&amp;#x305F;&amp;#x3044;&amp;#x306A;&amp;#x6587;&amp;#x8108;&amp;#x3067;&amp;#x6271;&amp;#x308F;&amp;#x308C;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x591A;&amp;#x3044;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x601D;&amp;#x3046;&amp;#x306E;&amp;#x3067;&amp;#x3001;\n
  5. &amp;#x3067;&amp;#x3001;&amp;#x3058;&amp;#x3083;&amp;#x3042;oracle_enanced&amp;#x3063;&amp;#x3066;&amp;#x4F55;&amp;#x306A;&amp;#x306E;&amp;#x304B;?&amp;#x3063;&amp;#x3066;&amp;#x3053;&amp;#x3068;&amp;#x306B;&amp;#x306A;&amp;#x308B;&amp;#x3093;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;Oracle&amp;#x306B;&amp;#x7E4B;&amp;#x3052;&amp;#x308B;&amp;#x306E;&amp;#x306F;&amp;#x5F53;&amp;#x7136;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x3001;MRI&amp;#x3067;&amp;#x3082;JRuby&amp;#x3067;&amp;#x3082;&amp;#x540C;&amp;#x69D8;&amp;#x306B;&amp;#x4F7F;&amp;#x3048;&amp;#x307E;&amp;#x3059;&amp;#x3002;MRI&amp;#x3067;&amp;#x306F;ruby-oci8&amp;#x306B;&amp;#x3001;JRuby&amp;#x3067;&amp;#x306F;JDBC oracle driver&amp;#x306B;&amp;#x4F9D;&amp;#x5B58;&amp;#x3059;&amp;#x308B;&amp;#x8A33;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n&amp;#x305D;&amp;#x308C;&amp;#x304B;&amp;#x3089;&amp;#x6700;&amp;#x5927;&amp;#x306E;&amp;#x7279;&amp;#x5FB4;&amp;#x3067;&amp;#x3059;&amp;#x304C;&amp;#x3001;&amp;#x300C;&amp;#x75D2;&amp;#x3044;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x306B;&amp;#x624B;&amp;#x304C;&amp;#x5C4A;&amp;#x3044;&amp;#x3066;&amp;#x308B;&amp;#x300D;&amp;#x3093;&amp;#x3067;&amp;#x3059;&amp;#x3002;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x3001;\n
  6. &amp;#x75D2;&amp;#x3044;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x306B;&amp;#x624B;&amp;#x304C;&amp;#x5C4A;&amp;#x304F;&amp;#x3063;&amp;#x3066;&amp;#x3069;&amp;#x3046;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x3088;?&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x4ECA;&amp;#x65E5;&amp;#x306E;&amp;#x672C;&amp;#x984C;&amp;#x3067;&amp;#x3059;&amp;#x3002;\n&amp;#x524D;&amp;#x7F6E;&amp;#x304D;&amp;#x9577;&amp;#x3044;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  7. &amp;#x4F8B;&amp;#x3048;&amp;#x3070;&amp;#x3001;&amp;#x3053;&amp;#x3093;&amp;#x306A;&amp;#x30B3;&amp;#x30FC;&amp;#x30C9;&amp;#x3092;&amp;#x8003;&amp;#x3048;&amp;#x3066;&amp;#x307F;&amp;#x307E;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;\nstart_on&amp;#x3068;end_on&amp;#x306F;&amp;#x65E5;&amp;#x4ED8;&amp;#x578B;&amp;#x3001;last_logged_at&amp;#x306F;&amp;#x65E5;&amp;#x6642;&amp;#x578B;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  8. &amp;#x3067;&amp;#x3082;&amp;#x3001;Oracle&amp;#x3067;&amp;#x306F;&amp;#x3069;&amp;#x3061;&amp;#x3089;&amp;#x3082;&amp;#x3001;&amp;#x533A;&amp;#x5225;&amp;#x305B;&amp;#x305A;DATE&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x53D6;&amp;#x308A;&amp;#x6271;&amp;#x3044;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x3053;&amp;#x308C;&amp;#x304C;&amp;#x3069;&amp;#x3046;&amp;#x3044;&amp;#x3046;&amp;#x3053;&amp;#x3068;&amp;#x3092;&amp;#x5F15;&amp;#x304D;&amp;#x8D77;&amp;#x3053;&amp;#x3059;&amp;#x304B;&amp;#x3001;&amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x3068;...\n
  9. &amp;#x7AEF;&amp;#x7684;&amp;#x306B;&amp;#x8A00;&amp;#x3048;&amp;#x3070;&amp;#x3001;Ruby&amp;#x3067;&amp;#x306F;Date&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x6271;&amp;#x3044;&amp;#x305F;&amp;#x3044;&amp;#x30AB;&amp;#x30E9;&amp;#x30E0;&amp;#x304C;&amp;#x3001;&amp;#x52DD;&amp;#x624B;&amp;#x306B;Time&amp;#x306B;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x56F0;&amp;#x3063;&amp;#x305F;&amp;#x308A;&amp;#x3059;&amp;#x308B;&amp;#x8A33;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  10. &amp;#x3053;&amp;#x3053;&amp;#x3067;oracle_enhanced-adapter&amp;#x306E;&amp;#x767B;&amp;#x5834;&amp;#x3068;&amp;#x306A;&amp;#x308B;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  11. &amp;#x307E;&amp;#x305A;&amp;#x306F;&amp;#x3001;database.yml&amp;#x306E;&amp;#x8A2D;&amp;#x5B9A;&amp;#x3092;&amp;#x3057;&amp;#x307E;&amp;#x3059;&amp;#x3002;\n&amp;#x3068;&amp;#x3044;&amp;#x3063;&amp;#x3066;&amp;#x3082;&amp;#x3001;adapter&amp;#x3092;&amp;#x5909;&amp;#x3048;&amp;#x308B;&amp;#x4EE5;&amp;#x5916;&amp;#x306B;&amp;#x306F;&amp;#x4F55;&amp;#x3082;&amp;#x5909;&amp;#x3048;&amp;#x306A;&amp;#x304F;&amp;#x3066;OK&amp;#x3067;&amp;#x3059;&amp;#x3002;\n
  12. &amp;#x3064;&amp;#x3044;&amp;#x3067;&amp;#x3001;&amp;#x30E2;&amp;#x30C7;&amp;#x30EB;&amp;#x30AF;&amp;#x30E9;&amp;#x30B9;&amp;#x306B;set_date_columns&amp;#x3059;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x3067;&amp;#x3001;&amp;#x65E5;&amp;#x4ED8;&amp;#x6271;&amp;#x3044;&amp;#x3059;&amp;#x308B;&amp;#x30AB;&amp;#x30E9;&amp;#x30E0;&amp;#x3092;&amp;#x6307;&amp;#x5B9A;&amp;#x3059;&amp;#x308B;&amp;#x3093;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  13. &amp;#x3068;&amp;#x3059;&amp;#x308B;&amp;#x3068;&amp;#x3001;&amp;#x3053;&amp;#x3046;&amp;#x306A;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x3002;&amp;#x65E5;&amp;#x4ED8;&amp;#x578B;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x8A2D;&amp;#x5B9A;&amp;#x3057;&amp;#x305F;&amp;#x5024;&amp;#x304C;&amp;#x3001;&amp;#x65E5;&amp;#x4ED8;&amp;#x578B;&amp;#x3068;&amp;#x3057;&amp;#x3066;&amp;#x53D6;&amp;#x308A;&amp;#x51FA;&amp;#x305B;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x306E;&amp;#x304C;&amp;#x308F;&amp;#x304B;&amp;#x308A;&amp;#x307E;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  14. &amp;#x4ED6;&amp;#x306B;&amp;#x3082;&amp;#x3001;&amp;#x547D;&amp;#x540D;&amp;#x898F;&amp;#x5247;&amp;#x4F9D;&amp;#x5B58;&amp;#x306E;&amp;#x578B;&amp;#x6307;&amp;#x5B9A;&amp;#x3068;&amp;#x304B;&amp;#x3001;&amp;#x30D5;&amp;#x30E9;&amp;#x30B0;&amp;#x30AB;&amp;#x30E9;&amp;#x30E0;&amp;#x306B;&amp;#x6587;&amp;#x5B57;&amp;#x5217;&amp;#x30AB;&amp;#x30E9;&amp;#x30E0;&amp;#x3092;&amp;#x4F7F;&amp;#x3048;&amp;#x305F;&amp;#x308A;&amp;#x3001;&amp;#x3068;&amp;#x304B;&amp;#x3001;\n&amp;#x7D30;&amp;#x304B;&amp;#x304F;&amp;#x56F0;&amp;#x308A;&amp;#x305D;&amp;#x3046;&amp;#x306A;&amp;#x3068;&amp;#x3053;&amp;#x308D;&amp;#x306B;&amp;#x624B;&amp;#x304C;&amp;#x5C4A;&amp;#x3044;&amp;#x3066;&amp;#x3044;&amp;#x308B;&amp;#x3093;&amp;#x3067;&amp;#x3059;&amp;#x306D;&amp;#x3002;\n
  15. &amp;#x3068;&amp;#x3044;&amp;#x3046;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x307E;&amp;#x3068;&amp;#x3081;&amp;#x3002;\nOracle&amp;#x3067;&amp;#x30CF;&amp;#x30DE;&amp;#x308A;&amp;#x304C;&amp;#x3061;&amp;#x306A;&amp;#x7F60;&amp;#x3092;&amp;#x56DE;&amp;#x907F;&amp;#x3059;&amp;#x308B;&amp;#x70BA;&amp;#x3001;oracle_enhanced-adapter&amp;#x3092;&amp;#x4F7F;&amp;#x3044;&amp;#x307E;&amp;#x3057;&amp;#x3087;&amp;#x3046;&amp;#x3002;\n
  16. \n