1

本番サーバーで、Passenger(4.0.0.rc6 + nginx) は、:developmentグループを要求し続けGemfileます。Gemfileアプリから手動でコメントアウトした後、正常に動作します。そうしないと、gem がないために Passenger がアプリの起動に失敗します。

エラーページを確認したところ、Passenger が本番モードで実行されているようでした:

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

以下は私のシンプルなアプリのソースです。Passenger を機能させるための設定がありませんか? ありがとう。

これが私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
4

2 に答える 2

2

私自身の質問への答え:

Bundler manualのvlad の部分を参照して、元のコマンドにandまたは insertのrequire 'bundler/vlad'両方を実行する新しいタスクを作成します。vlad:updatevlad:bundle:installvlad:bundle:installvlad:update

サーバーが RVM を使用している場合は、vlad タスクでbundle明示的にパスを設定するか、 gem を使用する必要があります。この投稿を参照してください。source ~/.rvm/scripts/rvmvlad-extra

それを機能させるために私がしていること:

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と動作します。

于 2013-04-18T16:40:19.227 に答える