2011-08-17 18 views
8

Un po 'di me stesso. Ho 24 anni, mi sono laureato da NC State con un Master in Analytics l'anno scorso. Statistiche, matematica, quel genere di cose. Non ho un forte background di programmazione, che è piuttosto importante per la mia domanda. Se dico qualcosa che non ha senso, ecco perché. Fin dalla laurea, ho lavorato a tempo pieno su un'app Rails con poche altre persone. La mia esperienza di programmazione è principalmente Ruby on Rails (1,2 anni). So R, SAS (lingue statistiche, non utile per questa domanda)Devo distribuire l'applicazione Ruby on Rails su Heroku

Ovviamente, ciò significa che è stato più di un anno in sviluppo, e non siamo ancora finito. Lo sviluppatore principale è un programmatore eccellente, solo che ha già un lavoro a tempo pieno e fa questa app nel suo tempo libero. Poiché non ha avuto abbastanza tempo recentemente, mi è stata data praticamente la piena responsabilità per l'app.

Abbiamo installato su Slicehost in questo momento. L'app è al punto in cui non abbiamo bisogno di programmare altro (a meno che non pensiamo a più funzioni). La ragione per cui chiedo se dovremmo migrare a Heroku è che mi sembra che Heroku sia una piattaforma semplice a cui distribuire. Slicehost sembra troppo complicato per me. L'altro sviluppatore ha affrontato questo problema, e non io. Ho visto come distribuire l'app su Heroku e sembra che sarei in grado di farlo. Abbiamo bisogno che la nostra app ridimensiona se necessario, cosa che Heroku offre. Per quanto riguarda i soldi, vorrei avviarlo al minimo (gratuito) e vedere come va. Posso pagare per funzionalità aggiuntive se necessario.

Stiamo utilizzando Redmine per la gestione dei progetti e il repository (non git, che penso dovremmo usare su Heroku.) È simile a Redmine? è facile da usare?

In questo momento, su Slicehost, abbiamo 4 demoni (processi costantemente in esecuzione.) Abbiamo 8 lavoratori delayed_job. Conosco la riga di comando per avviare i demoni e gli operatori delayed_job. Funzionerebbero su Heroku?

Mi chiedo se posso ancora utilizzare RAILS_ENV = script di produzione/console con Heroku.

L'interfaccia utente è un file javascript. In modalità sviluppo, se faccio script/server in un terminale, e andare a http://localhost:3000 in un browser, posso vederlo. Heroku caricherà questa pagina nel modo che voglio?

Abbiamo un sito Web funzionante per l'app, con il nostro nome di dominio. Non so davvero cosa sia il DNS, quindi probabilmente non sarei in grado di collegare l'app Heroku a questo, a meno che non ci sia un modo semplice. Penso che Heroku lo colleghi a appname.heroku.com come predefinito.

Sulla base della mia esperienza di programmazione, Heroku sarebbe stato abbastanza semplice da usare, dovrei trovare un altro lavoro o dovrei commettere seppuku?

+0

SI. tutte le vostre preoccupazioni sono coperti :) – tybro0103

+1

_Il applicazione è in un punto in cui non abbiamo bisogno di programmare nulla else_ -famosi ultime parole – Brian

+0

Heroku è bello, ma vi consiglio OpenShift - Vedere il mio post qui http: // stackoverflow.com/questions/17727788/deploying-ruby-on-rails-is-there-a-good-alternative-for-heroku – obenda

risposta

5

Sì, si dovrebbe assolutamente distribuire l'applicazione in Heroku. Per fare questo, questo è quello che dovrete fare:

  1. Assicurarsi di avere git installato nel computer
  2. creare un account Heroku here
  3. Installare la gemma Heroku e fare il resto come menzionato in this page
  4. monitorare la vostra applicazione con git, e creare la vostra applicazione Heroku, come mostrato here
  5. Dopo avere effettuato questa, Heroku vi fornirà un URL per la vostra applicazione, come ad come http://blah-bleep-123.heroku.com. Ora, il prossimo passo sarebbe quello di associare il tuo dominio a questo URL heroku.
  6. Configurare il server DNS del dominio come mostrato in in this page. Intendiamoci, dopo aver cambiato il DNS, potrebbe richiedere fino a 48 ore per farlo funzionare. Puoi modificare il DNS del tuo dominio accedendo al sito in cui hai acquistato il dominio, ad es. godaddy.com, hostingdude.com, ecc.
  7. Aggiungi questo codice al tuo ApplicationController. Puoi seguire questo da this page così

    class ApplicationController 
        before_filter :ensure_domain 
    
        APP_DOMAIN = 'www.mydomain.com' 
    
        def ensure_domain 
        if request.env['HTTP_HOST'] != APP_DOMAIN 
         # HTTP 301 is a "permanent" redirect 
         redirect_to "http://#{APP_DOMAIN}", :status => 301 
        end 
        end 
    end 
    
  8. Assicurati di migrare tutti i vostri database in Heroku, facendo heroku rake db:migrate
  9. Dopo aver completato tutti questi passaggi, si dovrebbe essere buono. Controlla l'URL del tuo dominio, tutto dovrebbe funzionare bene :).
  10. Se vedete eventuali errori nella tua pagina, è possibile visualizzare il registro da heroku logs
  11. È possibile accedere alla console come heroku console

Con funzioni come queste, Heroku è molto comodo per lavorare.

Per favore fatemi sapere se avete bisogno di ulteriore aiuto.

+0

I terminato con il passaggio 4 e ho un problema. Ho fatto Heroku rake db: migrate e ho ottenuto questo, perché ho bisogno di versioni specifiche di alcune gemme: mancanti queste gemme richieste: delayed_job ~> 2.0.7 gemme nokogiri Run 'rake: install' installare il mancante gemme. Io ho: gemme di rake heroku: installa Esegui 'rake gems: install' per installare le gemme mancanti. gem install delayed_job --version "~ -> 2.0.7" ERRORE: Durante l'esecuzione di gem ...(Gem :: FilePermissionError) Non hai i permessi di scrittura nella directory /usr/ruby1.9.2/lib/ruby/gems/1.9.1. – Eric

+0

L'invio accidentale in anticipo e non ho potuto terminare la modifica. C'è un modo per usare versioni specifiche di alcune gemme su Heroku? – Eric

+0

Inoltre, non riesco ad accedere alla console: console heroku L'applicazione è troppo impegnata per aprire una sessione della console. Le sessioni di console richiedono un banco di prova aperto da utilizzare per l'esecuzione. Ho pensato che fosse venuto con un banco di prova gratuito. Devo fare qualcosa per configurarlo? – Eric

3

Mi sembra che dovresti considerare seriamente Heroku. L'ho usato per i progetti del fine settimana e lo usiamo anche al lavoro, abbastanza bene. La distribuzione è un gioco da ragazzi, non devi preoccuparti della configurazione (per la maggior parte) e dell'amministrazione del sistema. È super facile aggiungere moduli e "pagare man mano che cresci".

Per quanto riguarda i tuoi bisogni, potresti (credo) eseguire la tua mina rossa su Heroku stesso, essendo un'app per rotaie. L'unica cosa è che accenni all'uso di Redmine come "repository" e non sono sicuro di capire cosa intendi, dato che Redmine non è un sistema di controllo delle versioni. Redmine ha punti di integrazione per vari VCS (SVN, git, Mercurial, CVS e altri). Sì, Heroku usa git e questo è quello che dovresti usare per inviare il codice al server. Se hai familiarità con Mercurial, è piuttosto simile.

Per lavori ritardati, Heroku offre lavori cron gratuiti che vengono eseguiti una volta al giorno e quelli orari a pagamento (vedere cron add-on).C'è anche un plugin di lavoro in ritardo (see this) ma non ho alcuna esperienza con esso.

Dovresti poter accedere alla console di Rails (see heroku docs). Basta eseguire 'heroku console' e voilà, sei lì.

Se la tua app funziona eseguendo script/server, dovrebbe funzionare anche fuori dalla scatola in heroku.

Per quanto riguarda il DNS, farlo funzionare con il dominio personalizzato non è difficile. Puoi accedere alla tua app con appname.heroku.com, per impostare il tuo controllo del dominio personalizzato heroku docs here, ma in pratica devi aggiungere il componente aggiuntivo del dominio personalizzato (gratuito se non vuoi sottodomini), configurare heroku per rispondere alle richieste del tuo dominio (un paio di semplici comandi) e imposta il tuo provider DNS affinché indichi Heroku (c'è anche un breve video nei documenti su come farlo con GoDaddy).

L'unico inconveniente che ho visto con Heroku, e non è enorme, è che se la tua app non riceve traffico per un lungo periodo di tempo, le istanze tipo "vai a dormire", rendendo prossima richiesta di arrivare un po 'lento (a volte anche il cronometraggio), ma una volta che l'istanza è attiva, tutto è a posto.

Tutto sommato, penso che Heroku sia un ottimo modo per toglierti un sacco di onere da parte tua e rendere molte cose davvero facili da implementare senza dover entrare nel nocciolo della creazione di un server. Il rovescio della medaglia: una volta che inizi a crescere, può diventare un po 'costoso, ma hey, se stai crescendo probabilmente significa che ora hai i soldi per assumere qualcuno che possa prendersi cura del nocciolo della questione.

Si potrebbe anche voler dare un'occhiata a this blog post che si confronta Slicehost e Heroku

Best of fortune

+1

Il problema "vai a dormire" può essere risolto con la versione gratuita di pingdom :) – Brian

3

SÌ, provaci.

Se sei riuscito finora a resistere alla tua "esperienza di programmazione", allora starai bene. Abbi un po 'di confidenza e spedisci qualcosa! Per citare Paul Graham:

The reason to launch fast is not so much that it's critical to get your product to market early, but that you haven't really started working on it till you've launched. Launching teaches you what you should have been building. Till you know that you're wasting your time. So the main value of whatever you launch with is as a pretext for engaging users.

La funzionalità si contorno è facilmente replicato e well documented ed è gratuito per iniziare. Cos'altro potresti chiedere?

1

Se si dispone del tempo libero, è possibile anche iscriversi a un account gratuito e dare un colpo.

TUTTAVIA, questo arriverà con alcuni mal di testa piuttosto gravi. Controllo

versione sarà uno, dal momento che Heroku usa git, ma un altro che di nessuno ancora detto è che i 12 processi ("lanci" in Heroku parlano) costerebbe $ 35 * 11 = $ 385 per mese! È possibile impostare un cron orario per $ 3/mese che svuota la coda delayed_job (invece di avere lavoratori in esecuzione in ogni momento), ma sarà sufficiente? (Se gestisci 8 lavoratori, non sto indovinando). Questo può o non può richiedere alcune modifiche al codice.

Una volta impostato, la distribuzione e l'amministrazione sono davvero facili (inesistenti), ma ti costerà se inizi a richiedere nuove funzionalità.

1

SÌ, provaci.

Il suo buon ambiente di implementazione è facile e veloce per scalare e ridimensionare le funzionalità. anche tu puoi usare per il tuo test o l'utilizzo demo che ti fornisce l'utilizzo gratuito dell'account di 1 dynos per app.

Elenco degli strumenti aggiuntivi disponibili che è possibile aggiungere in base alle proprie esigenze.