Ruby не может найти драйвер sqlite3 на окнах

Я пытаюсь настроить Ruby on Rails на windows. Я использую дистрибутив Flash Rails, который выглядит неплохо, но есть проблема с sqlite3. Я обнаружил, что потоки говорят мне установить версию 1.2.3, которая прекрасно установлена. Я использую ruby ​​1.9.0, и каждый раз, когда я пытаюсь запустить script (например, rake db: create), который использует базу данных, я получаю сообщение об ошибке "no driver for sqlite3 found".

Это, по-видимому, недостающий sqlite3.dll, но у меня есть dll в моем% PATH%, и я также попытался скопировать его в каталог, где я запускаю script from, каталог, где sqlite3 ruby ​​code живет.

Есть ли у кого-нибудь идеи? Если возможно, я хочу, чтобы все рубиновые материалы были автономными, поэтому я могу использовать его с ручного привода.

EDIT: Чтобы уточнить, я уже использовал gem install для установки ruby-sqlite3 gem - он просто не работает, поскольку он не может найти sqlite3.dll(хотя он действительно присутствует в каталоге на моем% PATH%)

РЕДАКТИРОВАТЬ ЧАСТЬ 2: после некоторого дополнительного копания возникает проблема, что рубин не загрузит sqlite3_api.dll. Я скопировал его по всей файловой системе, я просто получил отказ от чтения файла. Другие библиотеки DLL в том же каталоге (например, zlib.dll) работают нормально! Я попытался установить DLL в system32, и это тоже не сработало.

Ответ 1

Проблема проста в том, что sqlite3-ruby 1.2.3 несовместим с ruby ​​1.9. Это вызвано тем, что ruby ​​1.9 не использует DLL файлы для библиотек c, вместо этого они используют .so файлы. Кроме того, поскольку sqlite3_api.dll написан против msvcrt-ruby18.dll. Это означает, что он специально поддерживает только рубин 1.8. *.

Хорошей новостью является то, что есть жирная бинарная версия, которая будет поддерживать как рубин 1.8, так и ruby ​​1.9. Удалите все прежние версии sqlite3-ruby, а затем установите этот. (Возможно, вам придется вручную удалить некоторые версии gem после удаления.), Чтобы установить его, используйте

install sqlite3-ruby --source http://gems.rubyinstaller.org

для получения дополнительной информации см. этот веб-сайт

Ответ 2

Попробуйте установить камень sqlite3-ruby:

gem install sqlite3-ruby

Ответ 3

Что-то подобное произошло со мной недавно, поэтому я подумал, что обновляю свой ответ.

Для справки есть файл sqlite3_api.dll, расположенный в каталоге gem lib. Также файл sqlite3.dll должен быть доступен на пути. Они представляют собой разные файлы, первый требует от gem для интерфейса Ruby-C-кода, а второй содержит фактическую реализацию Sqlite.

Лучше всего получить второй файл с сайта sqlite и извлечь его в каталог Ruby\bin (так как вы не должны вручную класть DLL в каталоги окон или windows\system).

Поэтому для справки "sqlite3_api.dll" должно быть указано:

Ruby\lib\ruby\gems\1.8\gems\sqlite3-ruby-1.2.3-x86-mswin32\lib

и "sqlite3.dll" должны быть на пути, возможно, в:

Ruby\bin

Что касается проблемы "не найден драйвер", я бы предложил сначала попробовать простые вещи и убедиться, что драгоценные камни установлены правильно, обновлены и что переменные среды RubyLIB и PATH установлены соответствующим образом. (Для полного распространения изменений может потребоваться перезапуск системы.)

Ответ 5

Попробуйте перейти на страницу sqlite.org и получить заархивированную dll. Затем поместите это в свою папку c:\windows\system32, что должно позволить Ruby найти его.

Ответ 6

Перезагрузите компьютер после запуска sqlite3-ruby

Ответ 7

Чтобы выяснить, какой камень вы используете? sqlite-ruby или sqlite3-ruby?

Они являются частью одного и того же проекта, но разных релизов. Ключ в том, что sqlite3, как представляется, содержит код драйвера.

Я предполагаю, что вы пытаетесь использовать первое, так как оно дает мне ту же ошибку. Если да, попробуйте переключиться.


Также.. Как буквально вы это понимаете?

но у меня есть dll в моем% PATH%

  • PATH=...;C:\sqlite\sqlite3.dll
  • PATH=...;C:\sqlite

Первый попытается найти C:\sqlite\sqlite3.dll\sqlite3.dll, AFAIK.

Ответ 8

Я использую Ruby 1.8.7 (также работает с 1.9.1) ОС - WindowsXP SP3

  • Перейдите к http://www.sqlite.org/download.html и Загрузить файл sqlitedll-3_7_0_1.zip(265.19 KiB) и распакуйте, тогда мы получим sqlite3.dll

  • Скопируйте файл sqlite3.dll в папку bin   как C:\Ruby191\bin или C:\Ruby187\bin   то он работает