Проблема с развертыванием замороженного приложения Rails - «не удалось найти стойку RubyGem» - PullRequest
0 голосов
/ 18 августа 2010

У меня есть приложение rails, которое я разрабатываю для Windows с Rails 2.3.5, использую sqlite3 в качестве своего механизма базы данных и внутренний сервер Mongrel в качестве своего веб-сервера.

Я развертываю это приложение на компьютере с Linuxзапуск Rails 2.1.0, использование Postgres в качестве моей базы данных и Apache (вызов dispatch.cgi) в качестве моего веб-сервера.У меня нет прав для обновления нативных установок Ruby или Rails или для собственной установки gems.

Чтобы упростить развертывание (я думал ...), я взял ветку своего кода.база для развернутой системы.В этой ветке я обновил database.yml для ссылки на postgres и запускаю rake rails:freeze:gems и rake gems:unpack:dependencies.Затем я экспортировал эту ветку на свой рабочий сервер.

Когда я пытаюсь просмотреть свое приложение на рабочем сервере, я получаю сообщение об ошибке:

Application error
Rails application failed to start properly"

Проверка журналов ошибок Apache, ясм. следующее:

./../config/../vendor/rails/railties/lib/initializer.rb:271:in `require_frameworks': Could not find RubyGem rack (~> 1.0.1) (RuntimeError)
    from ./../config/../vendor/rails/railties/lib/initializer.rb:134:in `process'
    from ./../config/../vendor/rails/railties/lib/initializer.rb:113:in `send'
    from ./../config/../vendor/rails/railties/lib/initializer.rb:113:in `run'
    from ./../config/environment.rb:9
    from dispatch.cgi:5:in `require'
    from dispatch.cgi:5

Я в замешательстве.Если требуется Rack, почему он не был включен в gems:unpack?Как я могу заставить это работать?

(Если это актуально, vendor$ find . -name rack* дает следующее:

./rails/railties/lib/rails/rack
./rails/railties/lib/rails/rack.rb
./rails/railties/lib/rails/.svn/text-base/rack.rb.svn-base
./rails/actionpack/test/controller/rack_test.rb
./rails/actionpack/test/controller/.svn/text-base/rack_test.rb.svn-base
./rails/actionpack/lib/action_controller/rack_lint_patch.rb
./rails/actionpack/lib/action_controller/.svn/text-base/rack_lint_patch.rb.svn-base

)

Ответы [ 2 ]

4 голосов
/ 23 августа 2010

Стойка не включена, потому что это фреймворк. Чтобы продать этот драгоценный камень, вы можете вручную распаковать его в вендор / драгоценные камни следующим образом:

cd vendor/gems; gem unpack rack -v="1.0.1"

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

0 голосов
/ 27 августа 2010

Ваша первая проблема заключается в том, что Rails 2.1.0 не использует Rack в качестве среднего слоя.

Вам также необходимо изменить версию рельсов в файле config / environment.rb.

Кроме того, в зависимости от других используемых вами драгоценных камней, вам может потребоваться вернуться к стабильной версии, которая работает с 2.1.0.

Лично я установил бы 2.1.0 на свой локальный компьютер, создал бы новое приложение с этой версией rails, скопировал бы папку приложения из проекта 2.3.5 (и, конечно, ваши юнит-тесты и общую папку, и т. Д., И увидел бы если вы можете заставить его работать под 2.1.0 на вашем локальном компьютере, заменяя гемы, которые не работают, на обратную трассировку в журнале сервера или в браузере. Это будет намного проще, чем работать в производственном режиме и смотреть на apache журналы. Предполагая, что у вас есть хорошие модульные тесты, которые визуализируют все ваши представления и сгибают код модели, вы должны избавиться от любых методов, которые вы использовали, которые были добавлены начиная с 2.1.0 и которые довольно быстро не поддерживаются в более старых версиях Rails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...