SlideShare a Scribd company logo
1 of 21
activerecord-orale_enhanced-
       adapterのご紹介
      今井(   田)尚人(@elcondor)
自己紹介
Ruby歴=Rails歴=3年半くらい

JRuby歴=半年ちょこっと

好きなメソッドはModule#included,
Class#class_eval
JRubyで日本語Cucumberを動くように
しました
本日のまとめ

RailsでOracleを使う場合は、
activerecord-oracle_enhanced-adapterが
オススメ
OracleでRails?
オープンレガシーな企業情報システムと
いえば、DBはOracleのことが多い
→既存システムを活かしたままRailsを使う
なら、RailsもOracleに直接つなぐのが楽

JRubyは、オープンレガシーとの協調、という文
脈で扱われることが多いので、OracleでRailsと
いうのも真剣に考えておいて損はない(多分)
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は日時
DB定義は...
    Column          Type   Size
             ....
   START_ON         DATE    7
    END_ON          DATE    7
LAST_LOGGED_AT      DATE    7
            ....
             .
DB定義は...
     Column          Type   Size
              ....
    START_ON      DATE       7
     END_ON       DATE       7
 LAST_LOGGED_AT   DATE       7
             ....
              .
日付も日時も、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で取り扱いたいカラムが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を指定
モデルクラスの実装

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

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



set_date_columnsで日付扱いするカラムを
指定
それでどうなった?
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メソッドによって、
 日付型としての取り扱いを強制できた
それだけ?

他にも

命名規則で日付型かどうかを決めたり

文字列カラムをフラグに使えたりとか

細かく困りそうなところに手が届く
というわけで再まとめ

Oracleでハマりがちな罠を回避するのに、
activerecord-oracle_enhanced-adapterが役立
つので、ぜひ使いましょう

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

More Related Content

What's hot

Devsの常識、DBAは非常識
Devsの常識、DBAは非常識Devsの常識、DBAは非常識
Devsの常識、DBAは非常識yoku0825
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形yoku0825
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41Kazumune Katagiri
 
My sqlで2億件のシリアルデータと格闘した話
My sqlで2億件のシリアルデータと格闘した話My sqlで2億件のシリアルデータと格闘した話
My sqlで2億件のシリアルデータと格闘した話saiken3110
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術Oda Shinsuke
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターンyoku0825
 
MySQLステータスモニタリング
MySQLステータスモニタリングMySQLステータスモニタリング
MySQLステータスモニタリングyoku0825
 
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyoyoyamasaki
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7yoku0825
 
[LT] T sql の parse と generator
[LT] T sql の parse と generator[LT] T sql の parse と generator
[LT] T sql の parse と generatorOda Shinsuke
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロtsudaa
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術yoku0825
 
光のMySQL 5.7
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7yoku0825
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはyoku0825
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方Soudai Sone
 
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)Misaki Hisamura
 

What's hot (20)

Devsの常識、DBAは非常識
Devsの常識、DBAは非常識Devsの常識、DBAは非常識
Devsの常識、DBAは非常識
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
1周遅れのScala入学 #nds41
1周遅れのScala入学 #nds411周遅れのScala入学 #nds41
1周遅れのScala入学 #nds41
 
My sqlで2億件のシリアルデータと格闘した話
My sqlで2億件のシリアルデータと格闘した話My sqlで2億件のシリアルデータと格闘した話
My sqlで2億件のシリアルデータと格闘した話
 
Sql world を支える技術
Sql world を支える技術Sql world を支える技術
Sql world を支える技術
 
Reading Anorm 2.0
Reading Anorm 2.0Reading Anorm 2.0
Reading Anorm 2.0
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 
MySQLステータスモニタリング
MySQLステータスモニタリングMySQLステータスモニタリング
MySQLステータスモニタリング
 
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
 
今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
 
[LT] T sql の parse と generator
[LT] T sql の parse と generator[LT] T sql の parse と generator
[LT] T sql の parse と generator
 
MySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロMySQL のユーザー定義変数と RDB のココロ
MySQL のユーザー定義変数と RDB のココロ
 
Slick入門
Slick入門Slick入門
Slick入門
 
わたしを支える技術
わたしを支える技術わたしを支える技術
わたしを支える技術
 
光のMySQL 5.7
光のMySQL 5.7光のMySQL 5.7
光のMySQL 5.7
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
 
Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)
 

Similar to activerecord-oracle_enhanced-adapterのご紹介

スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門Hisashi HATAKEYAMA
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003Shinya Sugiyama
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかyancya
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006Cloudera Japan
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
named_scope more detail - WebCareer
named_scope more detail - WebCareernamed_scope more detail - WebCareer
named_scope more detail - WebCareerKyosuke MOROHASHI
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付きInsight Technology, Inc.
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Shotaro Suzuki
 
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメRuby で扱う LDAP のススメ
Ruby で扱う LDAP のススメKazuaki Takase
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsShogo Sensui
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Noriyoshi Shinoda
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 
Oracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDLOracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDLKentaro Kitagawa
 
20100717tobesetu
20100717tobesetu20100717tobesetu
20100717tobesetuakitsukada
 
BtoCでバインド変数
BtoCでバインド変数BtoCでバインド変数
BtoCでバインド変数Yoshito Ueki
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪Yohei Azekatsu
 

Similar to activerecord-oracle_enhanced-adapterのご紹介 (20)

スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
 
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのかSQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
 
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
named_scope more detail - WebCareer
named_scope more detail - WebCareernamed_scope more detail - WebCareer
named_scope more detail - WebCareer
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
Ruby で扱う LDAP のススメ
Ruby で扱う LDAP のススメRuby で扱う LDAP のススメ
Ruby で扱う LDAP のススメ
 
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.jsFunctional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
Oracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDLOracle Database Standard EditionでセミオンラインDDL
Oracle Database Standard EditionでセミオンラインDDL
 
AlfrescoとSolr(後編)
AlfrescoとSolr(後編)AlfrescoとSolr(後編)
AlfrescoとSolr(後編)
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
20100717tobesetu
20100717tobesetu20100717tobesetu
20100717tobesetu
 
BtoCでバインド変数
BtoCでバインド変数BtoCでバインド変数
BtoCでバインド変数
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪
 

activerecord-oracle_enhanced-adapterのご紹介

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