4

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

4 に答える 4

11

sqlite3-ruby1.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'
于 2010-06-08T00:44:05.277 に答える
1

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との互換性を求める場合は、このバンドル構成を使用すると、すべての設定が完了します。

于 2012-01-20T14:43:18.503 に答える
0

Ruby Enterprise Editionはsqlite3gemを自動的にインストールしますが、1.3.0が問題のようです。

Railsアプリがsqlite3を必要としない場合は、gemをアンインストールしてアプリを再起動してみてください。

sudo gem uninstall sqlite3
于 2010-06-16T20:48:23.137 に答える
0

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 コンソールの問題が修正されました。

ただし、まだパッセンジャーで起動するアプリを取得していません。まだ作業中です。

于 2010-06-07T22:57:32.153 に答える