2009-12-02 74 views
3

我有一個Sinatra應用程序,我試圖在使用小馬發送電子郵件的Dreamhost上運行。爲了讓應用程序啓動和運行在一開始(加入小馬之前),我不得不gem unpack rackgem unpack sinatra到供應商/目錄,所以這是我的config.ru:在Dreamhost/Passenger上使用自定義寶石部署Sinatra應用程序

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 

我已經做了(供應商/)。之後,我嘗試將require 'vendor/sinatra/lib/pony'添加到config.ru,但只有乘客抱怨小馬的依賴關係(mime-types,tmail)沒有被發現!

是用其他寶石和淡化那些長期的,醜陋的,冗餘requires一個更好的辦法。有什麼想法嗎?

回答

4

我建議創建自己的寶石路「的地方」,然後在你的config.ru 如添加它:

ENV['GEM_PATH'] = xxx 
Gem.clear_paths 

然後再安裝你的寶石成

+0

是的!使用該信息,我去了並找到http://www.edschmalzle.com/2009/06/29/deploying-sinatra-with-passenger-on-dreamhost/並讓它運行。謝謝! – darkism 2009-12-02 04:17:06

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 
1

我花了很多時間才發現可以簡單地使用「gem install sinatra」,gem會找出(因爲系統目錄是隻讀的),您將需要使用本地gem安裝目錄。截至目前,似乎沒有必要設置任何特殊的環境。它計算出使用$ HOME/.gem作爲當地的寶石路徑,一切正常。根本不需要「供應商/東西」。我確實發現我必須將$ HOME/.gem/ruby​​/1.8/bin添加到我的路徑才能執行由gems安裝的二進制文件。

這裏是我的config.ru(用於Dreamhost的)

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

後來編輯:這是一個好罰款,但仍存在問題是Passenger can't find my gems when the job initially starts up

3

上Dreamhost的

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

變化config.ru(適用於西納特拉1.0)

需要 '的rubygems'

需要「供應商/屈/ LIB /屈安裝Ruby寶石。 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 

希望它可以幫助小號omeone。

我爲我的Sinatra使用小馬和其他許多寶石。它應該也適合你。這就是你必須添加到你的配置中的那兩行(GEM_HOME和GEM_PATH)。

相關問題