CKEditor не работает только в производственной среде

Я использую ckeditor ruby gem (v4.2.2) в моем приложении на Rails, и он отлично работает в разработке, но не в моем production среда. Это не похоже на проблему с моим конвейером активов, потому что все другие активы загружаются без проблем.

На странице Google Chrome выдает мне эту ошибку:

Uncaught TypeError: Cannot set property 'dir' of undefined

в то время как Firefox просто выдает это в консоли:

TypeError: c[a] is undefined[Learn More]

Что я пробовал до сих пор:

  • использование Uglifier.new(mangle: false) как компрессор JS в звездочках
  • Ручная настройка CKEDITOR_BASEPATH

Файлы активов, созданные rake asset:precompile в public/assets/ckeditor у всех есть хеш в конце как это:

ckeditor-e0b9bfe15298d2b2dd388960b27d35e6a18c89b2390f8986d398c30da5496e4b.js
config-1fb318e1cc0eea7b8c181941c3c1f09d2b96107b2f7ff4891755fbb2201ba53d.js
contents-4540cf2cb7116b32bac2995494c4fc0c55804444f37c02cfa11256bd695e4194.css
# etc

но JS, похоже, не загружает их и не пытается это исправить сейчас.


Код

Мой файл Javascript:

//= require pages-javascript
//= require ckeditor/init
//= require_tree ./ckeditor
//= require_self

Инициализатор активов:

# config/initializers/assets.rb
Rails.application.config.assets.version = '1.0'

Rails.application.config.assets.precompile << Proc.new do |filename, full_path|
  if filename =~ /\.(css|js|svg|eot|woff|ttf)\z/
    app_assets_path = Rails.root.join('app', 'assets').to_s
    if full_path.starts_with? app_assets_path
      Rails.logger.info "including asset: " + full_path
      true
    else
      Rails.logger.info "excluding asset: " + full_path
      false
    end
  else
    false
  end
end

Rails.application.config.assets.precompile += %w( ckeditor/* )

2 ответа

Решение

Проходя через библиотечные вопросы и запросы извлечения на Github, выясняется, что это не проблема с моим кодом, а ошибка в 4.x.x версии самого Ruby Gem (вызывая несовместимость с Rails 5).

Кто-то уже открыл проблему, и пиар, исправляющий это, также был объединен с мастером 2 месяца назад, но после него не было выпусков, содержащих патч. Поэтому мое временное решение - загрузить драгоценный камень прямо из мастера:

gem 'ckeditor', github: 'galetahub/ckeditor', ref: '11d3a5b'

Вы пытались загрузить ckeditor отдельно? Попробуйте загрузить его без комплектации, чтобы увидеть, правильно ли загружается библиотека. Из вывода консоли я вижу, что некоторые файлы не загружены, вероятно, пакетирование / минификация не работает так, как должно быть для этих файлов. Загрузите файлы ckeditor в <head> чтобы увидеть, все ли так работает.

Другие вопросы по тегам