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 установлены соответствующим образом. (Для полного распространения изменений может потребоваться перезапуск системы.)
Ответ 4
Перейдите по этой ссылке
Загрузите sqlitedll-3_6_10.zip и извлеките в ruby /bin!
Ответ 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 то он работает