2

如果我打电话:

gem install sqlite3-ruby --v 1.2.3

它适用于 MRI

但如果我打电话:

jruby -S gem install sqlite3-ruby --v 1.2.3

它说它正在尝试构建一个本机扩展(适用于 Windows)并且失败了。

为什么 JRuby 和 MRI 处理宝石的方式不同?

4

2 回答 2

6

C 代码必须使用 FFI 的 JRuby gems。FFI 是一个相当新的东西,大多数使用 C 的 ruby​​ gem 不使用它(实际上我不知道有任何使用它)。

http://blog.headius.com/2008/10/ffi-for-ruby-now-available.html

无论如何,对于 jruby 下的 SQLite3,你不需要这个 - 使用这个:

jruby -S gem install jdbc-sqlite3

或者如果运行轨道:

jruby -S gem install activerecord-jdbcsqlite3-adapter
于 2009-05-04T05:28:18.580 回答
5

因为任何构建本地扩展的东西都是用 C 编译的,而且我相信 JRuby 与这些用 C 编写的东西不兼容,尽管我不了解这方面的技术原因。

于 2009-04-25T10:27:26.940 回答