Domanda

Ho un'app Sinatra che sto cercando di eseguire su Dreamhost che utilizza pony per inviare e-mail.Per rendere l'applicazione operativa fin dall'inizio (prima di aggiungere pony), ho dovuto farlo gem unpack rack E gem unpack sinatra nella directory vendor/, quindi questo era il mio 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

l'ho già fatto gem install pony E gem unpack pony (nel venditore/).Successivamente, ho provato ad aggiungere require 'vendor/sinatra/lib/pony' su config.ru solo per far sì che il passeggero si lamenti dei pony dipendenze (mime-types, tmail) non sono stati trovati!

ha per essere un modo migliore di usare altre gemme e attenuare quelle lunghe, brutte, ridondanti requires.qualche idea?

È stato utile?

Soluzione

mi consiglia di creare il proprio percorso gioiello "da qualche parte", aggiungendo poi nel vostro config.ru come:

ENV['GEM_PATH'] = xxx
Gem.clear_paths

quindi installare il vostro gemme in quella

Altri suggerimenti

Installa le gemme del rubino su DreamHost

http://c.kat.pe/post/ Installazione-ruby-gemme-on-DreamHost /

Cambia config.ru (lavori per Sinatra 1.0)

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

Speranza che aiuta qualcuno.

Sto usando pony e un sacco di altre gemme per il mio Sinatra. Dovrebbe funzionare bene anche per te. E 'solo quelle due righe (GEM_HOME e GEM_PATH) si deve aggiungere il vostro config.

Mi ci sono voluti anni per scoprire che puoi semplicemente usare "gem install sinatra" e gem capirà (perché le directory di sistema sono di sola lettura) che dovrai utilizzare una directory di installazione gem locale.A partire da ora, sembra non esserci alcun bisogno di impostare alcun ambiente speciale.Capisce di utilizzare $HOME/.gem come percorso gemma locale e tutto funziona.Non è affatto necessario richiedere "venditore/materiale".Ho scoperto che dovevo aggiungere $HOME/.gem/ruby/1.8/bin al mio percorso per eseguire i binari installati da gems.

Ecco il mio config.ru (per Dreamhost)

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

Modifica successiva:Va tutto bene, ma rimane il problema Il passeggero non riesce a trovare le mie gemme all'avvio del lavoro.

Il mio config.ru è proprio semplice come:

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

e la testa 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top