2012-01-26 2 views
5

Я пытаюсь использовать CKEditor в приложении Rails 3.1. У меня есть каталог ckeditor в app/assets/javascripts/ckeditor /, причем посторонние вещи, такие как несжатый и модульный источник, удалены.Как получить ресурсы ckeditor для компиляции и загрузки в конвейере конвейера Rails 3.1

Он отлично работает в разработке. В производственных или промежуточных средах ckeditor не может найти свои собственные файлы: config.js, lang/en.js skins/kama/editor.css. Я вижу, что эти файлы не были предварительно скомпилированы, что имеет смысл, поскольку конвейер по умолчанию не будет включать или прекомпилировать все, что соответствует /.css/ или /.js/.

В соответствии с рельсами docs и previous answers like this one, добавление файлов, необходимых мне для config.assets.precompile, должно быть решением. Однако, несмотря на значительные усилия, я не могу понять, какой формат я должен использовать с config.assets.precompile. Это не задокументировано, и примеры не приводятся.

Я попытался явно добавлять файлы по имени:

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

Я попытался добавить регулярные выражения, которые будут соответствовать файлы:

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

Я пытался явно добавляя полные пути:

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

Во всех этих случаях (и все остальное, что я пробовал), запуск rake-активов: precompile по-прежнему не удается перенести файлы, которые мне нужны, в public/assets. Все изображения и т. Д. Идут, но не три файла javascript и/или css, которые должен запускаться CKEditor.

Любые мысли?

+0

Где вы добавляющим к config.assets.precompile? –

ответ

1

У вас есть синтаксическая ошибка в коде. Атрибут precompile - это массив.

Вы можете добавить один элемент в массив, как это:

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

Если значения в массиве, то вы должны добавить массив.

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

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

2

У меня возникли аналогичные проблемы. Я закончил тем, что использовал CKEditor без конвейера активов :)

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

Использование рельсов 3.1, CKEditor 4.1. Несмотря на то, что это старый нить, может быть, это может помочь кому-то ...

Update: Кроме того, если вы тестируете на локальном производственной среде, не забудьте установить serve_static_assets к истинным в config/environments/production.rb

2

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

  1. Добавить в application.rb config.assets.precompile += ['ckeditor/*']
  2. В application.js //= require ckeditor/init
  3. Создать файл lib/tasks/precompile_hook.rake и вставить текст из этого ответа Precompile hook
+1

Имя файла рейка должно быть «lib/tasks/precompile_hook.rake». –

+1

Это работает. Однако на панели инструментов я не вижу никаких изображений. Он выглядит как icons.png, и некоторые другие файлы изображений значков отсутствуют. Есть предположения? Благодарю. –

+0

Можете ли вы предоставить дополнительную информацию? Версия рельсов и ckeditor. Эти изображения предварительно скомпилированы или нет? –