Проблема развертывания Rails 3 с Passenger: отсутствует драгоценный камень mysql - PullRequest
1 голос
/ 28 января 2011

У меня есть проблема, которая кажется очень связанной с этим в другом посте, но я не понимаю, какое решение было найдено. Я новичок в Rails и собрал приложение Rails 3. Я занимаюсь разработкой в ​​Windows, пытаюсь развернуть его на моем (совместно используемом) сервере Redhat Linux через git и capistrano и использую Passenger для обслуживания страниц. Процесс развертывания проходит нормально, но когда я пытаюсь просмотреть веб-страницу, я получаю сообщение об ошибке Пассажира:

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

На самом деле, я добавил соответствующую строку в свой Gemfile, и выполнение «списка драгоценных камней» на сервере показывает, что он там есть.

В этой записи пользователь услужливо отметил точно такую ​​же проблему и заметил, что Gemfile.lock имеет гем для Windows, т.е.

mysql (2.8.1-x86-mingw32).  

Это точно так же в моем Gemfile.lock, и поэтому я думаю, что та же самая проблема происходит со мной; видно, что это драгоценный камень в vendor / cache и vendor / bundle.

Однако я не понимаю, как предполагаемое исправление из этого поста должно работать. Я могу отредактировать строку mysql в Gemfile.lock, чтобы она была mysql (2.8.1), но затем я получил другую ошибку Пассажира, которая говорит

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

Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

В случае, если кто-то сталкивается с той же проблемой, вот несколько вещей, которые я сделал, чтобы это работало.Я не понимаю достаточно того, что происходило, чтобы точно знать, в чем дело.

Во-первых, в Gemfile я указал, что нам нужны версии ruby ​​и windows соответствующих гемов.

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

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

Затем на рабочем сервере, после использования «cap deploy», я удалил gem mysql-2.81-x86-mingw32 из обоих поставщиков / комплектов ипоставщик / кэш.Мой рабочий сервер позволяет мне 'gem install mysql' и 'gem install sqlite3-ruby', но помещает его в другое место в моем домашнем каталоге;Я скопировал их в vendor / bundle и vendor / cache.Я отредактировал Gemfile.lock, чтобы изменить строку «mysql (2.8.1-x86-mingw32)» на «mysql (2.8.1)».Затем «bundle install» на производственном сервере, кажется, устанавливает собственные гемы linux (по крайней мере, он говорит «сборка собственных расширений»).

После всего этого, похоже, все работает.

0 голосов
/ 28 января 2011

Запустите команду bundle install.Я уверен, что это решит вашу проблему.

Кроме того, не редактируйте и не перемещайте Gemfile.lock.Пусть бандлер позаботится об этом.

...