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
エラーが正確に何であるかはわかりません。誰でも私を助けてくれませんか......
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
エラーが正確に何であるかはわかりません。誰でも私を助けてくれませんか......
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
より良いオプションは、1.3.0 を無視するように gem 構成を設定することです。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が「sqlite3」という名前のgemを必要とするため、最近のRailsバージョンでアプリケーションを起動する際に問題が発生します。この問題の本当の解決策は、gemが作成する.bundleファイルが実際に正しいsqlite3ライブラリにリンクしていることを確認することです。
デフォルトでは、sqlite3gemは/usr/libに存在しないライブラリにリンクします。これは正しくないです。あなたがする必要があるのは、あなたのシステムに直接コンパイルオプションを設定し、sqlite3 gemを再インストールすることです、そしてあなたはこれを使って簡単に行うことができます
$bundle config
彼らのマンページはそれが何をするかを指定していますが、これは私がする必要のあるコマンドです(私はbrewやmacports経由ではなく、彼らのサイトから自分のSQLiteをインストールしています)。
$bundle config build.sqlite3 --with-sqlite3-include=/usr/local/include --with-sqlite3-lib=/usr/local/lib
これにより、gemを「バンドルインストール」しようとすると、常に適切なオプションがgemにフィードされ、gemが適切に構築されます。
この問題は、Ruby 1.9では発生しないという点でちょっと卑劣であることに注意してください。明らかにrbconfigが更新されており、ライブラリの検索が改善されています。ただし、1.8との互換性を求める場合は、このバンドル構成を使用すると、すべての設定が完了します。
Ruby Enterprise Editionはsqlite3gemを自動的にインストールしますが、1.3.0が問題のようです。
Railsアプリがsqlite3を必要としない場合は、gemをアンインストールしてアプリを再起動してみてください。
sudo gem uninstall sqlite3
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をダウンロードしてホーム ディレクトリに手動でインストールし、.bashrc に LD_LIBRARY_PATH を追加しました。これにより、Rails コンソールの問題が修正されました。
ただし、まだパッセンジャーで起動するアプリを取得していません。まだ作業中です。