web-dev-qa-db-fra.com

Problèmes liés à l'exécution de ckeditor sur l'application Rails de production avec Heroku

J'utilise le ckeditor gem dans mon Rails 4 application. Tout fonctionne très bien localement et sur mon environnement heroku de mise en scène, mais j'obtiens ces erreurs lorsque j'appuie sur l'environnement de production:

GET http://myapp.herokuapp.com/assets/ckeditor/contents.css 404 (Not Found)
GET http://myapp.herokuapp.com/assets/ckeditor/skins/moono/icons.png 404 (Not Found)

L'éditeur apparaît bien, mais il manque toutes les icônes.

J'ai suivi le README ( https://github.com/galetahub/ckeditor ), mais il me manque probablement quelque chose.

Voici mes étapes:

1) Installation de gemmes, générer etc ...

2) config.autoload_paths += %W(#{config.root}/app/models/ckeditor) dans application.js

3) mount Ckeditor::Engine => "/ckeditor" dans routes.rb (je ne comprends pas pourquoi)

4) Dans application.js

//= require ckeditor/override
//= require ckeditor/init

Qu'est-ce que cela fait exactement, pourquoi une dérogation est-elle nécessaire? (Où se trouvent ces fichiers, car il n'y en a ni dans /app/assets, ni dans /lib/assets ni dans /vendor/assets)

Heroku est en lecture seule. Par conséquent, je ne peux pas exécuter la tâche de rake comme expliqué dans le tutoriel. Et je pense que c’est pourquoi j’obtiens les erreurs en mode de production.

Quelqu'un a-t-il rencontré le même problème? J'ai parcouru toutes les questions de stackoverflow, mais rien n'a résolu mon problème jusqu'à présent.

UPDATE:

La seule façon dont j’ai trouvé le moyen de fonctionner est la compilation en direct: config.assets.compile = true Mais je préférerais ne pas l’utiliser en production et je ne comprends pas pourquoi cela fonctionne.

18
Jérôme Boé

Actuellement, la solution à ce problème a été modifiée.

Il n'est pas nécessaire d'inclure "ckeditor/override.js"

1 Mettez à jour votre bijou.

bundle update ckeditor

2 Ajoutez cette ligne à votre fichier config/application.rb

config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w( ckeditor/* )
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Cela fonctionne pour moi, j'espère que cela fonctionnera pour vous aussi.

14
swilgosz

Je viens de résoudre ce problème en suivant: https://github.com/galetahub/ckeditor/issues/307#issuecomment-22186377 .

Fondamentalement, vous ajoutez l'actif ckeditor à la liste de précompilation dans application.rb, utilisez la tâche de rake pour les copier à l'emplacement approprié pendant le déploiement.

J'espère que ça aide.

5
Felix Ding

J'ai suivi les instructions sur GitHub

Vous devez définir avec true la variable suivante dans le fichier config/enviroments/production.rb

config.assets.compile = true

et ajoutez le code suivant

config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w(ckeditor/* )
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Mon environnement pour cette solution était:

gem 'ckeditor', '~> 4.1'

Ruby "2.3.0"

Rails 5.0.0.1

4
Henrique Jensen

Ajouter config.assets.precompile += Ckeditor.assets dans votre application.rb devrait faire le travail.

1
Alexandre Spriet

J'ai eu le même problème, voici mes fichiers et comment j'ai corrigé:

application.js

//= require ckeditor/override
//= require ckeditor/init

Gemfile

group :production do
  gem 'Rails_12factor'
end

puis exécutez bundle pour générer Gemfile.lock et valider des fichiers dans votre référentiel.

production.rb

config.serve_static_assets = true
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
config.assets.compile = false # we don't want compilation fallbacks

Déployez-vous à heroku et vérifiez-le.

J'espère que ça aide d'une certaine manière.

0
bart

Je travaille sur une application et cela fonctionne bien dans dev env, mais lorsque je la déploie sur Heroku, les actifs ne se chargent pas du tout et pour cette raison, je ne suis pas en mesure de charger TinyMCE ou CkEditor js ou css.

J'ai découvert un travail autour de et compilé les actifs localement et poussé à Heroku, puis j'ai obtenu l'URL des assiettes compilée pour CkEditor JS et je l'ai inclus dans mon point de vue, comme

<script src="/assets/ckeditor/ckeditor.js"></script>

Si vous voulez charger des actifs ckeditor depuis le cloud, vous pouvez utiliser un CDN comme

<script src="https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.6.2/ckeditor.js"</script>

Vous devez également modifier quelques paramètres dans votre fichier production.rb

  config.assets.compile = true
  config.assets.precompile += Ckeditor.assets
  config.assets.precompile += %w(ckeditor/* )
  config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

et cela commence aussi à travailler sur Heroku.

Pour toute autre question, veuillez répondre.

0
Amit