如何使用Oracle配置Ruby on Rails?

时间:2009-04-19 05:28:31

标签: ruby-on-rails ruby oracle

网上有几个讨论这个问题的网页,但大部分内容已经过时或以某种方式不准确。

什么是独家新闻?

4 个答案:

答案 0 :(得分:38)

构建ruby,gem和rails

根据http://rubyonrails.org/download

build ruby
build gem
use gem to install rails

获取Oracle Instantclient

从下载 https://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

您的架构需要这两个软件包。

instantclient-basic
instantclient-sdk

解压缩这些文件,并建立此链接

cd instantclient_10_2
# .dylib for mac, .so for linux
ln -s libclntsh.dylib.10.1 libclntsh.dylib

构建ruby-oci8

注意,JRuby用户不需要ruby-oci8,但需要Oracle JDBC jar,ojdbc6.jar或ojdbc5.jar,具体取决于你是使用Java 6还是Java 5。

http://ruby-oci8.rubyforge.org/en/index.html下载并运行

# DYLD for mac
export DYLD_LIBRARY_PATH=/path/to/instantclient_10_2
# LD for linux
export LD_LIBRARY_PATH=/path/to/instantclient_10_2
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

使用此行和数据库连接字符串进行测试。

ruby -r oci8 -e "OCI8.new('scott/tiger@orcl').exec('select * from user_tables') do |r| puts r.join(','); end"

安装activerecord-oracle_enhanced-adapter

注意, activrecord-oracle-adapter 正如许多旧页面所提及的那样。

gem install activerecord-oracle_enhanced-adapter

做那个甜蜜的东西

rails railstest
cd railstest
# edit config/database.yml as below
ruby script/generate scaffold comic title:string issue:integer publisher:string
rake db:migrate
ruby script/server

在浏览器中测试

<http://localhost:3000/comics>

配置/ database.yml的

如果您有TNS条目,请使用数据库,否则使用 host 。请注意,您有三个要更新的条目(devel,test,production)。

development:
    adapter: oracle_enhanced
    database: orcl           # format is tns-name entry
    host:  myorclhost/orcl   # format is hostname/instance-name
    username: scott
    password: tiger

参考

答案 1 :(得分:3)

以前回答的一些其他链接。

如果你在Mac上,那么你可以按照教程How to setup Ruby and Oracle Instant Client on Mac OS X从Ruby访问Oracle数据库。

然后,您可以阅读ActiveRecord Oracle enhanced adapter wiki以获取Ruby on Rails中的Oracle连接。此适配器在Oracle项目的许多Ruby on Rails中使用,并且正在进行主动维护。

我还经常在blog发布有关Ruby和Oracle的文章。

答案 2 :(得分:3)

就我而言,我已经在Windows 7上安装了Ruby,gem,Rails和Oracle客户端。我为Windows 32位安装了ruby-oci8二进制包:

来源:http://ruby-oci8.rubyforge.org/en/file.install-binary-package.html

gem install ruby-oci8
gem install --platform x86-mingw32 ruby-oci8

然后:

gem install activerecord-oracle_enhanced-adapter

并且您已准备好在Oracle上执行Rails。

答案 3 :(得分:1)

只是反映当前版本的更新(截至撰写时:2015年8月):

  • 安装libaio(在Ubuntu / Debian Linux上可能带有apt-get install libaio-dev - 0.3.109-4)
  • 下载Oracle Instant Client(12.1.0.2.0,Basic + SDK应该已经足够了,但尚未尝试使用Basic Lite而不是Basic)
  • 设置环境变量(符合您的需求):

    export LD_LIBRARY_PATH=/path/to/the/Instant/Client/directory
    export NLS_LANG="German_Germany.WE8ISO8859P1"
    
  • Ruby(2.2.1p85),gem(2.4.6),Rails(4.2.3),ruby-oci8(2.1.8,https://github.com/kubo/ruby-oci8)和activerecord-oracle_enhanced-adapter(1.6。 2,https://github.com/rsim/oracle-enhanced)可以通常的方式安装(我使用rvm(1.26.11) - https://rvm.io/),所以基本上这应该为三个宝石做的工作: / p>

    gem install rails ruby-oci8 activerecord-oracle_enhanced-adapter
    
  • 创建您的Rails应用

  • 配置您的Rails应用:

    • Gemfile添加activerecord-oracle_enhanced-adapterruby-oci8

      gem 'activerecord-oracle_enhanced-adapter'
      gem 'ruby-oci8'
      
    • config/database.yml中添加您的Oracle环境:

      development:
        adapter: oracle_enhanced
        host: my-db-host
        port: my-port
        database: my-db
        username: my-user
        password: my-password
      
    • 让Bundle抓住宝石:bundle install

      ...
      Using activerecord-oracle_enhanced-adapter 1.6.2
      ...
      Using ruby-oci8 2.1.8
      ...
      
    • 准备隆隆声:

      rails generate scaffold book title:string author:string
      rake db:create db:migrate
      ...
      

注意:

根据您的Oracle环境(即my-user已存在或必须创建),您可以省略db:create语句。在后一种情况下,rake会提示您输入SYS / SYSTEM密码,以便能够创建用户并为其授予相应的权限。