2015-04-28 21 views
5

Ho creato l'applicazione su Sinatra, che rappresenta una semplice API. Voglio fare il dispiegamento su produzione e sviluppo. Voglio scegliere durante la distribuzione, se dovrebbe essere dev o produzione, e la logica di alcuni metodi dovrebbe cambiare, a seconda del tipo di distribuzione. C'è qualche idea, come può essere fatto e qualche esempio di risoluzione di questo problema.Ruby Sinatra configurato per lavorare su produzione e sviluppo

Esempio: Ho codice

get '/api/test' do 
    return "It is dev" 
end 

ma dopo la distribuzione alla produzione vorrei vedere dopo run/api/test

It is PROD 

Come si può fare?

+1

possibile duplicato di [Come posso dire a Sinatra quale ambiente (sviluppo, test, produzione) è?] (Http://stackoverflow.com/questions/19420321/how-do-i-tell-sinatra-what-environment -development-test-production-it-is) –

+0

@AmauryMedeiros Ho aggiornato la mia domanda, non capisco come funziona. Per favore, spiegami. –

+0

Il duplicato nominato è piuttosto inutile, e non _quite_ un duplicato. –

risposta

4

Secondo Sinatra Documentation:

Gli ambienti possono essere impostate tramite la variabile d'ambiente RACK_ENV. Il valore predefinito è "sviluppo". Nell'ambiente di "sviluppo" tutti i modelli vengono ricaricati tra le richieste e gli operatori speciali not_found e visualizzano le tracce di stack nel browser. Negli ambienti "produzione" e "test" , i modelli vengono memorizzati nella cache per impostazione predefinita.

Per eseguire diversi ambienti, impostare la variabile d'ambiente RACK_ENV:

RACK_ENV = produzione rubino my_app.rb

È anche possibile utilizzare i development? e production? metodi per modificare la logica:

get '/api/test' do 
    if settings.development? 
    return "It is dev" 
    else if settings.production? 
    return "It is PROD" 
    end 
end 

Se settings.development? non funziona, puoi provare Sinatra::Application.environment == :development

3

Prova questa

get '/api/test' do 
    if settings.development? 
    return "It is dev" 
    else 
    return "Not dev" 
    end 
end 

Official guide -> environments

+0

ok, ma come faccio a impostare un progetto su dev/prod? –

+0

Penso 'rubino myapp.rb -E production' o [come questo] (http://stackoverflow.com/questions/5832060/sinatra-configuring-environments-on-the-fly#5834009) – Renaud