У меня была похожая проблема. Если вы посмотрите на трассировку стека, вы увидите, что файл, выдавший ошибку, находится внутри самого sqlite-ruby:
def open( filename, utf16=false )
API.send( utf16 ? :sqlite3_open16 : :sqlite3_open, filename )
end
Итак, класс API отсутствует. Вверху этого файла приведен следующий код, который предполагает, что класс API происходит от файла sqlite3_api:
begin
require 'sqlite3_api'
rescue LoadError
if RUBY_PLATFORM =~ /mingw|mswin/ then
RUBY_VERSION =~ /(\d+.\d+)/
require "#{$1}/sqlite3_api"
end
end
Как видите, этот код будет игнорировать ошибку LoadError на платформах, отличных от mingw / mswin. Это плохо, и я бы посчитал это ошибкой в геме sqlite3-ruby. Чтобы выяснить, в чем дело, попробуйте использовать sqlite3_api в irb:
$ irb
irb(main):001:0> require 'sqlite3_api'
LoadError: Unable to find library 'libsqlite3.so.8'. - /path/to/ruby/lib/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5/lib/sqlite3_api.sl
from (irb):1:in `require'
from (irb):1
from /path/to/ruby/bin/irb:12:in `<main>'
irb(main):002:0>
YMMV, но для себя я понял, что чего-то не хватает в моем пути к общей библиотеке. Как только я это исправил, все заработало.