Ошибка Sqlite-3 при запуске приложения ROR

Когда я пытаюсь запустить приложение Ruby on Rails.... я сталкиваюсь со следующей ошибкой

ошибка поиска символа: /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/sqlite3-ruby-1.3.0/lib/sqlite3/sqlite3_native.so: неопределенный символ: sqlite3_initialize

Я не знаю, в чем именно ошибка. Может кто-нибудь, пожалуйста, помогите мне в этом......

4 ответа

Решение

У меня была такая же проблема сегодня утром после обновления sqlite3-ruby до 1.3.0. Быстрое решение - удалить 1.3.0 и убедиться, что 1.2.5 установлен:

gem uninstall sqlite3-ruby --version 1.3.0
gem install sqlite3-ruby --version 1.2.5

Лучшим вариантом является настройка конфигурации gem на игнорирование 1.3.0. Для Rails 2.x, в config/environment.rb:

config.gem 'sqlite3-ruby', :lib => 'sqlite3', :version => '!= 1.3.0'

или, если вы хотите, чтобы это было действительно безопасно, явно добавьте 1.2.5:

config.gem 'sqlite3-ruby', :lib => 'sqlite3', :version => '1.2.5'

Если вы заблокируете свой gemfile в sqlite3-ruby, у вас будут проблемы с запуском приложения в последних версиях Rails, так как Rails хочет, чтобы гем назывался "sqlite3". Реальное решение этой проблемы - убедиться, что файл.bundle, который создает гем, действительно ссылается на нужные библиотеки sqlite3.

По умолчанию гем sqlite3 будет ссылаться на несуществующую библиотеку в вашем / usr / lib. Это неправильно. Что вам нужно сделать, это установить параметры соответствия прямо для вашей системы и переустановить гем sqlite3, и вы можете легко сделать это, используя

$bundle config

На их man-странице указано, что он делает, но эту команду мне нужно было сделать (у меня есть установка SQLite по собственной инициативе с их сайта, а не через brew или macports).

$bundle config build.sqlite3 --with-sqlite3-include=/usr/local/include --with-sqlite3-lib=/usr/local/lib

Это всегда будет предоставлять правильные опции для драгоценного камня, когда вы пытаетесь "установить пакет", и ваш драгоценный камень будет собираться правильно.

Обратите внимание, что эта проблема довольно хитрая в том смысле, что она не будет возникать в Ruby 1.9 - очевидно, что rbconfig там обновлен и улучшает поиск в библиотеке. Но когда вы идете на совместимость с 1.8 - используйте эту конфигурацию, и все будет готово.

У меня была такая же проблема на моем сервере Dreamhost:

> bundle exec rails c 
ruby: symbol lookup error: /home/user/settings/installs/rubygems/gems/gems/sqlite3-ruby-1.3.0/lib/sqlite3/sqlite3_native.so: undefined symbol: sqlite3_initialize

Я скачал и установил SQLite3 вручную в свой домашний каталог и добавил LD_LIBRARY_PATH в мой.bashrc. Это исправило проблему с консолью Rails.

Тем не менее, я до сих пор не получил приложение для запуска в пассажирском, я все еще работаю над этим.

http://rubyenterpriseedition.com/ автоматически устанавливает гем sqlite3, и проблема в версии 1.3.0.

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

sudo gem uninstall sqlite3
Другие вопросы по тегам