2010-10-20 12 views
12

Sto provando a far funzionare la mia app Heroku usando lo stack bamboo-mri-1.9.2. Ovviamente funziona bene localmente su Ruby 1.9.2. Ma quando sulla produzione si blocca durante l'avvio in esecuzione config.ru che assomiglia a questo:L'app di Heroku non si avvia - `require ': nessun file da caricare - sinatratestapp (LoadError)

require 'sinatratestapp' 
run Sinatra::Application 

mio .gems di file:

sinatra --version '>= 1.0' 

E l'applicazione stessa come sinatratestapp.rb:

require 'rubygems' 
require 'sinatra' 

get '/' do 
    "Hello from Sinatra on Heroku!" 
end 

Ecco tutto ciò che ho nel progetto e ho provato a farlo nei risultati Heroku:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- sinatratestapp (LoadError) 
     from <internal:lib/rubygems/custom_require>:29:in `require' 
     from config.ru:1:in `block (3 levels) in <main>' 
     ... 
-----> Your application is requiring a file that it can't find. 

     Most often this is due to missing gems, or it could be that you failed 
     to commit the file to your repo. See http://docs.heroku.com/gems for 
     more information on managing gems. 

     Examine the backtrace above this message to debug. 

Ho provato a fare come guida ma come un noob di Ruby i miei esami non hanno dato risultati.

+0

Sono stato in grado di ripetere il problema. Raccomando di inviare una richiesta di supporto a Heroku. – ponzao

risposta

38

Con l'aiuto della richiesta di assistenza Heroku e this question ho trovato la soluzione.

Ruby 1.9.2 non include automaticamente "." nel $ LOAD_PATH. Per risolvere il problema, modificare indicando require './sinatratestapp' anziché require 'sinatratestapp'.

+1

Il motivo per cui funzionava localmente era il fatto ovvio che non usavo config.ru quando si eseguiva localmente. – hleinone

+0

Grazie, ha avuto esattamente lo stesso problema. Wish foreman ecc. Non era allergico a Windows! –

+1

Per testare config.ru localmente avviare l'app usando 'rackup'. – Morgan

-1

I miei progetti Sinatra hanno lo stesso layout e hanno lo stesso aspetto, l'unica differenza è che nel mio file .gems non specifica una versione.

miei .gems aspetto:

sinatra 
hpricot 
+0

Non ha aiutato. Sei anche nello stack 'bamboo-mri-1.9.2'? – hleinone

1

Credo mi sono imbattuto in questo problema quando la sperimentazione di Sinatra. Ruby 1.9 non include la directory corrente nel percorso per impostazione predefinita, quindi è necessario indicare implicitamente require 'sinatratestapp' nel nostro file config.ru.

3

È possibile inserire la seguente riga nel file config.ru e risolverà anche il problema. Questo è anche andare a portare l'applicazione larga, in modo che riporterà la sensazione di pre-1.9.2 comportamento:

$ LOAD_PATH.unshift (Dir.getwd)

NOTA: non ho potuto testare su Heroku

IL MIO PROBLEMA: ottenere unicorno per comportarsi correttamente con un'applicazione sinatra (ruby < 1.9.2) senza un Gemfile, config.ru o config/unicorn.rb.

Problemi correlati