我是 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/