4

データベースなしでしばらくの間正常に動作する Rails アプリを作成しました。ここで、登録データベースをミックスにドロップしています。本番環境では動作しません。もちろん、私の Mac ではすべて正常に動作します。

本番環境は次のとおりです。 - Ubuntu Hardy - Phusion Passenger - Rails 2.3.2

マシン上の MySQL は正常に動作しています。

正しい情報を含む database.yml ファイルがあります。問題なく移行を実行できます。

rake db:migrate RAILS_ENV=production

データベースは正しく更新されています。

ということで、tmp/restart を押してサイトにアクセス。500 エラーが発生しましたが、運用ログには何も書き込まれませんでした (非常に奇妙です)。そのため、Apache ログを確認したところ、次のメッセージが表示されました。

!!! バンドルされている mysql.rb ドライバーは Rails 2.2 から削除されました。mysql gem をインストールして、再試行してください: gem install mysql.

MySQL gem (バージョン 2.7) をインストールしました。私はまだこのエラーが発生しています。

本番データベースの構成をダミーの sqlite データベースを指すように変更すると、すべて正常に動作します。MySQL 構成に戻すと、同じエラー メッセージが表示されます。

私は完全にアイデアがありません。それがうまくいくことを願っています。私は髪を引っ張っています。あなたが提供できる助けにとても感謝しています。思いつく限りの情報を記載しましたが、他に役立つ情報があれば教えてください。

ありがとう!

ジェイソン

4

5 に答える 5

8

理解した。ウーホー!

概要: Ruby Enterprise Edition (更新、Hongli に感謝!) には独自の gem セットがあります。gem を更新していたにもかかわらず、Passenger が読んでいたものではありませんでした。

これが私がそれを理解した方法です:

>> /usr$ whereis gem

gem: /usr/bin/gem /usr/bin/gem1.8 /opt/ruby-enterprise-1.8.6-20090201/bin/gem

>> /usr$ cd /opt/ruby-enterprise-1.8.6-20090201/bin/

>> /opt/ruby-enterprise-1.8.6-20090201/bin$ ls -l

total 2624
-rwxr-xr-x 1 root root    3907 2009-03-26 14:47 erb
-rwxr-xr-x 1 root root     813 2009-03-26 14:47 gem
-rwxr-xr-x 1 root root     349 2009-03-26 14:47 irb
-rwxr-xr-x 1 root root     386 2009-03-26 14:47 passenger-config
-rwxr-xr-x 1 root root     402 2009-03-26 14:47 passenger-install-apache2-module
-rwxr-xr-x 1 root root     396 2009-03-26 14:47 passenger-make-enterprisey
-rwxr-xr-x 1 root root     392 2009-03-26 14:47 passenger-memory-stats
-rwxr-xr-x 1 root root     392 2009-03-26 14:47 passenger-spawn-server
-rwxr-xr-x 1 root root     386 2009-03-26 14:47 passenger-status
-rwxr-xr-x 1 root root     391 2009-03-26 14:47 passenger-stress-test
-rwxr-xr-x 1 root root     366 2009-03-26 14:47 rackup
-rwxr-xr-x 1 root root     367 2009-03-26 14:47 rails
-rwxr-xr-x 1 root root     364 2009-03-26 14:47 rake
-rwxr-xr-x 1 root root    1560 2009-03-26 14:47 rdoc
-rwxr-xr-x 1 root root      64 2009-03-26 14:46 ree-version
-rwxr-xr-x 1 root root    1516 2009-03-26 14:47 ri
-rwxr-xr-x 1 root root 2609905 2009-03-26 14:46 ruby
-rwxr-xr-x 1 root root     178 2009-03-26 14:47 testrb

>> /opt/ruby-enterprise-1.8.6-20090201/bin$ ./gem list

*** LOCAL GEMS ***

actionmailer (2.3.2)
actionpack (2.3.2)
activerecord (2.3.2)
activeresource (2.3.2)
activesupport (2.3.2)
fastthread (1.0.5)
passenger (2.1.2)
postgres (0.7.9.2008.01.28)
rack (0.9.1)
rails (2.3.2)
rake (0.8.4)
sqlite3-ruby (1.2.4)

>> /opt/ruby-enterprise-1.8.6-20090201/bin$ ./gem install mysql

Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

次に、インスタンスを再起動したところ、機能しました。

于 2009-05-20T19:08:35.833 に答える
5

@Jason Butler: コメントするには十分な評判がないので、代わりに回答として投稿します。

独自の gem セットを持つのは Phusion Passenger ではなく、Ruby Enterprise Edition です。これは実際に文書化されており、その理由が説明されています: http://www.rubyenterpriseedition.com/documentation.html#_how_ree_installs_itself_into_the_system

于 2009-05-20T20:36:24.037 に答える
0

本番環境でRailsを実行しているユーザーのパスにmysqlbinディレクトリがありますか?

于 2009-05-20T17:55:46.043 に答える
0

sudo 経由で mysql gem をインストールしようとしましたか?

于 2009-05-20T15:50:34.127 に答える
0

私もこのエラーを受け取りました。次のように、mysql_config ファイルを指定せずに mysql を gem install することはできません。

sudo gem install mysql -- --with-mysql-config=/path/to/user/local/mysql/bin/mysql_config

システムで使用できるヘッダーがなかったため、macports から mysql をインストールする必要がありました。以前はMAMPを使用していました。

Macports が /opt にインストールされたので、私の mysql-config パスは /opt/local/bin/mysql_config5 でした

于 2009-05-20T16:03:46.660 に答える