Domanda

Sto tentando di distribuire un'app RoR usando Passenger sul mio account di hosting DreamHost, ma ho problemi a metterlo in funzione.

La mia applicazione richiede due gemme personalizzate "amazon-ecs" e "nokogiri". Secondo le istruzioni sulla wiki di DreamHost ( http://wiki.dreamhost.com/Freezing_Gems ) I ha congelato le gemme ai venditori codificandole nel mio file di configurazione (config.gem " nokogiri ") e quindi ha usato il comando rake gems: unpack per costruirle nel fornitore.

Ho quindi congelato le gemme delle rotaie usando le rastrelliere: freeze: gems e le ho caricate sul mio sottodominio.

Le ultime sette righe del mio backtrace sono le seguenti:

0   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   336     in `abort'
1   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   336     in `check_gem_dependencies'
2   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   170     in `process'
3   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   113     in `send'
4   /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb   113     in `run'
5   ./config/environment.rb     9   
6   /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb     31  in `gem_original_require'
7   /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb     31  in `require'

Il mio file di configurazione è simile al seguente:

RAILS_GEM_VERSION = '2.3.3' unless defined? RAILS_GEM_VERSION
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
config.gem "nokogiri"
config.gem "amazon-ecs"
config.time_zone = 'UTC'
end

Ho perso un passo con le gemme? Sono sulla buona strada?

È stato utile?

Soluzione

Qualsiasi gemma che ha estensioni native non può essere venduta con la tua app, e c'è una buona scommessa che su DH, config.gem non funzionerà neanche. Devi installare i tuoi rubygem e fare in modo che la tua app lo usi. Consiglio di dare un'occhiata a questo:

http://railstips.org/2008/11 / 24 / rubygems-yours-mine-e-la nostra

Ha ottime istruzioni per impostare il tuo ambiente su DH. Ho dovuto farlo la scorsa settimana dopo un aggiornamento del server, e si applica ancora.

Altri suggerimenti

quindi / vendor / rails e / vendor / plugins / nokogiri e amazon-ecs esistono e ti stanno bene? Puoi riprovare e questa volta specificando la versione esatta della gemma nella tua configurazione in questo modo

config.gem "nokogiri", :version => "1.0"

o se la gemma è su Github

config.gem "tenderlove-nokogiri", :version => "1.0", :lib => "nokogiri", :source => "http://gems.github.com"

Il backtrace non sembra molto utile, cosa sta succedendo esattamente? : -)

Ho ottenuto lo stesso backtrace (su una pagina di errore Passeggero) con un'app che ho distribuito di recente. Si è scoperto che non era in grado di trovare una delle gemme da cui dipendevo (config.gem) ... nonostante il fatto che le gemme rake dicessero che era lì ([I] test-unit = 1.2.3).

Il supporto di Dreamhost mi ha suggerito di provare a congelare / spacchettare le mie gemme. Probabilmente avrebbe funzionato (non ha avuto problemi a trovare nessuna delle mie altre gemme, che sono state congelate), ma per qualche motivo gemme rastrellate: decomprimere non stava facendo nulla per me, quindi ho finito per commentare quella configurazione .gem line poiché non ne avevo bisogno in produzione comunque, e ha funzionato!

Quindi, se qualcun altro sta riscontrando questo errore, indica fortemente che una delle tue gemme non viene trovata. Prova a commentare le tue righe config.gem, una alla volta finché non inizia a funzionare o dà un errore diverso?

Ho avuto un problema su DreamHost la scorsa settimana in cui le mie app Rails funzionanti hanno smesso improvvisamente di funzionare a causa di gemme mancanti. Ho contattato l'assistenza e qui è stata la loro risposta:

  

Sembra che siano state apportate alcune modifiche   al tuo server e la maggior parte dei file   i rubygem installati dal sistema non lo erano   reinstallato come avrebbero dovuto   stato. Ho installato manualmente sqlite3   gemma per te, ma il nostro amministratore che gestisce   questo dovrà dare un'occhiata a questo   per capire perché non lo fossero   installato. Se ne hai un altro paio   che vedi che non funziona, posso guardare   potenzialmente installandoli come arresto   divario nel frattempo.

È possibile che tu sia interessato dalla stessa cosa. Prova a contattare l'assistenza per scoprirlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top