質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Q&A

解決済

1回答

3593閲覧

Ruby On Railsで既存のOracleDBに接続したい

YutoHirose

総合スコア0

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

0グッド

1クリップ

投稿2020/08/12 12:26

前提・実現したいこと

web開発初心者です。
インターネットが繋がっていないサーバーでrailsのアプリケーションを作成することになりました。
既存のoracleのDBに接続したいと思っています。
試しにoracleDBへ接続をしてみようと思い、何かしらのデータを取得しようとしたところ、エラーが発生してしまいました。

メインのDBとは別に、外部DBであるoracleのDBはestablish_connectionを用いて接続を試みています。

dockerにてrails環境を構築しています。
ruby 2.5.3
rails 5.2.4.3

お分かりになる方、お助けください。。

発生している問題・エラーメッセージ

既存のoracleデータベースの接続を試みたところ、rails consoleではActiveRecordを使って、データの取得ができます。

なぜかrails serverでの接続ができません。rails console と rails server ではデータベースへの接続の仕方が違うのでしょうか。

rails console でデータの取得はできているため、database.ymlのタイポや、gemのインストールミスは無いように思えるのですが、、、
イメージ説明

該当のソースコード

パスワード、テーブル名等は、適当に変更してあります。

oracleDB用にdatabase.ymlに設定を追加。

#database.yml oracle_development: adapter: oracle_enhanced encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS"){ 5 } %> username: username password: password database: ris oracle_production: adapter: oracle_enhanced encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS"){ 5 } %> username: username password: password database: ris
#tnsnames.ora ris = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xxx.xxx.xxx)(PORT = xxxx)) (CONNECT_DATA = (SID = xxxx) ) )

データ取得用?のモデル作成。名前空間でテーブル名がバッティングしないようにしました。

#app/model/oracle.rb module Oracle class Base < ActiveRecord::Base establish_connection("oracle_#{Rails.env}.to_sym) self.abstract_class = true end end

モデルを作成。既存のDBのテーブル名がrailsの命名規則に反して単数形だったので、sels.table_nameでテーブル名を指定しました。

#app/model/oracle/exam.rb module Oracle class Exam < Oracle::Base self.table_name = 'dbname.tablename' end end

試しに、以下のようにindexアクションでデータの取得を試みたのですが、うまく行きません。
ちなみに、全く同じコードでrails consoleの方では成功しています。

#app/controllers/exams_controller.rb class ExamsController < ApplicationController def index @exam = Oracle::Exam.select(:pid, :name).where(pid: "000000000", exdate: "20200805") end end

バージョン

ruby 2.5.3
rails 5.2.4.3

activerecord-oracle_enhanced-adapter 5.2.8
ruby-oci8 2.2.8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2020/08/12 12:37

質問にOracle Database の正確なバージョンは?データベース・サーバーのOSは何かを追記してください。
winterboum

2020/08/13 00:08

問題点見えず、、、 RAILS_ENV=production rails c でもうまく行くこと確認してください
YutoHirose

2020/08/13 06:28

log/development.logに`Cannot render console from 10.102.4.102! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255` このエラーが出ていました! これを解消したら解決しました!! 大変失礼致しました。
guest

回答1

0

自己解決

log/development.logにCannot render console from 10.102.4.102! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
このエラーが出ていました!
これを解消したら解決しました!!
大変失礼致しました。

投稿2020/08/13 06:29

YutoHirose

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問