我是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
答案 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适配器将它声明为依赖项,但添加它并不会有什么坏处。