Déploiement de l'application Sinatra sur Dreamhost/Passenger avec des gemmes personnalisées

StackOverflow https://stackoverflow.com/questions/1829973

Question

J'ai une application Sinatra que j'essaie d'exécuter sur Dreamhost et qui utilise Pony pour envoyer des e-mails.Afin que l'application soit opérationnelle au tout début (avant d'ajouter pony), j'ai dû gem unpack rack et gem unpack sinatra dans le répertoire supplier/, voici donc mon 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'ai déjà fait gem install pony et gem unpack pony (dans le vendeur/).Ensuite, j'ai essayé d'ajouter require 'vendor/sinatra/lib/pony' sur config.ru seulement pour que les passagers se plaignent des poneys dépendances (types MIME, tmail) introuvables non plus !

a être une meilleure façon d'utiliser d'autres pierres précieuses et d'atténuer ces longues, laides et redondantes requires.Des pensées?

Était-ce utile?

La solution

Je vous recommande de créer votre propre chemin de pierres précieuses « quelque part », puis l'ajouter dans votre config.ru comme:

ENV['GEM_PATH'] = xxx
Gem.clear_paths

puis installez vos gemmes dans cette

Autres conseils

Installer des pierres précieuses Ruby on dreamhost

http://c.kat.pe/post/ Installation-rubis-gemmes-sur-dreamhost /

Modifier config.ru (œuvres pour Sinatra 1.0)

require 'rubygems'

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

Je espère que ça aide quelqu'un.

J'utilise poney et beaucoup d'autres pierres précieuses pour mon Sinatra. Il faut bien travailler pour vous aussi. Il est juste ces deux lignes (GEM_HOME et GEM_PATH) vous devez ajouter sur votre config.

Il m'a fallu du temps pour découvrir que vous pouvez simplement utiliser "gem install sinatra" et gem comprendra (car les répertoires système sont en lecture seule) que vous devrez utiliser un répertoire d'installation gem local.Pour l’instant, il ne semble pas nécessaire de définir un environnement spécial.Il consiste à utiliser $HOME/.gem comme chemin de gemme local et tout fonctionne.Pas besoin du tout d'exiger un «fournisseur/truc».J'ai découvert que je devais ajouter $HOME/.gem/ruby/1.8/bin à mon chemin afin d'exécuter les binaires installés par gems.

Voici mon config.ru (pour Dreamhost)

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

Modification ultérieure :Tout cela est bien beau, mais il reste le problème que Le passager ne trouve pas mes joyaux lorsque le travail démarre initialement.

Mon config.ru est tout simple:

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

et la tête 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top