2013-04-18 3 views
1

На производственном сервере Пассажир (4.0.0.rc6 + nginx) продолжает требовать от :development группы в Gemfile. После ручного комментирования их из Gemfile приложение работает нормально. В противном случае Пассажир не смог бы запустить приложение из-за недостающих драгоценных камней.Развертывание приложения Sinatra для Passenger 4.0.0.rc6 от vlad. На производственном сервере он требует: группы разработки в Gemfile

Я проверил страницу ошибки, это казалось Passenger был запущен в рабочем режиме:

Environment (value of RAILS_ENV, RACK_ENV, WSGI_ENV and PASSENGER_ENV) 
production 

Ниже источники моего простого приложения, у меня отсутствует какой-либо параметр, чтобы иметь Пассажирское работу? Благодарю.

Вот мое app.rb, простое приложение для синатры.

require 'rubygems' 
require 'sinatra' 
get "/" do 
    "Hello!" 
end 

Разверните его на vlad на производственный сервер. Вот config/deploy.rb

require 'bundler/vlad' 
set :application, "sinatratest" 
set :domain, "server domain" 
set :deploy_to, "path/on/server" 
set :repository, "mygithub branch" 

И мой config.ru

require 'rubygems' 
require 'sinatra' 
require './app' 
run Sinatra::Application 

И Gemfile

source 'https://rubygems.org' 
gem 'sinatra' 
group :development do 
    gem 'vlad', require: false 
    gem 'vlad-git', require: false 
end 

ответ

2

Ответ на свой вопрос:

Смотрите на Владу участие в Bundler manual, require 'bundler/vlad' и создать новую задачу, которая работает как vlad:update и vlad:bundle:install или вставьте vlad:bundle:install в исходную команду vlad:update.

Если сервер использует RVM, то он должен установить путь bundle явно либо source ~/.rvm/scripts/rvm в задаче Владу или использовать vlad-extra камень, см this post.

Что я делаю, чтобы заставить его работать:

В config/deploy.rb:

require 'bundler/vlad' 
set :bundle_cmd, "source $HOME/.rvm/scripts/rvm && bundle" 

В Rakefile:

namespace :vlad do 
    desc "Run vlad:update and vlad:bundle:install" 
    task :deploy => %w[vlad:update vlad:bundle:install] 
end 

На местном ходу машины rake vlad:deploy и она работает.

0

Я думаю, что проблема

требуют 'RubyGems'

Как я понимаю, это означает, что все драгоценные камни из Gemfile. Для просто требуют драгоценных камней Productiv с:

require 'rubygems' 
require 'bundler/setup' 

Источник: http://gembundler.com/v1.3/rationale.html

+1

Привет @ sir-script, спасибо за предложение. Я попробовал, и это не исправило мою проблему. Но вы правы, что это проблема установки пакета.Я googled с меньшим количеством ключевых слов (вместо тех, в заголовке этого вопроса и нашел решение). Из инструкции [Пассажирское руководство] (http://www.modrails.com/documentation/Users%20guide%20Nginx.html#bundler_support) перед загрузкой приложения Passenger запускает 'bundle.setup', который загружает' Gemfile'. То, что я пропустил, - запустить 'bundle install - без теста разработки 'на сервере. Этот шаг создает '.bundle/config', так что Passenger может правильно загружать драгоценные камни. – Wen