我已经得到了我想要Dreamhost上运行,使得使用小马发送电子邮件西纳特拉应用。为了让应用程序启动和运行在一开始(加入小马之前),我不得不gem unpack rackgem 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 ponygem 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'

需要 '供应商/屈/ 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

希望它可以帮助别人。

我使用的小马和许多其他的宝石我西纳特拉的。它应该为你工作也很好。这只是这两条线(GEM_HOME和GEM_PATH),你必须对你的配置添加。

我花了好长时间才发现,你可以简单地用“创业板安装西纳特拉”和创业板将计算出(因为系统目录只读),您将需要使用本地宝石安装目录。截至目前,似乎没有必要设置任何特殊环境可言。它计算出使用$ HOME / .gem为本地宝石路,一切都只是工作。无需要求“供应商/东西”可言。我也发现,我不得不$ HOME / .gem /红宝石/ 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