2015-05-20 3 views
1

Я пытаюсь развернуть свое приложение на сервере Ubuntu. Я установил Nginx/Phusion Passenger и развернул мое приложение с Capistrano, он работает (я могу открыть URL-адрес и посмотреть проект). Я использую RVM и только одну версию Ruby I, установленную ранее (ruby 2.0.0p643). Но когда я иду в папку проекта и попытаться выполнить «рельсы производства гр» я получаю следующее сообщение об ошибке:Rails gem отсутствует после развертывания Capistrano

The program 'rails' can be found in the following packages: 
* ruby-railties-3.2 
* ruby-railties-4.0 
Try: sudo apt-get install <selected package> 

Я не понимаю, что значит эта ошибка - я загрузил свой Rails приложение, оно работает, Я вижу отображаемую HTML-страницу, но эта ошибка говорит мне что-то другое :). Кроме того, если я исполню «список Gem» Я получаю следующий список:

*** LOCAL GEMS *** 

bigdecimal (1.2.0) 
bundler (1.9.9) 
bundler-unload (1.0.2) 
executable-hooks (1.3.2) 
gem-wrappers (1.2.7) 
io-console (0.4.2) 
json (1.7.7) 
minitest (4.3.2) 
psych (2.0.0) 
rake (0.9.6) 
rdoc (4.0.0) 
rubygems-bundler (1.4.4) 
rvm (1.11.3.9) 
test-unit (2.0.0.0) 

я не вижу «рельсы» в этом списке, но, как я уже говорил ранее работает мое приложение !!! Пожалуйста, скажи мне, что я сделал не так. Заранее спасибо!

+0

Мое приложение работает, как она может работать без Rails ?? – malcoauri

ответ

0

Вы должны использовать,

bundle exec rails c production 

Это происходит потому, что ваши использует rvm которые котрое сводит драгоценные камни внутри пространства имен (внутри /vendor на производстве), которые не будут доступны вне контекста расслоения.

Примечание:

Gems может быть установлен вне контекста Bundler с Capistrano (http://paulgoscicki.com/archives/2011/10/tell-bundler-to-install-gems-globally-when-using-capistrano/)

+0

Спасибо, что работает! Как я могу удалить, нужно добавить «bundle exec» для каждой команды? Благодаря ! – malcoauri

+0

добавление 'bundle exec' действительно хорошее, поскольку оно использует драгоценные камни, указанные в' gemfile', без которого ваша команда будет использовать глобальные драгоценные камни. Если вы не захотите использовать 'bundle exec', вам нужно установить gem в глобальное пространство имен, доступное вне контекста связки. –

+0

ОК спасибо! Но как я могу установить драгоценные камни во всем мире? На моей локальной машине я использую RVM и Ruby, но я не выполняю 'bundle exec' для каждой команды – malcoauri

Смежные вопросы