Проблемы с запуском 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
Но я бы предпочел не использовать это в производстве, и я не понимаю, почему он работает.
Ответы
Ответ 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.