因為敝公司只有一台MS SQL Server,所以我沒得選擇,要讀人事資料肯定要連線到SQLServer。
比較不需要編譯的方式就是使用 jRuby,但我卻吃了不少苦頭,重點如下:
若使用C寫的正常版Ruby,需要的是Rails SQL Server,除了activerecord-sqlserver-adapter還需要tiny_tds,由於需要Native Extension,所以在Windows上別忘了安裝Ruby Development Kit。
說實在,在Windows寫Rails真是自找麻煩,尤其是x64的Ruby問題更多。因此在Windows環境我才會改用jRuby,其他類unix平台就直接用RVM安裝Ruby即可。
比較不需要編譯的方式就是使用 jRuby,但我卻吃了不少苦頭,重點如下:
- 最新版的jRuby要JDK 1.7,也就是Java 7,到Oracle下載就好。
- 在Windows版裝完Rails沒有自動產生對應的bat檔,所以要自己寫,像是 rails.bat和rake.exe與 rawr.bat等等,得自己加,例如rails.bat:
"%~dp0jruby.exe" -S rails %* - 好不容易更新完gem等等,rails server時卻有JCE的錯誤,就是要使用高強度的JCE啦。
- 現在內建的ActiveRecord JDBC Adapter就支援MS SQL Server (activerecord-jdbcmssql-adapter),但它也有寫uses the OSS jTDS driver by default which might have issues with the latest SQLServer (but should work using the Microsoft JDBC Driver for SQL Server - we recommend using 4.0)。所以得下載新版的Microsoft JDBC Driver 4.0 for SQL Server,只要下載tar.gz版本,取出其中的sqljdbc4.jar放在jRuby\lib底下,或是jre\lib,要注意另一個sqljdbc.jar不能用...。
- 接下來設定database.yml 就好,例如:
development: adapter: jdbcmssql driver: com.microsoft.sqlserver.jdbc.SQLServerDriver url: 'jdbc:sqlserver://servername\SQLExpress;databaseName=databasename' username: db_username password: db_password
若是SQLExpress要記得打開TCP/IP才能連線。
若使用C寫的正常版Ruby,需要的是Rails SQL Server,除了activerecord-sqlserver-adapter還需要tiny_tds,由於需要Native Extension,所以在Windows上別忘了安裝Ruby Development Kit。
gem install tiny_tds activerecord-sqlserver-adapter
說實在,在Windows寫Rails真是自找麻煩,尤其是x64的Ruby問題更多。因此在Windows環境我才會改用jRuby,其他類unix平台就直接用RVM安裝Ruby即可。
留言