如果我打电话:
gem install sqlite3-ruby --v 1.2.3
它适用于 MRI
但如果我打电话:
jruby -S gem install sqlite3-ruby --v 1.2.3
它说它正在尝试构建一个本机扩展(适用于 Windows)并且失败了。
为什么 JRuby 和 MRI 处理宝石的方式不同?
如果我打电话:
gem install sqlite3-ruby --v 1.2.3
它适用于 MRI
但如果我打电话:
jruby -S gem install sqlite3-ruby --v 1.2.3
它说它正在尝试构建一个本机扩展(适用于 Windows)并且失败了。
为什么 JRuby 和 MRI 处理宝石的方式不同?
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
因为任何构建本地扩展的东西都是用 C 编译的,而且我相信 JRuby 与这些用 C 编写的东西不兼容,尽管我不了解这方面的技术原因。