2012-01-26 22 views
5

Estoy intentando usar CKEditor en una aplicación de Rails 3.1. Tengo el directorio ckeditor en app/assets/javascripts/ckeditor /, con cosas extrañas como la fuente sin comprimir y modularizada eliminada.Cómo obtener recursos de ckeditor para compilar y cargar en Rails 3.1 asset Pipeline

Funciona bien en desarrollo. En entornos de producción o almacenamiento intermedio, ckeditor no puede encontrar sus propios archivos: config.js, lang/en.js skins/kama/editor.css. Veo que estos archivos no se están precompilando, lo que tiene sentido ya que el inventario de activos de forma predeterminada no incluirá ni precompilará nada que coincida con /.css/ o /.js/.

De acuerdo con los documentos de rieles y previous answers like this one, se supone que la solución es agregar los archivos que necesito para config.assets.precompile. Sin embargo, a pesar del gran esfuerzo, no puedo entender qué formato debo usar con config.assets.precompile. No está documentado y no se dan ejemplos.

He intentado añadir explícitamente los archivos por nombre:

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

He intentado añadir expresiones regulares que coincidirá con los archivos:

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

que he probado agregando explícitamente las rutas completas:

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

En todos estos casos (y en todo lo demás que he probado), ejecutando activos de rake: la precompilación aún no logra mover los archivos que necesito a public/assets. Todas las imágenes y tal van, pero no los tres archivos javascript o css que CKEditor necesita ejecutar.

¿Alguna idea?

+0

¿A dónde anexar a config.assets.precompile? –

Respuesta

1

Tiene un error de sintaxis en su código. El atributo de precompilación es una matriz.

puede añadir un solo elemento a la matriz de la siguiente manera:

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

Si sus valores están en una matriz a continuación, hay que añadir la matriz.

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

Si añade entonces tendría una matriz anidada dentro de la matriz de precompilación, que se ignora.

2

Me he encontrado con problemas similares. Terminé usando CKEditor sin canalización de activos :)

Después de varias gemas probadas, ninguna funcionó bien en el entorno de producción. Terminé poniendo ckeditor en la carpeta public de la aplicación. Eso omite por completo el proceso de canalización de activos y ckeditor también funciona bien en producción. Sin precompilación de activos aunque ...

Uso de los rieles 3.1, CKEditor 4.1. Aunque se trata de un viejo hilo, tal vez esto podría ayudar a alguien ...

Actualización: También, si se está probando en su entorno de producción local, no se olvide de establecer serve_static_assets en true en config/environments/production.rb

2

Para Me lo arregló anulando la tarea predeterminada de precompilación (utilicé Rails 4 y CkEditor 4).

  1. Agregar a application.rb config.assets.precompile += ['ckeditor/*']
  2. En application.js //= require ckeditor/init
  3. Crear archivo lib/tasks/precompile_hook.rake y pegar texto de esta respuesta Precompile hook
+1

El nombre del archivo de rake debe ser "lib/tasks/precompile_hook.rake". –

+1

Esto funciona. Sin embargo, no veo imágenes en la barra de herramientas. Parece que falta icons.png y algunos otros archivos de imagen de icono. ¿Alguna idea? Gracias. –

+0

¿Puede proporcionarnos información adicional? Versión de rieles y ckeditor. ¿Estas imágenes están precompiladas o no? –

Cuestiones relacionadas