Problemas con ckeditor corriendo en producción Aplicación Rails con Heroku
ruby-on-rails-4 asset-pipeline (6)
Agregar config.assets.precompile += Ckeditor.assets
en su application.rb
debería hacer el trabajo.
Estoy usando la gema ckeditor en mi aplicación Rails 4 . Todo funciona muy bien a nivel local y en mi entorno de ensayo heroku, pero obtengo estos errores cuando presiono en el entorno de producción:
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)
El editor aparece bien, pero faltan todos los iconos.
Seguí el archivo README ( https://github.com/galetahub/ckeditor ), pero probablemente me esté perdiendo algo.
Aquí están mis pasos:
1) instalación de la gema, generar etc ...
2) config.autoload_paths += %W(#{config.root}/app/models/ckeditor)
en application.js
3) mount Ckeditor::Engine => "/ckeditor"
en routes.rb (no entiendo por qué)
4) En application.js
//= require ckeditor/override
//= require ckeditor/init
¿Qué está haciendo exactamente esto? ¿Por qué se necesita anular? (Dónde están ubicados estos archivos, porque no están en /app/assets
, ni en /lib/assets
ni en /vendor/assets
)
Heroku solo está orientado a la lectura, por lo tanto, no puedo ejecutar la tarea de rake como se explica en el tutorial. Y creo que es por eso que obtengo los errores en el modo de producción.
¿Alguien se enfrentó al mismo problema? Repasé todas las preguntas de stackoverflow, pero nada resolvió mi problema hasta el momento.
ACTUALIZAR:
La única forma en que me enteré para que funcione es la compilación en vivo: config.assets.compile = true
Pero preferiría no utilizar esto en producción, y no entiendo por qué funciona.
Tuve el mismo problema, aquí están mis archivos y cómo lo arreglé:
application.js
//= require ckeditor/override
//= require ckeditor/init
Gemfile
group :production do
gem ''rails_12factor''
end
luego ejecute el paquete para generar Gemfile.lock y confirme los archivos en su repositorio.
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
Implementar a heroku y verificarlo.
Espero que ayude de alguna manera.
Acabo de resolver este problema después de esto: https://github.com/galetahub/ckeditor/issues/307#issuecomment-22186377 .
Básicamente, agrega el activo de ckeditor a la lista de precompilación en application.rb
, use la tarea de rake para copiarlos en la ubicación correcta durante la implementación.
Espero eso ayude.
Actualmente la solución para este problema ha sido cambiada.
No es necesario incluir "ckeditor / override.js"
1 Actualiza tu joya.
bundle update ckeditor
2 Agregue esta línea a su archivo config / application.rb
config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w( ckeditor/* )
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)
Funciona para mí la esperanza también funcionará para ti.
Seguí las instrucciones en GitHub
Debes establecer con true la siguiente variable en el archivo config / enviroments / production.rb
config.assets.compile = true
y agrega el siguiente código
config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w(ckeditor/* )
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)
Mi entorno para esta solución fue:
gem ''ckeditor'', ''~> 4.1''
ruby "2.3.0"
Rieles 5.0.0.1
He estado trabajando en la aplicación y eso funciona bien en dev env pero cuando lo despliegue en Heroku los activos no se cargan en absoluto y por esa razón no puedo cargar TinyMCE o CkEditor js o css.
Encontré una solución alternativa y compilé activos localmente y los llevé a Heroku, luego obtuve la URL compilada de los assests para CkEditor JS y la incluí en mi opinión como
<script src="/assets/ckeditor/ckeditor.js"></script>
Si quieres cargar activos de ckeditor desde la nube puedes usar CDN como
<script src="https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.6.2/ckeditor.js"</script>
También necesita cambiar algunas configuraciones en su archivo 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)
y también comienza a trabajar en Heroku.
Para cualquier otro problema, responda por favor.