2012-01-26 1 views
5

Sto cercando di utilizzare CKEditor in Rails 3.1 app. Ho la directory ckeditor in app/assets/javascripts/ckeditor /, con elementi estranei come la sorgente decompressa e modularizzata rimossa.Come arrivare risorse CKEditor per compilare e caricare in Rails 3.1 patrimoniale gasdotto

Funziona bene in fase di sviluppo. Negli ambienti di produzione o di staging, ckeditor non riesce a trovare i propri file: config.js, lang/en.js skins/kama/editor.css. Vedo che questi file non sono precompilati, il che ha senso dal momento che la pipeline di asset di default non include o precompila nulla che corrisponda a /.css/ o /.js/.

Secondo le rotaie documenti e previous answers like this one, aggiungendo i file che ho bisogno di config.assets.precompile si suppone essere la soluzione. Tuttavia, nonostante gli sforzi profusi, non riesco a capire quale formato dovrei usare con config.assets.precompile. Non è documentato e non vengono forniti esempi.

Ho provato ad aggiungere in modo esplicito i file per nome:

config.assets.precompile << ['config.js', 'en.js', 'editor.css'] 

Ho provato regex aggiungendo che abbinerà i file:

config.assets.precompile << [ /.*config\.js/, /.*en.js/, /.*editor.css/ ] 

che ho provato aggiungendo esplicitamente i percorsi completi:

config.assets.precompile << File.join(Rails.root, 'app', 'assets', 'javascripts', 'ckeditor', 'config.js') 
(etc...) 

In tutti questi casi (e tutto il resto che ho provato), che esegue le attività rake: precompilare continua a non spostare i file di cui ho bisogno in/beni pubblici. Tutte le immagini e simili vanno, ma non i tre file javascript e/o css che CKEditor deve eseguire.

Qualche idea?

+0

Dove stai aggiungendo a config.assets.precompile? –

risposta

1

Si ha un errore di sintassi nel codice. L'attributo di precompilazione è un array.

È possibile aggiungere un singolo elemento alla matrice in questo modo:

config.assets.precompile << 'name_of_file.ext' 

Se i valori sono in un array, allora si deve aggiungere l'array.

config.assets.precompile += [ /.*config\.js/, /.*en.js/, /.*editor.css/ ] 

Se si aggiunge, si avrà un array annidato all'interno dell'array di precompilazione, che viene ignorato.

2

Ho riscontrato problemi simili. Ho finito per usare CKEditor senza gasdotto bene :)

Dopo varie gemme provato, nessuno ha lavorato bene in ambiente di produzione. Ho finito per mettere il ckeditor nella cartella public dell'app. Questo salta completamente il processo di pipeline di asset e ckeditor funziona bene anche nella produzione. Nessuna pre-compilazione delle risorse però ...

Utilizzo delle guide 3.1, CKEditor 4.1. Anche se questo è un vecchio filo, forse questo potrebbe aiutare qualcuno ...

Aggiornamento: Inoltre, se si sta testando sul proprio ambiente di produzione locale, non dimenticate di impostare serve_static_assets al vero in config/environments/production.rb

2

Per me è stato corretto eseguendo l'override dell'attività predefinita di precompilazione (ho usato Rails 4 e CkEditor 4).

  1. Aggiunga al application.rb config.assets.precompile += ['ckeditor/*']
  2. In application.js //= require ckeditor/init
  3. Creare il file lib/tasks/precompile_hook.rake e incollare testo da questa risposta Precompile hook
+1

Il nome del file rake deve essere "lib/tasks/precompile_hook.rake". –

+1

Questo funziona. Tuttavia, non vedo alcuna immagine sulla barra degli strumenti. Sembra che icons.png e alcuni altri file di immagini icona manchino. qualche idea? Grazie. –

+0

Potete fornire alcune informazioni aggiuntive? Versione di rail e ckeditor. Queste immagini sono precompilate o no? –