Ruby on Rails的Oracle XE连接配置

时间:2014-03-12 01:06:53

标签: ruby-on-rails oracle

我是Ruby on Rails的新手,我目前在配置config / database.yml以连接Oracle XE 11g R2时遇到问题。我需要你的帮助!

Here is my setup:
VirtualBox 4.3.6
Ubuntu 64 v12.04.3

$ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]

$ rails -v
Rails 4.0.2

$ gem -v
2.2.2

$ gem install ruby-oci8
Building native extensions.  This could take a while...
Successfully installed ruby-oci8-2.1.7
Parsing documentation for ruby-oci8-2.1.7
Done installing documentation for ruby-oci8 after 4 seconds
1 gem installed

# Oracle XE 11gR2 installed in a different VM (Host: 10.1.1.3)
#
$ ruby -r oci8 -e 'OCI8.new("ruby/ruby@10.1.1.3").exec("select * from session_privs") do |r| puts r.join(","); end'
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

请注意,我可以使用上面的命令验证连接。但是,我无法使用“rails generate model Post title:string text:text”命令创建一个新模型 - 我得到一长串错误,抱怨我的“适配器”无效。

问题:

Q1。我需要在Gemfile中添加什么内容?

Q2。我应该在命令“bundle install”的输出中看到ruby-oci8 gem - 目前我可以看到“使用sqlite3(1.3.9),Gemfile中还有2个条目如下:

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.2'

# Use sqlite3 as the database for Active Record
gem 'sqlite3'

Q3。有没有人成功配置database.yml以使用Oracle XE?请与我分享。

提前感谢您的帮助,
Roobie

1 个答案:

答案 0 :(得分:2)

安装ruby-oci8通常很难,所以你几乎就在那里。

Activerecord需要适配器与任何类型的数据库通信;对于oracle,你需要oracle enhanced

然后将此添加到您的Gemfile然后重做捆绑安装:

gem 'activerecord-oracle_enhanced-adapter'

阅读特定于oracle的怪癖的链接页面。您的database.yml文件应如下所示:

database:
  adapter: oracle_enhanced
  database: //10.1.1.3:1521/XE
  username: ruby
  password: ruby

" XE"在数据库连接字符串中是SID。我认为使用oracle XE,SID总是" XE"但是,我没有一个方便,并且从10g起就没有使用它。

你不应该将ruby-oci8添加到gemfile中,因为oracle适配器将它声明为依赖项,但添加它并不会有什么坏处。