
Fedor
01.08.2017
08:21:25
кстати еще:
#config/environments/production.rb
config.assets.js_compressor = :uglifier
config.assets.compile = false
# config/initializers/assets.rb
Rails.application.config.assets.paths << Rails.root.join('node_modules')
Rails.application.config.assets.precompile += %w[ckeditor/*]

Nikita
01.08.2017
08:21:36
@FedorKoshel пробовал
Evgeny ой лол, там и плагины все едут
что за жесть

Google

Evgeny
01.08.2017
08:28:24
Потому что надо все файлы в папке ckeditor и в подпапках переименовывать)
Щас мб на коленке сделаю скрипт тебе

Nikita
01.08.2017
08:28:51
та думаю щас разберусь

Evgeny
01.08.2017
08:29:58
я просто указывал Dir путь, потом файлы split по точкам, удаляем середину и оставляем только просто имя и расширение, ну и всякие png не трогать кончено


Nikita
01.08.2017
08:34:52
да просто странно то
что на локалке норм скомпилилось
хотя не уверен
а не, тоже криво
короче, походу я понял в чем проблема была
если я сейчас разберусь, то скажу окончательно точно
короче рассказываю, что было
в общем, у меня на хосте не было yarn, и соответственно вэбпаковские ассеты не компилились, я решил это костылем, пушил на гит только ассеты вэбпака, но когда я запускал компиляцию ассетов на хосте - оно выдавало мне ошибку, что нет ярна и абортило рейк таску, но суть в том, что после обычной компиляции и компиляции через ярн, следовала таска цкэдитора, которая делает, примерно следующее:
cp -p /home/hosting_niks123123/projects/langlab/llab/public/assets/ckeditor/lang/nb-417c36580d83c1d82e99cd24f425379aa2fc231e803d6cb87f211da841af2fe0.js.gz /home/hosting_niks123123/projects/langlab/llab/public/assets/ckeditor/lang/nb.js.gz
cp -p /home/hosting_niks123123/projects/langlab/llab/public/assets/ckeditor/lang/sq-4b28d54f3113115f88a2dcea1f2baa6103106c74bc788cdc8688680a45a24969.js /home/hosting_niks123123/projects/langlab/llab/public/assets/ckeditor/lang/sq.js
соответсвенно проблема решилась установкой ярна

Google

Александр
01.08.2017
09:15:40
ну это неверно, зависимости не должны искаться при перекомпиляции ассетов
а это из коробки такое поведение? а то может надо issue сделать и исправить чтобы люди не мучались впредь

Nikita
01.08.2017
09:17:46
суть в том, что просто вряд-ли из-за чего то может произойти аборт компиляции обычных ассетов
а вот ассеты вэбпака не будут компилиться без ярна, соответственно абортится таска.
действия выше нужно делать не в самом конце, а после компиляции обычных ассетов (не из вэбпака)
и да, из коробки

Di
01.08.2017
09:50:27
Народ, подскажите как лучше решить такую задачу:
Есть модель "набор айтемов", у нее has and belongs to many айтемы.
Нужно чтобы когда набор айтемов меняется (удаляются или добавляются айтемы в набор) сравнивать старый набор и новый. Пробовал коллбек before_save, но не, не вышло.

Eugene
01.08.2017
09:50:39
Так ребята, голосуем yopp, ojab, @davydovanton пишем мне или в этот чат с реплаем мне и нужным человеком. Если есть еще кандидатура предлагаем тоже реплаем или в личку. Голосование до 3 МСК.

Fedor
01.08.2017
09:51:13

pny
01.08.2017
09:53:24

Anton
01.08.2017
09:54:41
Спасибо! Но я так и не понял на что голосование, лол

v
01.08.2017
09:57:32

Fedor
01.08.2017
09:58:20
выбранного мы съедим!

No
01.08.2017
09:58:45

Anton
01.08.2017
10:00:02

Александр
01.08.2017
10:00:02

v
01.08.2017
10:00:42

trickster
01.08.2017
10:00:50
а йоппа здесь даже нету вроде как.

Google

Nikita
01.08.2017
10:02:11
@Eugene_Shved ты бы с хештегом просил голосовать)
@FedorKoshel ты бы мог предположить, что проблема будет в том, в чем была?

Anton
01.08.2017
10:05:11

Fedor
01.08.2017
10:05:39
но я мог предположить что проблема в общем со сборкой ассетов, и собственно так и сказал )

Nikita
01.08.2017
10:06:13
ну суть то в том, что загоняют проект и нужно сделать проект
там не очень получается диктовать

Fedor
01.08.2017
10:06:56
это печально

Nikita
01.08.2017
10:07:28
мне бэк тоже более симпатичен
но что поделать

Ilya
01.08.2017
10:17:54
это печально
Кто ж ckeditor в спрокеты добавляет? Как вы его готовить будете если он требует прямого адреса к своим плагинам. Божечки. Вы стреляете себе в ногу. Не надо так.

Fedor
01.08.2017
10:22:02
ну у меня проблем нет пока, все нормально работает

v
01.08.2017
10:23:34
и работает, что удивительно

Ilya
01.08.2017
10:25:18
Оке. Рад за вас. Плагины тоже компилите? Или с сайта одним пакетом всю эту дрянь качаете?

v
01.08.2017
10:26:17
гем ckeditor

Fedor
01.08.2017
10:26:30
ага
а плагины в директории и тоже компилятся
а вот css он сам тянет
напрямую

Google

Nikita
01.08.2017
10:26:51
все компилится само

v
01.08.2017
10:27:11
зетичер каквсигда

Ilya
01.08.2017
10:28:31
Боюсь представить размер вашего бандла. Но главное вам нравится.

Nikita
01.08.2017
10:29:28
бандла?
ты серьезно считаешь, что 1 гем того же цкэдитора критично отобразиться на бандле?

Admin
ERROR: S client not available

v
01.08.2017
10:30:08

Ilya
01.08.2017
10:30:40
Это ваше оценочное суждение. Остановитесь

v
01.08.2017
10:30:53
*задумчиво смотрит*

Fedor
01.08.2017
10:31:38
ну можно не тянуть из бандла, а подключать из CDN
геморроя, как по мне больше получается
хотя я как-то нашел плагин с математикой весом 680 мегабай )))
правда поотом просто нашел другой плагин


Ilya
01.08.2017
10:45:23
правда поотом просто нашел другой плагин
1) CKEditor как и любой редактор это vendor решение. Вы можете выбирать множество способов его установки. В том числе через гемы. Но тогда вы усложняете себе жизнь, тк фактически полагаетесь на малоизвестного поставщика, который упаковал этот вендор как ему это было удобно и не факт, что вы не столкнетесь с кейсами, которые не предусмотрены в рамках этого гема.
2) CKEditor это JS решение. Довольно объемное. Включать его в манифест и компилить с остальными JS-ами не целесообразно. Вы раздуваете свой конечный бандл, ассет, не важно как вы его называете. И грузите свой JS вместе с огромным CKEditor. Это так себе подходик.
3) Целесообразно ставить CKEditor оригинальными средствамии. Те в современных реалиях через Yarn.
4) Доступ к коду редактора в каталоге node_modules в всегда легко получите из public каталога рельса, если в public прсто сделаете символическую ссылку.
Так вы полностью избавляетесь от лишнего гема в проекте и вообще кода CKEditor в проекте. Он будет ставится через Yarn на этапе установки node либ.
5) Имея standalon CKEditor легко вызывать и настраивать его именно на нужных страницах проекта и грузите его не блокируя страницу загрузкой много-сотне-килобайтного CKEditor.
Профит использования standalone CKEditor почти со всех сторон.
А какая ваша практика?


pny
01.08.2017
10:59:08
Не использовать ckeditor

Nikita
01.08.2017
11:01:58
tl;dr

Ilya
01.08.2017
11:02:47
tl;dr
In short. Надо решать задачу исходя из рациональных предпосылок

Nikita
01.08.2017
11:04:58
так он идеально подходит для своих задач

Google

Nikita
01.08.2017
11:05:02
имеется огромное кол-во плагинов

Vsevolod
01.08.2017
11:24:47
Привет. Кто знает, как переопределить ассоциацию для активрекорда в rails консоли?

Антон
01.08.2017
11:35:03
class Object < AR
переоперделяем
конец

Vsevolod
01.08.2017
11:39:46
Нет, так не работает :'(

Ilya
01.08.2017
11:43:26
user = User.first
user.posts
# Anton's solution
user = User.first
user.posts
После переопределения переменную перезагружал?

Антон
01.08.2017
11:48:37

Vsevolod
01.08.2017
11:49:38
class Invoice < ApplicationRecord
belongs_to :user, unscoped: true
end
puts Invoice.includes(:user).to_sql
# SELECT "invoices".* FROM "invoices" ORDER BY created_at DESC
class Invoice < ApplicationRecord
belongs_to :user, unscoped: false
end
puts Invoice.includes(:user).to_sql
# SELECT "invoices".* FROM "invoices" ORDER BY created_at DESC

ojab
01.08.2017
11:50:11
А что надо получить-то?

Vsevolod
01.08.2017
11:52:28
unscoped: false должен при includes добавлять JOIN
Ну ладно.. задача уже снялась. Пусть будет N+1 запросов. Это всё-равно консоль

ojab
01.08.2017
11:53:52
в рельсах у belongs_to нет опции unscoped http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to
если нужен JOIN — юзай .eager_load(:user)

v
01.08.2017
11:54:46
кек

ojab
01.08.2017
11:55:17
(ну или .joins(:user), ага)

Vsevolod
01.08.2017
11:57:24
Ну я не прочь в это поверить. Но unscoped - работает. Надо поискать почему тогда.
Да - eager_load отличное решение.
Joins не подойдёт, потому что я потом работаю с объектами: invoice.user.name - он на это тогда отдельные запросы делает

Fedor
01.08.2017
11:57:48
а чем includes не нравится?


Vsevolod
01.08.2017
11:59:49
В ассоциации в коде написано:
belongs_to :user, unscoped: true, который вырезает includes :D
В 5ых рельсах его уже выпилили. А в 4х есть ещё такой аргумент