Submit Search
activerecord-oracle_enhanced-adapterのご紹介
0 likes
753 views
Kevin Toyoda
1 of 21
Download now
Download to read offline
1
2
3
4
Most read
5
6
7
8
9
10
11
12
13
Most read
14
15
16
17
18
19
20
21
More Related Content
What's hot
(20)
PDF
Devsの常識、DBAは非常識
yoku0825
PDF
ScalaMatsuri 2016
Yoshitaka Fujii
PDF
MySQL 5.7が魅せる新しい運用の形
yoku0825
PDF
1周遅れのScala入学 #nds41
Kazumune Katagiri
PPTX
My sqlで2億件のシリアルデータと格闘した話
saiken3110
PPTX
Sql world を支える技術
Oda Shinsuke
PDF
Reading Anorm 2.0
Kazuhiro Sera
PDF
MySQLアンチパターン
yoku0825
PDF
MySQLステータスモニタリング
yoku0825
PDF
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
yoyamasaki
PDF
今から備えるMySQL最新バージョン5.7
yoku0825
PPTX
[LT] T sql の parse と generator
Oda Shinsuke
PDF
MySQL のユーザー定義変数と RDB のココロ
tsudaa
PDF
Slick入門
chibochibo
PDF
わたしを支える技術
yoku0825
PDF
光のMySQL 5.7
yoku0825
PDF
MySQL 5.7の次のMySQLは
yoku0825
PDF
Webで役立つRDBの使い方
Soudai Sone
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
PDF
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)
Misaki Hisamura
Devsの常識、DBAは非常識
yoku0825
ScalaMatsuri 2016
Yoshitaka Fujii
MySQL 5.7が魅せる新しい運用の形
yoku0825
1周遅れのScala入学 #nds41
Kazumune Katagiri
My sqlで2億件のシリアルデータと格闘した話
saiken3110
Sql world を支える技術
Oda Shinsuke
Reading Anorm 2.0
Kazuhiro Sera
MySQLアンチパターン
yoku0825
MySQLステータスモニタリング
yoku0825
[D14] MySQL 5.6時代のパフォーマンスチューニング *db tech showcase 2013 Tokyo
yoyamasaki
今から備えるMySQL最新バージョン5.7
yoku0825
[LT] T sql の parse と generator
Oda Shinsuke
MySQL のユーザー定義変数と RDB のココロ
tsudaa
Slick入門
chibochibo
わたしを支える技術
yoku0825
光のMySQL 5.7
yoku0825
MySQL 5.7の次のMySQLは
yoku0825
Webで役立つRDBの使い方
Soudai Sone
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
【GCPUG滋賀】BigQueryでさるでもわかるSQL(20190323)
Misaki Hisamura
Similar to activerecord-oracle_enhanced-adapterのご紹介
(20)
PDF
スマートフォン向けサービスにおけるサーバサイド設計入門
Hisashi HATAKEYAMA
PDF
MySQL57 Update@OSC Fukuoka 20151003
Shinya Sugiyama
PDF
SQLQL は GraphQL にとってなんなのか
yancya
PPTX
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
Cloudera Japan
PPTX
R超入門機械学習をはじめよう
幹雄 小川
PDF
named_scope more detail - WebCareer
Kyosuke MOROHASHI
PDF
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
Insight Technology, Inc.
PDF
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
PDF
scala-kaigi1-sbt
Kenji Yoshida
PDF
Ruby で扱う LDAP のススメ
Kazuaki Takase
PDF
Functional JavaScript with Lo-Dash.js
Shogo Sensui
PDF
Oracle Database Connect 2017 / JPOUG#1
Noriyoshi Shinoda
PPTX
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
Ryusuke Kajiyama
PDF
PHP開発者のためのNoSQL入門
じゅん なかざ
PDF
Oracle Database Standard EditionでセミオンラインDDL
Kentaro Kitagawa
PDF
AlfrescoとSolr(後編)
Ashitaba YOSHIOKA
PDF
hscj2019_ishizaki_public
Kazuaki Ishizaki
PDF
20100717tobesetu
akitsukada
PDF
BtoCでバインド変数
Yoshito Ueki
PDF
簡単!AWRをEXCELピボットグラフで分析しよう♪
Yohei Azekatsu
スマートフォン向けサービスにおけるサーバサイド設計入門
Hisashi HATAKEYAMA
MySQL57 Update@OSC Fukuoka 20151003
Shinya Sugiyama
SQLQL は GraphQL にとってなんなのか
yancya
G-Tech2015 Hadoop/Sparkを中核としたビッグデータ基盤_20151006
Cloudera Japan
R超入門機械学習をはじめよう
幹雄 小川
named_scope more detail - WebCareer
Kyosuke MOROHASHI
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
Insight Technology, Inc.
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
scala-kaigi1-sbt
Kenji Yoshida
Ruby で扱う LDAP のススメ
Kazuaki Takase
Functional JavaScript with Lo-Dash.js
Shogo Sensui
Oracle Database Connect 2017 / JPOUG#1
Noriyoshi Shinoda
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
Ryusuke Kajiyama
PHP開発者のためのNoSQL入門
じゅん なかざ
Oracle Database Standard EditionでセミオンラインDDL
Kentaro Kitagawa
AlfrescoとSolr(後編)
Ashitaba YOSHIOKA
hscj2019_ishizaki_public
Kazuaki Ishizaki
20100717tobesetu
akitsukada
BtoCでバインド変数
Yoshito Ueki
簡単!AWRをEXCELピボットグラフで分析しよう♪
Yohei Azekatsu
Ad
activerecord-oracle_enhanced-adapterのご紹介
1.
activerecord-orale_enhanced-
adapterのご紹介 今井( 田)尚人(@elcondor)
2.
自己紹介 Ruby歴=Rails歴=3年半くらい JRuby歴=半年ちょこっと 好きなメソッドはModule#included, Class#class_eval JRubyで日本語Cucumberを動くように しました
3.
本日のまとめ RailsでOracleを使う場合は、 activerecord-oracle_enhanced-adapterが オススメ
4.
OracleでRails? オープンレガシーな企業情報システムと いえば、DBはOracleのことが多い →既存システムを活かしたままRailsを使う なら、RailsもOracleに直接つなぐのが楽 JRubyは、オープンレガシーとの協調、という文 脈で扱われることが多いので、OracleでRailsと いうのも真剣に考えておいて損はない(多分)
5.
What’s oracle_enhaced? Oracle
Databaseと繋げます(当たり前) MRIでもJRubyでも使えます 痒いところに手が届いてます
6.
痒いところに手が届く?
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 ... end start_on/end_onは日付、last_logged_atは日時
8.
DB定義は...
Column Type Size .... START_ON DATE 7 END_ON DATE 7 LAST_LOGGED_AT DATE 7 .... .
9.
DB定義は...
Column Type Size .... START_ON DATE 7 END_ON DATE 7 LAST_LOGGED_AT DATE 7 .... . 日付も日時も、OracleならDATE型
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.
どう困る? 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.
そこで oracle_enhanced-adapter
ですよ
13.
まずはdatabase.yml development: adapter:
oracle_enhanced uri: jdbc:oracle:thin:@host:1521:xe connection_alive_sql: ‘select 1 from dual’
14.
まずはdatabase.yml development: adapter:
oracle_enhanced uri: jdbc:oracle:thin:@host:1521:xe connection_alive_sql: ‘select 1 from dual’ adapterにoracle_enhancedを指定
15.
モデルクラスの実装 class User <
ActiveRecord::Base set_date_columns :start_on, :end_on ... end
16.
モデルクラスの実装 class User
< ActiveRecord::Base set_date_columns :start_on, :end_on ... end set_date_columnsで日付扱いするカラムを 指定
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.
それでどうなった? 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.
それだけ? 他にも 命名規則で日付型かどうかを決めたり 文字列カラムをフラグに使えたりとか 細かく困りそうなところに手が届く
20.
というわけで再まとめ Oracleでハマりがちな罠を回避するのに、 activerecord-oracle_enhanced-adapterが役立 つので、ぜひ使いましょう % (sudo) jruby
-S gem install activerecord- oracle_enhanced-adapter
21.
終
Editor's Notes
#2:
&#x4ECA;&#x4E95;(&#x3068;&#x3088;&#x3060;)&#x3068;&#x8A00;&#x3044;&#x307E;&#x3059;&#x3002;\nTwitter&#x3067;&#x306F;@elcondor&#x3067;&#x3064;&#x3076;&#x3084;&#x3044;&#x3066;&#x307E;&#x3059;&#x3002;\n&#x3088;&#x308D;&#x3057;&#x304F;&#x304A;&#x306D;&#x304C;&#x3044;&#x3057;&#x307E;&#x3059;&#x3002;\n\n
#3:
&#x521D;&#x767B;&#x5834;&#x306A;&#x306E;&#x3067;&#x3001;&#x300C;&#x304A;&#x524D;&#x306F;&#x4F55;&#x8005;&#x306A;&#x3093;&#x3060;&#x300D;&#x3068;&#x601D;&#x308F;&#x308C;&#x308B;&#x65B9;&#x304C;&#x591A;&#x3044;&#x304B;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x306E;&#x3067;&#x3001;&#x81EA;&#x5DF1;&#x7D39;&#x4ECB;&#x3092;&#x7C21;&#x5358;&#x306B;&#x3057;&#x307E;&#x3059;&#x3002;\nRuby&#x6B74;&#x3068;&#x304B;JRuby&#x6B74;&#x306F;&#x3001;&#x3053;&#x3053;&#x306B;&#x66F8;&#x3044;&#x305F;&#x901A;&#x308A;&#x3067;&#x3059;&#x3002;\nJRuby&#x30B3;&#x30DF;&#x30E5;&#x30CB;&#x30C6;&#x30A3;&#x3078;&#x306E;&#x8CA2;&#x732E;&#x3068;&#x3057;&#x3066;&#x306F;&#x3001;&#x65E5;&#x672C;&#x8A9E;Cucumber&#x3092;&#x66F8;&#x3051;&#x308B;&#x3088;&#x3046;&#x306B;&#x3059;&#x308B;&#x3001;JRuby&#x672C;&#x4F53;&#x3078;&#x306E;&#x30D1;&#x30C3;&#x30C1;&#x3092;&#x66F8;&#x3044;&#x305F;&#x3001;&#x3068;&#x3044;&#x3046;&#x3068;&#x3053;&#x308D;&#x3067;&#x3059;&#x306D;&#x3002;\n
#4:
&#x3067;&#x3001;&#x3044;&#x304D;&#x306A;&#x308A;&#x4ECA;&#x65E5;&#x306E;&#x307E;&#x3068;&#x3081;&#x3067;&#x3059;&#x304C;&#x3001;\nRails&#x3067;oracle&#x3092;&#x4F7F;&#x3046;&#x5834;&#x5408;&#x306F;&#x3001;activerecord-oracle_enhanced-adapter&#x3092;&#x4F7F;&#x3044;&#x307E;&#x3057;&#x3087;&#x3046;&#x3001;&#x3068;&#x3044;&#x3046;&#x3053;&#x3068;&#x306B;&#x306A;&#x308A;&#x307E;&#x3059;&#x3002;\n
#5:
Oracle&#x3067;Rails?&#x3068;&#x3044;&#x3046;&#x5411;&#x304D;&#x3082;&#x3042;&#x308B;&#x304B;&#x3068;&#x601D;&#x3044;&#x307E;&#x3059;&#x304C;&#x3001;&#x306A;&#x3093;&#x3060;&#x304B;&#x3093;&#x3060;&#x3067;&#x4F7F;&#x3046;&#x5C40;&#x9762;&#x306F;&#x591A;&#x3044;&#x3088;&#x3046;&#x306B;&#x601D;&#x3046;&#x306E;&#x3067;&#x3059;&#x306D;&#x3002;\nJRuby&#x306F;&#x7279;&#x306B;&#x3001;&#x30AA;&#x30FC;&#x30D7;&#x30F3;&#x30EC;&#x30AC;&#x30B7;&#x30FC;&#x3001;&#x4F8B;&#x3048;&#x3070;EJB&#x30A2;&#x30D7;&#x30EA;&#x306A;&#x3093;&#x304B;&#x3068;&#x306E;&#x9023;&#x643A;&#x3001;&#x307F;&#x305F;&#x3044;&#x306A;&#x6587;&#x8108;&#x3067;&#x6271;&#x308F;&#x308C;&#x308B;&#x3053;&#x3068;&#x304C;&#x591A;&#x3044;&#x3088;&#x3046;&#x306B;&#x601D;&#x3046;&#x306E;&#x3067;&#x3001;\n
#6:
&#x3067;&#x3001;&#x3058;&#x3083;&#x3042;oracle_enanced&#x3063;&#x3066;&#x4F55;&#x306A;&#x306E;&#x304B;?&#x3063;&#x3066;&#x3053;&#x3068;&#x306B;&#x306A;&#x308B;&#x3093;&#x3067;&#x3059;&#x304C;&#x3001;Oracle&#x306B;&#x7E4B;&#x3052;&#x308B;&#x306E;&#x306F;&#x5F53;&#x7136;&#x3068;&#x3057;&#x3066;&#x3001;MRI&#x3067;&#x3082;JRuby&#x3067;&#x3082;&#x540C;&#x69D8;&#x306B;&#x4F7F;&#x3048;&#x307E;&#x3059;&#x3002;MRI&#x3067;&#x306F;ruby-oci8&#x306B;&#x3001;JRuby&#x3067;&#x306F;JDBC oracle driver&#x306B;&#x4F9D;&#x5B58;&#x3059;&#x308B;&#x8A33;&#x3067;&#x3059;&#x306D;&#x3002;\n&#x305D;&#x308C;&#x304B;&#x3089;&#x6700;&#x5927;&#x306E;&#x7279;&#x5FB4;&#x3067;&#x3059;&#x304C;&#x3001;&#x300C;&#x75D2;&#x3044;&#x3068;&#x3053;&#x308D;&#x306B;&#x624B;&#x304C;&#x5C4A;&#x3044;&#x3066;&#x308B;&#x300D;&#x3093;&#x3067;&#x3059;&#x3002;&#x3068;&#x3044;&#x3046;&#x308F;&#x3051;&#x3067;&#x3001;\n
#7:
&#x75D2;&#x3044;&#x3068;&#x3053;&#x308D;&#x306B;&#x624B;&#x304C;&#x5C4A;&#x304F;&#x3063;&#x3066;&#x3069;&#x3046;&#x3044;&#x3046;&#x3053;&#x3068;&#x3088;?&#x3068;&#x3044;&#x3046;&#x3053;&#x3068;&#x304C;&#x4ECA;&#x65E5;&#x306E;&#x672C;&#x984C;&#x3067;&#x3059;&#x3002;\n&#x524D;&#x7F6E;&#x304D;&#x9577;&#x3044;&#x3067;&#x3059;&#x306D;&#x3002;\n
#8:
&#x4F8B;&#x3048;&#x3070;&#x3001;&#x3053;&#x3093;&#x306A;&#x30B3;&#x30FC;&#x30C9;&#x3092;&#x8003;&#x3048;&#x3066;&#x307F;&#x307E;&#x3057;&#x3087;&#x3046;&#x3002;\nstart_on&#x3068;end_on&#x306F;&#x65E5;&#x4ED8;&#x578B;&#x3001;last_logged_at&#x306F;&#x65E5;&#x6642;&#x578B;&#x3067;&#x3059;&#x306D;&#x3002;\n
#9:
&#x3067;&#x3082;&#x3001;Oracle&#x3067;&#x306F;&#x3069;&#x3061;&#x3089;&#x3082;&#x3001;&#x533A;&#x5225;&#x305B;&#x305A;DATE&#x3068;&#x3057;&#x3066;&#x53D6;&#x308A;&#x6271;&#x3044;&#x307E;&#x3059;&#x3002;&#x3053;&#x308C;&#x304C;&#x3069;&#x3046;&#x3044;&#x3046;&#x3053;&#x3068;&#x3092;&#x5F15;&#x304D;&#x8D77;&#x3053;&#x3059;&#x304B;&#x3001;&#x3068;&#x3044;&#x3046;&#x3068;...\n
#10:
&#x7AEF;&#x7684;&#x306B;&#x8A00;&#x3048;&#x3070;&#x3001;Ruby&#x3067;&#x306F;Date&#x3068;&#x3057;&#x3066;&#x6271;&#x3044;&#x305F;&#x3044;&#x30AB;&#x30E9;&#x30E0;&#x304C;&#x3001;&#x52DD;&#x624B;&#x306B;Time&#x306B;&#x3055;&#x308C;&#x3066;&#x56F0;&#x3063;&#x305F;&#x308A;&#x3059;&#x308B;&#x8A33;&#x3067;&#x3059;&#x306D;&#x3002;\n
#11:
&#x3053;&#x3053;&#x3067;oracle_enhanced-adapter&#x306E;&#x767B;&#x5834;&#x3068;&#x306A;&#x308B;&#x308F;&#x3051;&#x3067;&#x3059;&#x306D;&#x3002;\n
#12:
&#x307E;&#x305A;&#x306F;&#x3001;database.yml&#x306E;&#x8A2D;&#x5B9A;&#x3092;&#x3057;&#x307E;&#x3059;&#x3002;\n&#x3068;&#x3044;&#x3063;&#x3066;&#x3082;&#x3001;adapter&#x3092;&#x5909;&#x3048;&#x308B;&#x4EE5;&#x5916;&#x306B;&#x306F;&#x4F55;&#x3082;&#x5909;&#x3048;&#x306A;&#x304F;&#x3066;OK&#x3067;&#x3059;&#x3002;\n
#13:
&#x3064;&#x3044;&#x3067;&#x3001;&#x30E2;&#x30C7;&#x30EB;&#x30AF;&#x30E9;&#x30B9;&#x306B;set_date_columns&#x3059;&#x308B;&#x3053;&#x3068;&#x3067;&#x3001;&#x65E5;&#x4ED8;&#x6271;&#x3044;&#x3059;&#x308B;&#x30AB;&#x30E9;&#x30E0;&#x3092;&#x6307;&#x5B9A;&#x3059;&#x308B;&#x3093;&#x3067;&#x3059;&#x306D;&#x3002;\n
#14:
&#x3068;&#x3059;&#x308B;&#x3068;&#x3001;&#x3053;&#x3046;&#x306A;&#x308A;&#x307E;&#x3059;&#x3002;&#x65E5;&#x4ED8;&#x578B;&#x3068;&#x3057;&#x3066;&#x8A2D;&#x5B9A;&#x3057;&#x305F;&#x5024;&#x304C;&#x3001;&#x65E5;&#x4ED8;&#x578B;&#x3068;&#x3057;&#x3066;&#x53D6;&#x308A;&#x51FA;&#x305B;&#x3066;&#x3044;&#x308B;&#x306E;&#x304C;&#x308F;&#x304B;&#x308A;&#x307E;&#x3059;&#x306D;&#x3002;\n
#15:
&#x4ED6;&#x306B;&#x3082;&#x3001;&#x547D;&#x540D;&#x898F;&#x5247;&#x4F9D;&#x5B58;&#x306E;&#x578B;&#x6307;&#x5B9A;&#x3068;&#x304B;&#x3001;&#x30D5;&#x30E9;&#x30B0;&#x30AB;&#x30E9;&#x30E0;&#x306B;&#x6587;&#x5B57;&#x5217;&#x30AB;&#x30E9;&#x30E0;&#x3092;&#x4F7F;&#x3048;&#x305F;&#x308A;&#x3001;&#x3068;&#x304B;&#x3001;\n&#x7D30;&#x304B;&#x304F;&#x56F0;&#x308A;&#x305D;&#x3046;&#x306A;&#x3068;&#x3053;&#x308D;&#x306B;&#x624B;&#x304C;&#x5C4A;&#x3044;&#x3066;&#x3044;&#x308B;&#x3093;&#x3067;&#x3059;&#x306D;&#x3002;\n
#16:
&#x3068;&#x3044;&#x3046;&#x308F;&#x3051;&#x3067;&#x307E;&#x3068;&#x3081;&#x3002;\nOracle&#x3067;&#x30CF;&#x30DE;&#x308A;&#x304C;&#x3061;&#x306A;&#x7F60;&#x3092;&#x56DE;&#x907F;&#x3059;&#x308B;&#x70BA;&#x3001;oracle_enhanced-adapter&#x3092;&#x4F7F;&#x3044;&#x307E;&#x3057;&#x3087;&#x3046;&#x3002;\n
#17:
\n
Download