为什么sqlite 1.2.3 gem正确安装用于MRI但不适用于JRuby?

Chr*_*ins 2 ruby windows installation rubygems jruby

如果我打电话:

gem install sqlite3-ruby --v 1.2.3
Run Code Online (Sandbox Code Playgroud)

它适用于MRI

但如果我打电话:

jruby -S gem install sqlite3-ruby --v 1.2.3
Run Code Online (Sandbox Code Playgroud)

它说它正在尝试构建一个原生扩展(对于Windows)而且失败了.

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

Rob*_*own 6

JRuby gems,C代码必须使用FFI.FFI是一个非常新的东西,大多数使用C的红宝石都没有使用它(实际上我并不知道这样做).

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

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

jruby -S gem install jdbc-sqlite3
Run Code Online (Sandbox Code Playgroud)

或者如果运行rails:

jruby -S gem install activerecord-jdbcsqlite3-adapter
Run Code Online (Sandbox Code Playgroud)


nit*_*der 5

因为任何正在构建本地扩展正在编制用C什么的,而且我相信JRuby是不是这些东西有C语言编写的零部件兼容,虽然我遇到技术方面的原因我不是.