Aiuto hosting - Gemme personalizzate su DreamHost
-
05-07-2019 - |
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?
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.