2009-12-02 78 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)。

相关问题