rails的链接oracle数据库的几个问题。

来源:互联网 发布:淘宝友情链接是什么 编辑:程序博客网 时间:2024/06/05 17:10

最近学学rails,随便为我们的实时系统做一个测试用的模拟器。
以前没有接触过rails,在网上看了两天ruby的资料,买了一本《Agile Web Development with Rails》,翻了翻开始做 起来。

下载ruby,下载rails,一切顺利。
1.
配置数据库,我们以前的系统用的是oracle9,于是我在http://rubyforge.org/projects/ruby-oci8下载了一个驱动程序。
C:/>ruby ruby-oci8-0[1].1.13-mswin.rb

Copy OCI8.rb to c:/ruby/lib/ruby/site_ruby/1.8/DBD/OCI8
Copy oci8.rb to c:/ruby/lib/ruby/site_ruby/1.8
Copy oci8lib.so to c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt
OK?
Enter Yes/No: Yes
Copying OCI8.rb to c:/ruby/lib/ruby/site_ruby/1.8/DBD/OCI8 ... done
Copying oci8.rb to c:/ruby/lib/ruby/site_ruby/1.8 ... done
Copying oci8lib.so to c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt ... done
OK
成功。

由于我的Oracle在公司服务器上,所以我配置oralce9带的tnsnames.ora
ORA920 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ×.×.×.×)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ora920)
    )
  )

2.用rails创建我的模拟器工程,
rails sim
好了,在./ora/config/database.yml
development:
  adapter: oci
  database: ora920
  username: test
  password: test
  host: ora920
  encoding: utf8
设置utf8是因为解决rails显示中文的问题。

3.接着,用rails脚手架,试着建立对某数据库表的访问。
./ruby script/generate scaffold svc_product

exists  app/controllers/
      exists  app/helpers/                               
      create  app/views/svc_products                                                                                      
      exists  app/views/layouts/              
      exists  test/functional/                  
  dependency  model                                                                                                       
      exists    app/models/                                                                                               
      exists    test/unit/
      exists    test/fixtures/
        skip    app/models/svc_product.rb
   identical    test/unit/svc_product_test.rb             
   identical    test/fixtures/svc_products.yml            
"DESC svc_products" failed; does it exist?  

失败了,是rails默认会寻找复数的表名,要去除这个约定,需要增加一个全局变量赋值(我在development.rb中加)
ActiveRecord::Base.pluralize_table_names = false

4.现在启动web server
ruby script/server

打开浏览器,试试访问svc_product
哦,中文显示有问题,是乱码。选择浏览器编码为GB2312,渲染网页,中文已经正常显示了。现在我们已经可以通过网页增删改表的数据了。不错,不错。

 

 
原创粉丝点击