在OS X上从Ruby连接到SQL Server的最佳方法是什么?

Eth*_*han 3 ruby sql-server database-connection ruby-on-rails

我需要让我的Rails应用程序连接到MS SQL Server数据库并执行简单查询以进行查找.该应用程序的主要数据库是MySQL.它只需要在一边做这个SQL Server的事情.

最好的方法是什么?

我可以在Java中编写一个完全独立的应用程序,它连接到数据库并将一些XML数据转储到文件系统,以便我的Ruby应用程序可以接收.

或者我可以搞乱Ruby ODBC连接.我在Gemcutter上搜索了一下,发现了这些......

  • dbd-odbc(0.2.5)11141下载
  • ruby-odbc(0.99992)6390下载
  • activerecord-odbc-adapter(2.0)2333次下载
  • odbc-rails(1.5)2167下载

但这意味着从一个Rails应用程序连接到两个不同的DB.我甚至都不确定该怎么做.

有没有人有使用Ruby的SQL Server的经验?有关哪种方法最实用的想法?


更新 - 让它工作

谢谢您的帮助.基于答案和一些研究,我解决了这个问题.我打算在下面粘贴我的笔记.对不起,随意的语气.我只是复制了它们.

在OS X上使用Ruby连接到SQL Server的步骤

下载,配置,构建FreeTDS库

这些文档非常详细,而且写得很清楚.在关键的地方有一些粗糙的地方,花了我几个小时的故障排除.

默认情况下,它会安装到/usr/local/freetds/lib.

这给了你一堆实用工具和东西.他们可以帮助进行测试和故障排除.

例如,来自文档:"tsql实用程序作为FreeTDS的一部分提供,专门用于故障排除."

将此添加到/ etc/profile:

# 2010-10-19
# To support the FreeTDS library for connecting Ruby to SQL Server.

PATH=$PATH:/usr/local/freetds/bin

# Have FreeTDS to log some output.
#export TDSDUMP=/tmp/freetds.log
#export TDSDUMPCONFIG=/tmp/freetdb_config.log

export PATH
Run Code Online (Sandbox Code Playgroud)

FreeTDS配置文件

需要为FreeTDS创建配置文件.文档列出了可以存储的几个地方.唯一适合我的是~/.freetds.conf...

[DATA_SERVER_NAME]
    host = hostname
    port = 1433
    tds version = 8.0
Run Code Online (Sandbox Code Playgroud)

这是整个配置.因为[DATA_SERVER_NAME]你不能使用主机名,否则它将无法使用.使用一些直观的逻辑名称.当您使用tiny_tdsgem 在Ruby代码中连接它时,您将使用该名称.

不需要设置ODBC

尽管它在FreeTDS文档中说的是,但是不需要创建odbc.ini或odbcinst.ini文件.它没有它.

安装tiny_tds gem

tiny_tds宝石连接Ruby来freetds的一个SQL Server数据库.在tiny_tds文档中它说...

'...请确保使用libiconv支持编译FreeTDS,以便编码能够发挥最佳性能.在控制台中运行"tsql -C"并检查"iconv library:yes".

我能够做到这一点并且有效.

它应该像这样工作:

require 'tiny_tds'
client = TinyTds::Client.new(:username => '...username...', :password => '...password...', :dataserver => 'DATA_SERVER_NAME')
sql = '... whatever ...'
result = client.execute(sql)
client.close
Run Code Online (Sandbox Code Playgroud)

ActiveRecord的

假设您通过安装activerecord-sqlserver-adaptergem 获得所有设置后,可以将ActiveRecord与SQL Server一起使用.我不需要那样,所以我没有安装它.

Kla*_*aus 5

目前有许多开发正在进行连接到MS SQL的必要gems.

简短的摘要:

  • 你不再需要dbi或dbd.(由c0r0ner发布的指南是旧的)
  • 所有你需要的是freetds,ruby-odbc和activerecord-sqlserver-adapter
    (遵循wuputah发布的Xavier Shay指南)
  • 寻找即将发布的tiny_tds作为ruby-odbc的替代品
    它使配置更简单,更快速地访问数据库
    (http://github.com/rails-sqlserver/tiny_tds)