最近学学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,渲染网页,中文已经正常显示了。现在我们已经可以通过网页增删改表的数据了。不错,不错。