Подтвердить что ты не робот

Проблемы с запуском ckeditor на производстве Rails-приложение с Heroku

Я использую ckeditor драгоценный камень в моем приложении Rails 4. Все работает отлично на локальном уровне и в моей промежуточной среде герой, но я получаю эти ошибки при нажатии на производственную среду:

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)

Редактор хорошо отображается, но все значки отсутствуют.

Я следил за README (https://github.com/galetahub/ckeditor), но я, вероятно, что-то пропустил.

Вот мои шаги:

1) Установка Gem, создание и т.д.

2) config.autoload_paths += %W(#{config.root}/app/models/ckeditor) в application.js

3) mount Ckeditor::Engine => "/ckeditor" в routes.rb(я не понимаю, почему)

4) В application.js

//= require ckeditor/override
//= require ckeditor/init

Что именно это делает, почему требуется переопределение? (Где расположены эти файлы, потому что их нет в /app/assets, ни в /lib/assets ни в /vendor/assets)

Heroku ориентирован только на чтение, поэтому я не могу запустить задачу rake, как объяснено в учебнике. И я думаю, именно поэтому я получаю ошибки в режиме производства.

У кого-то была такая же проблема? Я просмотрел все вопросы, связанные с stackoverflow, но до сих пор не удалось решить мою проблему.

ОБНОВЛЕНИЕ:

Единственный способ, которым я узнал, что он работает, - это живая компиляция: config.assets.compile = true Но я бы предпочел не использовать это в производстве, и я не понимаю, почему он работает.

4b9b3361

Ответ 1

В настоящее время решение этой проблемы было изменено.

Нет необходимости включать "ckeditor/override.js"

1 Обновите свой драгоценный камень.

bundle update ckeditor

2 Добавьте эту строку в файл config/application.rb

config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w( ckeditor/* )
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)

Это работает, потому что я надеюсь, что это сработает и для вас.

Ответ 2

Я просто решил эту проблему следующим образом: https://github.com/galetahub/ckeditor/issues/307#issuecomment-22186377.

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

Надеюсь, что это поможет.

Ответ 3

Я выполнил инструкции GitHub

Вам нужно установить с true следующую переменную в файле config/enviroments/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)

Моей средой для этого решения было:

gem 'ckeditor', '~ > 4.1'

ruby ​​ "2.3.0"

rails 5.0.0.1

Ответ 4

Добавление config.assets.precompile += Ckeditor.assets в ваш application.rb должно выполнять эту работу.

Ответ 5

У меня была та же проблема, вот мои файлы и как я исправил:

application.js

//= require ckeditor/override
//= require ckeditor/init

Gemfile

group :production do
  gem 'rails_12factor'
end

затем запустите пакет для генерации Gemfile.lock и зафиксируйте файлы в вашем репо.

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

Развернитесь на геройку и проверьте его.

Надеюсь, что так или иначе поможет.

Ответ 6

Я работаю над приложением, и это отлично работает в dev env, но когда я развертываю его в активах Heroku, загрузка не происходит вообще, и по этой причине я не могу загрузить TinyMCE или CkEditor js или css.

Я обнаружил работу и скомпилировал активы локально и нажал на Heroku, тогда я получил скомпилированный urls для CkEditor JS и включил его в мой взгляд, например

<script src="/assets/ckeditor/ckeditor.js"></script>

Если вы хотите загрузить ресурсы ckeditor из облака, вы можете использовать CDN, например

<script src="https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.6.2/ckeditor.js"</script>

Также вам нужно изменить несколько настроек в файле 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)

и он также начинает работать с Heroku.

Для любых других вопросов ответ pls.