Pergunta

Eu tenho um aplicativo de Sinatra que eu estou tentando executar no Dreamhost que faz uso de pônei para enviar e-mail. A fim de obter o aplicativo instalado e funcionando no início (antes de adicionar pônei), eu tive que gem unpack rack e gem unpack sinatra para o vendedor / diretório, então esta foi a minha 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

Já fiz gem install pony e gem unpack pony (em vendor /). Depois, eu tentei adicionar require 'vendor/sinatra/lib/pony' para config.ru só para ter passageiros queixam-se do pônei dependências (tipos MIME, TMail) não foi encontrado qualquer um!

Não tem para ser a melhor maneira de usar outras pedras preciosas e tom baixo aqueles longo, feio requires, redundante. Quaisquer pensamentos?

Foi útil?

Solução

Eu recomendo criar o seu próprio caminho jóia "em algum lugar", em seguida, adicioná-lo em sua config.ru como:

ENV['GEM_PATH'] = xxx
Gem.clear_paths

, em seguida, instalar suas gemas em que

Outras dicas

Instale gemas do rubi no dreamhost

http://c.kat.pe/post/ Instalando-rubi-jóias-on-dreamhost /

Alterar config.ru (funciona para Sinatra 1.0)

require 'rubygems'

require '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

Espero que ajude alguém.

Eu estou usando pônei e um monte de outras pedras preciosas para o meu Sinatra. Ele deve funcionar bem para você também. É apenas essas duas linhas (GEM_HOME e GEM_PATH) você tem que adicionar em sua configuração.

Levei séculos para descobrir que você pode simplesmente usar "gem install Sinatra" e gem vai descobrir (porque os diretórios do sistema são somente leitura) que você vai precisar usar uma jóia local diretório de instalação. A partir de agora, não parece haver necessidade de definir qualquer ambiente especial. Ele descobre a utilizar $ HOME / .gem como o caminho jóia local e tudo isso funciona. Não há necessidade de exigir 'vendedor / stuff' em tudo. Eu achei que eu tinha para adicionar $ HOME / .gem / ruby ??/ 1.8 / bin para o meu caminho, a fim de executar binários instalados por pedras preciosas.

Aqui está a minha config.ru (para Dreamhost)

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

Editar Mais tarde: Isto é tudo muito bem, mas ainda há a questão de que passageiros não consegue encontrar minhas jóias quando o trabalho inicialmente inicia .

Meu config.ru é apenas simples como:

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

e cabeça 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top