Ошибка Sqlite-3 при запуске приложения ROR - PullRequest
4 голосов
/ 07 июня 2010

Когда я пытаюсь запустить приложение 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 ]

11 голосов
/ 08 июня 2010

У меня была такая же проблема сегодня утром после обновления 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'
1 голос
/ 20 января 2012

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

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

$bundle config

На их странице руководства указано, что она делает, но эту команду мне нужно было сделать (у меня есть своя установка 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 совместимость - используйте эту конфигурацию пакета, и все будет готово.

0 голосов
/ 17 июня 2010

Ruby Enterprise Edition автоматически устанавливает гем sqlite3, и проблема в версии 1.3.0.

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

sudo gem uninstall sqlite3
0 голосов
/ 08 июня 2010

У меня была такая же проблема на моем сервере 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.

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

...