Интеграция CKEditor с Rails 3.1 Asset Pipline - PullRequest
14 голосов
/ 27 октября 2011

Я новичок в Asset Pipeline, только что перешел с Rails 3.0. Я пытаюсь получить CKEditor в конвейере, но все жемчужины для него действительно неясно, как они работают, и у них мало или нет инструкций по использованию.

Я бы предпочел сделать это без использования гема, так как кажется, что все, что мне нужно сделать, это поместить исходные файлы в каталог vendor/assets и затем включить их в application.js. Я пробовал это, однако, когда я прекомпилирую и запускаю в производство, кажется, что некоторые файлы не найдены (например, editor.css), и редактор вообще не появляется (просто пустой) область).

application.js

//= require jquery
//= require jquery_ujs
//= require ckeditor/ckeditor
//= require_self

Это с исходными файлами в vendor/assets/javascript/ckeditor/ и указывает на ckeditor.js. Я просто не уверен, куда идти отсюда. Этот код отлично работает в разработке, но не работает в производстве. Я запускаю rake assets:precompile перед добавлением и фиксацией в git, а затем нажимаю на heroku. Here's a screenshot of the client-side errors that occur

Ответы [ 8 ]

28 голосов
/ 24 апреля 2012

У меня это работает (развернуто на Heroku), по:

  1. Включение кода ckeditor в vendor / assets / javascripts / ckeditor
  2. Добавление config.assets.precompile += ['ckeditor/*'] к моей продукции. Rb
  3. Установите базовый путь ckeditor в application.html.erb var CKEDITOR_BASEPATH = '/assets/ckeditor/'; перед включением application.js
  4. В application.js включить //= require ckeditor/ckeditor
10 голосов
/ 15 октября 2012

Укуси пулю и используй драгоценный камень.Здесь есть два варианта:

CKEditor Engine

https://github.com/galetahub/ckeditor.

Это работает как механизм и включает в себя собственный монтируемый CKEditor в активах.Он также предоставляет Ckeditor.assets, который вы можете добавить в путь к активам.Это относится ко всем изображениям, плагинам, языковым файлам и прочим маленьким кусочкам мусора, которые требуются CKEditor.

У него есть шанс на обработку загрузки изображений, и он также прекрасно интегрируется с ActiveAdmin .

CKEditor Rails

https://github.com/tsechingho/ckeditor-rails

Это делает меньше, вы включаете его в свой конвейер активов, а все остальное делает для вас.Красиво, просто и достаточно для всех базовых сценариев использования.

Upshot

Я использовал оба из них в живых проектах, и оба выполняют свою работу.Используйте первый, если вы планируете использовать ActiveAdmin и хотите плавного движения.Используйте последний, если вы предпочитаете минимальный.

CKEditor довольно уродлив.Держите его на расстоянии вытянутой руки, тогда, когда вам понадобится обновление, вы можете поменять его на другое.

7 голосов
/ 28 октября 2011

Если вы работаете на Rails 3.1.0, вам следует перейти на 3.1.1.В этой версии задача rake прекомпиляции собирает ресурсы как в исходные, так и в переваренные имена файлов.Это настолько сторонний код, который не поддерживает конвейер, все равно будет работать.

Вам нужно будет добавить каталог ckeditor и все его дочерние каталоги в массив прекомпиляции, чтобы задача прекомпиляции могла их скомпилировать.

config.assets.precompile += your_files

your_files может быть массивом файлов, регулярных выражений или процедур - все, что необходимо для захвата имен файлов ckeditor.У меня нет ckeditor под рукой, чтобы понять, что нужно делать в прекомпиляции, поэтому другие могут оценить его, если вы опубликуете то, что вы придумали!

Одна вещь, которую стоит посмотреть, это то, что если у вас есть заголовки в далеком будущемустановите для каталога / assets на вашем веб-сервере, вам нужно исключить каталог CKeditor.Поскольку эти файлы не будут отпечатаны, могут возникнуть проблемы при обновлении CKeditor, когда некоторые клиенты не получают обновленный код, поскольку у них есть кэшированная копия, помеченная как устаревшая только в будущем.

1 голос
/ 08 октября 2013

У меня была такая же проблема, я отрегулировал откат производства для активов, которые не были переварены, пока не будет исправлено:

конфигурации / среда / production.rb

 config.assets.compile = true
1 голос
/ 29 сентября 2013

Есть похожая проблема.Для меня это было исправлено переопределением задачи прекомпиляции по умолчанию (я использовал Rails 4 и CkEditor 4).

  1. Добавить в application.rb config.assets.precompile += ['ckeditor/*']
  2. В application.js //= require ckeditor/init
  3. Создать файл lib/tasks/precompile_hook и вставить текст из этого ответа Крюк прекомпиляции
0 голосов
/ 25 декабря 2015

В вашем config / development.rb обязательно установите

config.assets.precompile + = ['ckeditor / *']

а также набор

config.assets.debug = true

0 голосов
/ 22 марта 2013

Я потратил некоторое время на то, чтобы заставить работать ckeditor_rails ; может быть, я смогу сэкономить время для других, пытающихся сделать то же самое.

Драгоценный камень прекрасно работал в процессе разработки, но при развертывании в производство с использованием предварительно скомпилированных ресурсов в Phusion Passenger он не работал. Мне было ясно, что проблема была в том, что он искал активы под:

http://myhost.com/assets/ckeditor

где на самом деле это нужно было искать под:

http://myhost.com/my_app_name/assets/ckeditor

Мне также было ясно, что мне нужно как-то установить:

var CKEDITOR_BASEPATH = '/my_app_name/assets/ckeditor'

но независимо от того, где и как я пытался это сделать, это не заняло бы.

Наконец, я нашел это ключевое предложение в gem wiki :

Вы можете создать app / assets / javascripts / ckeditor / basepath.js.erb для иметь свой собственный CKEDITOR_BASEPATH.

Я создал указанный файл (вместе с моим файлом config.js для настройки редактора), добавил в файл мой параметр CKEDITOR_BASEPATH, перекомпилировал мои ресурсы, и все было хорошо.

0 голосов
/ 28 октября 2011

как насчет каталога ckeditor_assets в / public?загруженные фотографии и вложения попадают в эти каталоги, как определено по умолчанию в app / models / ckeditor / [attachment.rb, photo.rb]

ckeditor_assets находится за пределами ресурсов, а изображения / файлы недоступны (URL-адрес, какhttp://yourdomain.com/ckeditor_assets/pictures/1/file.jpg не будет работать, но файл есть)

...