Mac,Rails 4:使用`freetds`安装`tiny_tds` gem

时间:2014-08-28 17:29:36

标签: macos gem freetds tiny-tds

我们正在使用activerecord-sqlserver-adapter适配器为Rails 4与SQL Server数据库通信。此适配器需要tiny_tds gem。要安装tiny_tds,您需要在系统上安装freetds,因为它是在编译gem时使用的。

在我的系统上,我安装了RVM和自制程序。我有brew install freetds并确认它在tsql -C下工作,并且实际上已连接到SQL Server。根据我的理解,这意味着freetds已安装"在我的机器上工作。

但是,如果我抱怨gem install tiny_tds

,每次我freetds is missing

我已经尝试了几个参数选项来"链接"到适当的文件,但似乎没有什么对我有用。我已经花了几个小时谷歌搜索并查看宝石作者的着作。与我合作的其他一些开发人员都有这个功能,但是我设置了一个新的环境,并且出于某种原因无法使其正常运行。他们已经对此进行了调查,并且不确定问题是什么。

tiny_tds gem的安装似乎并不知道freetds实际安装在系统上。

在旁注上,我也看了mini_portile,它也没有正常工作......因为我已经花了好几个小时沿着当前的路走下去,我想要在我切换到调查mini_portile之前解决这个问题。

这是安装的输出:

$ gem install tiny_tds
Building native extensions.  This could take a while...
ERROR:  Error installing tiny_tds:
    ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... yes
checking for sybfront.h... yes
checking for sybdb.h... yes
checking for tdsdbopen() in -lsybdb... no
-----
freetds is missing.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
    --enable-lookup
    --disable-lookup
    --with-iconv-dir
    --without-iconv-dir
    --with-iconv-include
    --without-iconv-include=${iconv-dir}/include
    --with-iconv-lib
    --without-iconv-lib=${iconv-dir}/
    --with-freetds-dir
    --without-freetds-dir
    --with-freetds-include
    --without-freetds-include=${freetds-dir}/include
    --with-freetds-lib
    --without-freetds-lib=${freetds-dir}/
    --with-iconvlib
    --without-iconvlib
    --with-sybdblib
    --without-sybdblib


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/tiny_tds-0.6.2 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/tiny_tds-0.6.2/ext/tiny_tds/gem_make.out

2 个答案:

答案 0 :(得分:0)

终于解决了这个问题。我安装RVM后忘了通过RVM安装Ruby,这导致了所有问题。

如果您遇到与上述类似的奇怪错误,请执行rvm list以确定您是否安装了任何Rubies,然后在终端(Mac)上执行which ruby以确定您是否确实使用RVM Ruby。

答案 1 :(得分:0)

您可以像这样将 freetds 库的位置传递给 gem 命令:

gem install tiny_tds -- --with-freetds-dir=/opt/homebrew/Cellar/freetds/1.2.21