カスタム gem を使用した Dreamhost/Passenger への Sinatra アプリのデプロイ

StackOverflow https://stackoverflow.com/questions/1829973

質問

ポニーを利用して電子メールを送信する Sinatra アプリを Dreamhost で実行しようとしています。アプリケーションを最初に (ポニーを追加する前に) 起動して実行するには、次のことを行う必要がありました。 gem unpack rack そして gem unpack sinatra これが私の config.ru でした。

require 'vendor/rack/lib/rack'
require 'vendor/sinatra/lib/sinatra'

set :run, false
set :environment, :production
set :views, "views"

require 'public/myapp.rb'
run Sinatra::Application

すでにやりました gem install pony そして gem unpack pony (ベンダー/に)。その後、追加してみました require 'vendor/sinatra/lib/pony' 乗客にポニーについて苦情を言わせるためだけに config.ru に送信する 依存関係 (MIME タイプ、Tmail) も見つかりません。

そこには もっている 他の宝石を使用し、長くて醜く冗長な宝石をトーンダウンするより良い方法になるように requires. 。何かご意見は?

役に立ちましたか?

解決

私はあなたのconfig.ruでそれを追加し、「どこかに」あなた自身の宝石のパスを作成することをお勧めしたいです 同様ます:

ENV['GEM_PATH'] = xxx
Gem.clear_paths

そのにあなたの宝石をインストール

他のヒント

Dreamhostの上でRubyの宝石をインストールします。

http://c.kat.pe/post/インストール・ルビー宝石オンDreamhostの/

変更config.ru(シナトラ1.0のために動作します)。

が必要です 'RubyGemsの'

'sinatra.rb / libに/シナトラベンダー/' が必要です。

ENV['GEM_HOME'] = '/home/username/.gems'
ENV['GEM_PATH'] = '$GEM_HOME:/usr/lib/ruby/gems/1.8'
require 'rubygems'
Gem.clear_paths

disable :run, :reload

set :environment, :production

require 'yourapp'
run Sinatra::Application

それは誰かがお役に立てば幸いです。

私はポニーと私のシナトラのために他の宝石の多くを使用しています。それはあまりにもあなたのためにうまく動作するはずです。それはあなたの設定に追加する必要がちょうどそれらの2つのライン(GEM_HOMEとGEM_PATH)です。

「gem install sinatra」を使用するだけで、gem がローカルの gem インストール ディレクトリを使用する必要があることを (システム ディレクトリが読み取り専用であるため) 認識してくれるということを知るまでに長い時間がかかりました。今のところ、特に特別な環境を設定する必要はないようです。$HOME/.gem をローカル gem パスとして使用することが判明し、すべてが正常に機能します。「ベンダー/スタッフ」を要求する必要はまったくありません。gem によってインストールされたバイナリを実行するには、$HOME/.gem/ruby/1.8/bin をパスに追加する必要があることがわかりました。

これが私のconfig.ruです(Dreamhost用)

## Passenger should set RACK_ENV for Sinatra
require 'test'
set :environment, :development
run Sinatra::Application

後で編集:これはこれで問題ありませんが、問題が残ります。 ジョブの最初の開始時に乗客が私の宝石を見つけられない.

私のconfig.ruは同じくらい簡単です

require 'rubygems'
require 'vendor/sinatra/lib/sinatra.rb'
require 'app.rb'

とapp.rb頭部ます:

require 'yaml'
require 'haml'
require 'ostruct'
require 'date'
require 'pp'

module FlytoFB
    log = File.new("sinatra.log", "a")
    STDOUT.reopen(log)
    STDERR.reopen(log)

    configure do

            enable :logging, :dump_errors
            set :app_file, __FILE__
            set :reload, true
            set :root, File.dirname(__FILE__)
            set :environment, :production
            set :env, :production
            set :run, false

            set :raise_errors, true
      set :public, 'public'

            error do
                    e = request.env['sinatra.error']
                    puts e.to_s
                    puts e.backtrace.join("\n")
                    "Application Error!"
            end

            not_found do
              "Page not found!"
      end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top