如果我打电话:
gem install sqlite3-ruby --v 1.2.3
适用于MRI
但如果我打电话:
jruby -S gem install sqlite3-ruby --v 1.2.3
它说它正在尝试构建一个原生扩展(对于Windows)并失败。
为什么JRuby和MRI在处理宝石方面有所不同?
答案 0 :(得分:6)
JRuby认为C代码必须使用FFI。 FFI是一个非常新的东西,使用C的大多数红宝石都没有使用它(实际上我并不知道这样做)。
http://blog.headius.com/2008/10/ffi-for-ruby-now-available.html
无论如何,你不需要在jruby下使用SQLite3 - 使用它:
jruby -S gem install jdbc-sqlite3
或运行rails:
jruby -S gem install activerecord-jdbcsqlite3-adapter
答案 1 :(得分:5)
因为构建本机扩展的任何东西都是用C编译的东西,我相信JRuby与这些用C语言编写的部分不兼容,尽管我没有达到技术原因。