Ошибка 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