3

ポニーを使用して電子メールを送信するDreamhostで実行しようとしているSinatraアプリがあります。最初 (ポニーを追加する前) にアプリケーションを起動して実行するためにgem unpack rackgem unpack sinatravendor/ ディレクトリに移動する必要があったため、これが私の 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 ponyand をgem unpack pony(vendor/ に) 実行しました。その後、config.ru に追加しようとしましたが、Pony の依存関係(MIME タイプ、tmail) が見つからないことrequire 'vendor/sinatra/lib/pony'について Passenger に文句を言わせただけです。

他の宝石を使用し、長くて醜い冗長なrequires. 何かご意見は?

4

4 に答える 4

4

独自の gem パスを「どこかに」作成してから、config.ru 好きなように追加することをお勧めします。

ENV['GEM_PATH'] = xxx
Gem.clear_paths

次に、宝石をそれにインストールします

于 2009-12-02T04:12:09.643 に答える
3

Dreamhost に Ruby gem をインストールする

http://c.kat.pe/post/installing-ruby-gems-on-dreamhost/

config.ru を変更 (Sinatra 1.0 で動作)

「ルビジェム」が必要

「vendor/sinatra/lib/sinatra.rb」が必要です

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) だけです。

于 2010-04-03T14:47:33.987 に答える
1

「gem install sinatra」を使用するだけで、gem が (システム ディレクトリが読み取り専用であるため) ローカルの gem インストール ディレクトリを使用する必要があることを理解するのに時間がかかりました。今のところ、特別な環境を設定する必要はまったくないようです。$HOME/.gem をローカルの gem パスとして使用することがわかり、すべてが機能します。require 'vendor/stuff' はまったく必要ありません。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

後で編集: これはすべて問題ありませんが、ジョブが最初に開始されたときに Passenger が私の宝石を見つけられないという問題が残っています。

于 2010-02-17T00:53:31.920 に答える
0

私の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
于 2010-01-08T16:59:38.497 に答える