Semifisse: Manca `secret_key_base` per la ‘produzione’ ambiente

Ho creato una applicazione rails (Guide 4.1.0) da zero e sto diventando un problema che non riesco a risolvere. Ho installato e configurato Apache Modulo Passeggeri, funziona benissimo. Ogni volta che cerco di accedere al virtual host ho un errore 500:

Missing secret_key_base for 'production' environment, set this value in config/secrets.yml

Il segreto.file yml contiene la seguente configurazione:

secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

Anche quando non è raccomandato l’ho fatto:

    production:
  secret_key_base: XXXXXXXXXXXXXXXXXXXXXXXXXXXX (random key)

Ma log di Apache mostrare questo:

# tailf /etc/httpd/logs/error_log
[Tue May 06 12:56:18 2014] [error] [client 192.168.3.1] Premature end of script headers:
App 4405 stderr: [ 2014-05-06 12:56:18.5763 4421/0x9d48bdc(Worker 1) utils.rb:68 ]: *** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 4421, thread 0x9d48bdc(Worker 1)):
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:440:in `validate_secret_key_config!'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:195:in `env_config'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/engine.rb:510:in `call'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:144:in `call'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/rack/thread_handler_extension.rb:74:in `process_request'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:141:in `accept_and_process_next_request'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:109:in `main_loop'
App 4405 stderr:        from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler.rb:448:in `block (3 levels) in start_threads'

Come posso risolvere questo errore? Come faccio ad accedere all’ambiente di sviluppo? Voglio dire come posso scrivere il codice, prova nel mio browser e poi distribuire a Heroku o solo di test in ambiente di produzione?

Aggiornamento

Riesco a risolvere l’errore di cui sopra, impostando RailsEnv development su VirtualHost ma ora ho questo errore:

SQLite3::CantOpenException impossibile aprire il file di database
Rails.root: /var/www/html/moviedb

Sto cercando di utilizzare questo GIOIELLO per fare le query TheMovieDB sito e ottenere risultati. Qualche consiglio su questo nuovo errore?

  • L’estratto è pubblicato da YAML non è indentato correttamente. È un errore nella pasta? YAML è molto sensibile al rientro – secret_key_base: dovrebbe essere intaccato da due spazi da production:.
  • Solo così si sa con ENV[“SECRET_KEY_BASE”] è alla ricerca per la variabile di ambiente di sistema chiamato SECRET_KEY_BASE. Se si può ssh su host quindi SECRET_KEY_BASE=`rake secret` nei binari directory dovrebbe essere impostato. Per verificare che ha funzionato è possibile echo $SECRET_KEY_BASE Nota: questo probabilmente non è il problema se si dispone di impostare direttamente nel file di configurazione.
InformationsquelleAutor ReynierPM | 2014-05-06



3 Replies
  1. 4

    Quello che ho fatto : Sul mio server di produzione, creare un file di configurazione (confthin.yml) per il Sottile (io sto usando) e aggiungere le seguenti informazioni :

    ambiente: la produzione di
    utente: www-data
    gruppo: www-data
    SECRET_KEY_BASE: mysecretkeyproduction

    Ho poi lanciare l’applicazione con

    sottile start-C /whereeveristhefieonprod/configthin.yml

    Funziona come un fascino, e quindi non c’è bisogno di avere la chiave segreta sul controllo di versione

    Spero che possa aiutare, ma sono sicuro che la stessa cosa potrebbe essere fatta con Unicorno e altri.

    • Ottengo l’errore gems/thin-1.7.0/lib/thin/runner.rb:147:in `parse!': invalid option: --SECRET-KEY-BASE=<key> (OptionParser::InvalidOption)
  2. 19

    Applicazione Rails chiave segreta tramite bash

    Se si dispone di accesso a bashconsole di l’utente in cui è in esecuzione l’applicazione rails, e se non si utilizza thin, allora si potrebbe fornire la variabile di ambiente tramite gli utenti ~/.bashrc

    semplicemente aggiungere il seguente:

    export SECRET_KEY_BASE=`MY_SECRET_KEY`

    Nota: MY_SECRET_KEY potrebbe essere qualsiasi cosa, ma sarebbe sicuro per generare una chiave con rake secret sul bash console sostituto chiave con “MY_SECRET_KEY” da l’esempio.

    Una volta fatto questo, si dovrebbe vedere un SECRET_KEY_BASE variabile in hash che viene restituita quando si chiama ENV nella vostra console rails.

    Ultimo ma non meno importante, riavviare l’applicazione rails e l’errore dovrebbe scomparire.

    Applicazione Rails chiave segreta per rbenv-vars

    Inoltre, se si utilizza rbenv, è possibile utilizzare il rbenv-vars plugin per ottenere un per rails chiave segreta variabile di ambiente.

    Una buona lettura su questo sarebbe qui!

    Utilizzando dio (godrb.com): grazie hlcs

    È necessario god terminate e quindi avviare di nuovo.

    • Per chi utilizza dio hai bisogno di terminare dio (god terminate) e di iniziare di nuovo.

Lascia un commento