Frage

Ich habe eine Sinatra-app, die ich versuche zu laufen, auf Dreamhost verwenden von pony, um E-Mail senden.Um die Anwendung und läuft ganz am Anfang (vor dem hinzufügen von pony), musste ich gem unpack rack und gem unpack sinatra in der Hersteller-Verzeichnis, also das war meine 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

Habe ich bereits getan gem install pony und gem unpack pony (vendor/).Danach habe ich versucht, indem require 'vendor/sinatra/lib/pony' zu config.ru nur haben Fluggast-Klagen über pony Abhängigkeiten (mime-Typen, tmail) nicht gefunden!

Es hat ein besserer Weg, um andere Edelsteine, und Ton diesen langen, hässlich, überflüssig requires.Irgendwelche Gedanken?

War es hilfreich?

Lösung

Ich würde empfehlen, erstellen Sie Ihren eigenen Edelstein Pfad "irgendwo" hinzufügen, die in Ihrem config.ru wie:

ENV['GEM_PATH'] = xxx
Gem.clear_paths

dann installieren Sie Ihre Edelsteine in diesem

Andere Tipps

Installieren Sie Ruby gems auf dreamhost

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

Ändern config.ru (funktioniert für 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

Hoffe es hilft jemandem.

Ich bin mit pony und viele andere Edelsteine für mein Sinatra.Es sollte gut funktionieren, auch für Sie.Es ist nur diese zwei Zeilen (GEM_HOME und GEM_PATH) Sie haben zu hinzufügen auf Ihre config.

Es hat mich Alters zu finden, die Sie einfach verwenden Sie "gem install sinatra" - und Edelstein-Figur wird aus (weil die system-Verzeichnisse sind schreibgeschützt), die Sie benötigen, um eine lokale gem install directory.Jetzt scheint es zu sein, keine Notwendigkeit, irgendwelche speziellen Umgebung.Sie zahlen, um in $HOME/.gem als lokales Juwel Weg und alles funktioniert einfach.Keine Notwendigkeit require 'vendor/stuff' at all.Ich fand, dass ich hatte, um in $HOME/.gem/ruby/1.8/bin meinen Weg zum ausführen von Binärdateien installiert werden, indem die Edelsteine.

Hier ist meine config.ru (für Dreamhost)

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

Später Bearbeiten:Das ist alles schön und gut, aber es bleibt das Problem, dass Passagier kann nicht finden, meine Edelsteine, wenn der job startet zunächst bis.

Meine config.ru ist es einfach so:

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

und app.rb Kopf:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top