Деплой с Capistrano. Гем CKEditor неможет найти config.js файл на запущенном сервере.

184 views
Skip to first unread message

Shamil Badalov

unread,
May 19, 2015, 10:05:11 AM5/19/15
to ror...@googlegroups.com

Господа. Сразу скажу что на локальном серве в любом режиме работает всё отлично. Проблема только на впс.

Вобщем при деплойе через капистрано в логах терминала (на моём компе) даже видно как он компилирует файлы.
Но вот на сервере при переходе на страничку (к примеру добавить новость) поле для ckeditor даже не показываеться (в коде страницы поле присутствует).
В коде вижу что Джаваскрипт запускаеться и выдаёт ошибку в консоль:
TypeError: i[e] is undefined

Затем гляжу в загруженные файлы и вижу что:

Мне не совсем понятно

1) Почему он грузит эти файлы, у меня на продакшене они даже не были инициализированны по правилам гема. Я настройки оставил по умолчанию.

2) Где временные метки на них?

3) Я нашёл этот файл с временной меткой и он даже грузиться в браузере если перейти по прямой ссылке - но вот crtditor всё равно требует именно по такому адресу без метки

Короче перегуглил всё что можно. 

http://stackoverflow.com/questions/17636564/ckeditor-gem-issue-with-production-mode - отличие в том что у меня работает и в продакшене на локальном Не работает только на впс. пробнул не помогло.

Было ещё пару решений не помогло. Мне просто кажеться что решение возможно наверху - в Капистрано. Может он не заменяет файлы в текущей версии запущенного приложения и т.п. Но в логах видна замена, и файлы присутствуют в current папке.

за Любую помощь или предложения буду благодарен товарищи.

Shamil Badalov

unread,
May 19, 2015, 10:07:39 AM5/19/15
to ror...@googlegroups.com


Вот кстати на локальном компе в продакшене запущен и работает нормально

Shamil Badalov

unread,
May 19, 2015, 1:39:51 PM5/19/15
to ror...@googlegroups.com
ДА ГОСПОДА! путём опытной подстановки "ручками" требуемых браузером файлов с ссответствующим контентом в паблик папку, удалось заставить CKeditor заработать.
Осталься один глобальный вопрос. Прошу обясните мне господа как это можно исправить:

Почему файл config.js или editor_gecko.css он видит, а вот файлы типа
config-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.js
editor_gecko-b1a54ab61ab0ac15a78bd7f529324ecc18a62192c5b9fce4fbf97399f581cba2.css
не видит? гдеж оно может быть там так захардкоженно? Неужели я один с таким столкнулся..

вторник, 19 мая 2015 г., 19:05:11 UTC+5 пользователь Shamil Badalov написал:

Shamil Badalov

unread,
May 19, 2015, 1:54:51 PM5/19/15
to ror...@googlegroups.com
http://stackoverflow.com/questions/20932996/rails-ckeditor-gem-giving-404 Тоже к сожалению не сработало. CKEditor отказываеться понимать нормально пути с меткой времени. Могу сделать решение в лоб (создание нужных файлов при деплое автоматом или копи из старого деплоя автоматом) но оно уж совсем помоему будет выглядет некрасиво. Всё таки хотелось бы подружить их. Лано, попинаюсь ещё, может что выйдет,

Denis Bakhtin

unread,
May 19, 2015, 1:58:29 PM5/19/15
to ror...@googlegroups.com
Раньше для этих целей подходил гем https://github.com/alexspeller/non-stupid-digest-assets, сейчас не знаю, может что и посовременней имеется. Как раз для ckeditor'a использовал.

19 мая 2015 г., 20:54 пользователь Shamil Badalov <badal...@gmail.com> написал:
http://stackoverflow.com/questions/20932996/rails-ckeditor-gem-giving-404 Тоже к сожалению не сработало. CKEditor отказываеться понимать нормально пути с меткой времени. Могу сделать решение в лоб (создание нужных файлов при деплое автоматом или копи из старого деплоя автоматом) но оно уж совсем помоему будет выглядет некрасиво. Всё таки хотелось бы подружить их. Лано, попинаюсь ещё, может что выйдет,

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на https://groups.google.com/group/ror2ru
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
 
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror...@googlegroups.com
---
Вы получили это сообщение, поскольку подписаны на группу "RubyOnRails to russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес ror2ru+un...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/ror2ru/2160aaf5-23c1-4823-bbae-726c962e7991%40googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Shamil Badalov

unread,
May 19, 2015, 2:07:17 PM5/19/15
to ror...@googlegroups.com
Да, натыкался на это решение но к сожаления он для 3 версии. (Думаю может покапаться в нём немного) Кстати заметил что на локальном продакшене все файлы с метками ОТЛИЧНО ВИДИТ.... иди теперь ломай голову что не так там))

вторник, 19 мая 2015 г., 22:58:29 UTC+5 пользователь Denis Bakhtin написал:

Илья Донских

unread,
May 19, 2015, 2:15:32 PM5/19/15
to ror...@googlegroups.com

20 мая 2015 г., 0:07 пользователь Shamil Badalov <badal...@gmail.com> написал:
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/ror2ru/83b9b0f2-a438-4d40-8f24-25eaf3f2c547%40googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.



--
С уважением, Илья Донских

Илья Донских

unread,
May 19, 2015, 2:17:15 PM5/19/15
to ror...@googlegroups.com
Из доков: https://github.com/galetahub/ckeditor

Deployment

For Rails 4, add the following to config/initializers/assets.rb:

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

As of version 4.1.0, non-digested assets of Ckeditor will simply be copied after digested assets were compiled. For older versions, use gem non-stupid-digest-assets, to copy non digest assets.

To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:

# in config/initializers/ckeditor.rb

Ckeditor.setup do |config|
  config.assets_languages = ['en', 'fr']
  config.assets_plugins = ['image', 'smiley']
end

20 мая 2015 г., 0:15 пользователь Илья Донских <doniv...@gmail.com> написал:
Message has been deleted

Shamil Badalov

unread,
May 19, 2015, 3:48:35 PM5/19/15
to ror...@googlegroups.com
К сожалению не сработал этот метод, выше я указал его и ещ вот это
config.assets.precompile += Ckeditor.assets
Пойду поспать, может я туплю дико в какой то мелочи.
С утра на свежую голову что нибудь придумаю.
Опять же - ВСЁ компилит как надо, все файлы. Просто обращение к файлам идёт без хеш-метки для контроля версии то что(sprockets).
Не могу понять почему и откуда обращение.
Я просто не верю что обращение из JS файла идёт - это было бы очень тупо так хардкожить config.js и прочие файлы.

вторник, 19 мая 2015 г., 23:17:15 UTC+5 пользователь Илья написал:

Shamil Badalov

unread,
May 19, 2015, 3:51:23 PM5/19/15
to ror...@googlegroups.com
Ссылка на Гиитхаб - описание моей проблемы как раз. сейчас попробую. Всё как у меня - не хочет просить файлы с хешметкой...

вторник, 19 мая 2015 г., 23:15:32 UTC+5 пользователь Илья написал:

Руслан Корнев

unread,
May 19, 2015, 4:03:58 PM5/19/15
to ror...@googlegroups.com
Подгрузка файлов ckeditor'a происходит его собственным механизмом. Поэтому про файлы с хешами он ничего не знает. Лучшее известное мне решение на сегодняшний день это ручное размещение в public директории. Причем становится удобнее когда статические assets находятся отдельно от сгенерированных по assets:precompile, т.к. assets:clobber например удаляет и вручную размещенные, что не желательно. Взгляните на config.assets.prefix. Размещение в app/assets/... так же утратило смысл после того как в sprockets убрали генерацию assets с именами без хешей.

В общем не сахар, но зато четко разграничено и не противоречит идеям rails с всякими прикрутками non-stupid-assets и т.д. хотя вроде и обещали вернуть как было... правда много уже времени прошло.

вторник, 19 мая 2015 г., 22:48:35 UTC+3 пользователь Shamil Badalov написал:

Руслан Корнев

unread,
May 19, 2015, 4:09:08 PM5/19/15
to ror...@googlegroups.com
И кстати давно перестал пользоваться galtahab ckeditor. В общем в нем необходимости нет, лучше нырнуть в разборки с ckeditor'ом напрямую. 

Offtopic кстати видел уже http://ckeditor.com/blog/CKEditor-4.5-Beta-Released ?

вторник, 19 мая 2015 г., 23:03:58 UTC+3 пользователь Руслан Корнев написал:

Shamil Badalov

unread,
May 19, 2015, 4:31:19 PM5/19/15
to ror...@googlegroups.com

Ну так я и пытался модифицировать его собственный метод (гема метод, тот что в папке гема lib/tasks/ckeditor.rake, создал такой же в папке проекта и перезаписал тем что на стаковерфлой и гитхаб нашёл).
Не сработало.
Да я вот уже подумываю создать их в ручную в папке капистрано на серваке shared, и добавлю в настройки деплоя, в
set :linked_files, %w{assets/javascript/ckeditor/config.js и прочие}
Сегодня подустал, завтра допинаю уже расскажу о результате.
среда, 20 мая 2015 г., 1:03:58 UTC+5 пользователь Руслан Корнев написал:

Shamil Badalov

unread,
May 20, 2015, 12:58:22 PM5/20/15
to ror...@googlegroups.com
Одним словом Костыль сделан - хотя, по стандартам Раилс это даже не костыль а "так быть и должно".
Перед тем как приступать к костылю убрать\закомментировать (если присутствуют) из application.rb или production.rb или гед ещё где они могут быть следующие строки:
config.autoload_paths += %W(#{config.root}/app/models/ckeditor)
config.assets.precompile += Ckeditor.assets
config.assets.precompile += %w(ckeditor/*)
Если останутся беда не страшная, просто будут лишние дубли файлов.
Затем, в файле deploy.rb добавить следующее:
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/assets/ckeditor}

Нас интересует часть public/assets/ckeditor, капистрано будет использовать один и тот же контент в этих папках для любого релиза приложения (то есть если что менять в этих папке надо то уже ручками придется, капистрано тупо будет клонировать всё в этих папках от релиза к релизу, поэтому те строки выше, для компиляции, лучше убрать. Или он понадобавит файлов))
Ну а дальше в папку shared/public/assets/ckeditor на серве загружаем все внутренности ckeditor-a. Я предпочёл ssh передачу файлов. Копируем из папки гема его кишки в папку shared вашего проекта

scp -r /home/localusername/.rvm/gems/ruby-2.2.2/gems/ckeditor-4.1.1/vendor/assets/javascripts/ckeditor server_username@server_ip:/your/project/folder/shared/public/assets/

пока полёт нормальный, продолжаю тестирование.
Все файлы типо вашего config.js-а можно кидать в эту папку в нужные директории.
З.Ы. решение по этому адресу https://github.com/galetahub/ckeditor/issues/307#issuecomment-23761022 должно по идеи обрезать хешметки файлов после компиляции, сохраняя файлы примерно так же как мы это сделали (в нашем случае файлы будут статичными тупо). У меня этот таск lib/tasks/ckeditor.rake тупо не запускался. Но если по принципу Рельсов в папке public И ДОЛЖНЫ НАХОДИТЬСЯ статичные файлы - то в целом мы делаем по феншую выходит. Дзен достигнут, душа в совершенном спокойствии.




вторник, 19 мая 2015 г., 19:05:11 UTC+5 пользователь Shamil Badalov написал:

Господа. Сразу скажу что на локальном серве в любом режиме работает всё отлично. Проблема только на впс.

Shamil Badalov

unread,
May 22, 2015, 7:19:09 AM5/22/15
to ror...@googlegroups.com
Кстати. Опытным путём было замеченно что на локальном продакшене (где нет таких проблем с хешметками и всё прекрасно видиться и с ними) если в production.rb строку ... :
config.assets.compile = false
обозначить в false, можно добиться абсолютно идентичного поведения CKEditor-a как и на ВПС сервере. Думаю тут есть связь с тем почему у меня не запускался файл ckeditor.task , чую прямо связь.



вторник, 19 мая 2015 г., 19:05:11 UTC+5 пользователь Shamil Badalov написал:

Господа. Сразу скажу что на локальном серве в любом режиме работает всё отлично. Проблема только на впс.
Reply all
Reply to author
Forward
0 new messages