ruby-on-rails - Ruby on Rails 的 Oracle XE 连接配置

标签 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 一起工作?请与我分享。

预先感谢您的帮助,
鲁比

最佳答案

安装 ruby​​-oci8 通常是最难的部分,所以您就快完成了。

Activerecord 需要一个适配器来与任何类型的数据库对话;对于甲骨文,您需要 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 适配器将其声明为依赖项,但添加它也无妨。

关于ruby-on-rails - Ruby on Rails 的 Oracle XE 连接配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339994/

相关文章:

ruby-on-rails - 如何在不丢失数据的情况下将 ":limit => nil"添加到架构

mysql - 谁在使用我的生产服务器(apache + mysql + rails)上的所有内存?

oracle - ORA-24338 : Statement handle not executed

java - 使用 Java 和 Oracle 数据库时出现奇怪的唯一约束错误

sql - DBMS 中的外部过程

oracle - 在 Oracle 对象类型构造函数中设置默认值

sql - 在oracle中加入游标或记录集

ruby-on-rails - Azure 上的 Ruby on Rails

javascript - 在 js.erb 文件中输出 ruby​​ 字符串

ruby-on-rails - Facebook 身份验证不适用于自定义回调路径