2011-01-28 7 views
1

私は、別のポストの問題と非常に関連しているような問題がありますが、私は解決策を理解できません。私はRailsが初めてで、Rails 3アプリをまとめました。私はWindowsで開発中ですが、gitとcapistranoを介してRedhat Linuxサーバーに配備しようとしていて、Passengerを使ってページを提供しています。展開プロセスは、罰金になりますが、私は、Webページを見しようとしたとき、私は旅客のエラーを取得:Rails 3をPassengerでデプロイする際の問題:mysql gemが見つからない

!!! Missing the mysql gem. Add it to your Gemfile: gem 'mysql', '2.8.1'. 

は実際に、私は私のGemfileに対応する行を追加した、との「宝石のリスト」をやってサーバーはそこにいることを示します。このpost

は、ユーザーが親切正確に同じ問題を指摘し、Gemfile.lockは、Windows用の宝石を持っていることが観察さ、すなわち

mysql (2.8.1-x86-mingw32). 

これは私のGemfile.lockでまったく同じであり、従って私は同じ問題が私のために起こっていると思います。これがベンダー/キャッシュとベンダー/バンドルの宝石であることがわかります。

しかし、私はその投稿の修正案がどのように動作するはずか分かりません。私は、MySQL(2.8.1)であることをGemfile.lockでMySQLの行を編集することができますが、その後、私はこの問題を解決するにはどうすればよい

Can't find mysql-2.8.1 in any of the sources. 

を言う別の旅客エラーを取得しますか?

答えて

2

誰かが同じ問題に遭遇した場合、ここで私がそれを動作させたいくつかのことがあります。そのトリックを正確に知るために何が起こっているのか分かりません。

まず、Gemfileで、私は関連する宝石のルビー版とウインドウズ版の両方が欲しいと指定しました。

gem 'sqlite3-ruby', "~> 1.2.5", :platforms => [:mswin, :ruby_18]

gem 'mysql', "2.8.1", :platforms => [:mswin, :ruby_18]

は、その後本番サーバー上で、 "キャップデプロイ" を使用した後、私は、ベンダー/バンドルおよびベンダー/キャッシュの両方から宝石のmysql-2.81-のx86-MINGW32を削除しました。私のプロダクションサーバーは私に 'gem install mysql'と 'gem install sqlite3-ruby'を許可しますが、それを私のホームディレクトリのどこかに置きます。これらをベンダー/バンドルとベンダー/キャッシュにコピーしました。私はGemfile.lockを編集して 'mysql(2.8.1-x86-mingw32)'という行を 'mysql(2.8.1)'に変更しました。プロダクションサーバーで 'bundle install'を実行すると、Linuxネイティブの宝石がインストールされているようです(少なくとも、「ネイティブ拡張機能の構築」と表示されています)。

結局、これはうまくいくようです。

0

bundle installコマンドを実行します。これがあなたの問題を解決すると確信しています。

また、Gemfile.lockを編集したり移動したりしないでください。バンドラーがそれに気をつけましょう。

+0

OK、バンドルインストールを実行します(デプロイメントの一部として実行されたと思われますが、何があったのか)。それは何かをするように見えました(mysqlのネイティブ拡張を使ってインストールしています)。しかし、私はまだPassengerから同じエラーを受けています。 –

関連する問題