
Felix
05.08.2018
17:54:30
окружение на сервере можно и ручками настроить
оно настраивается 1 раз

Silent Bob
05.08.2018
17:55:26

Богдан
05.08.2018
22:02:45

Google

Felix
06.08.2018
03:52:20

Denis
06.08.2018
09:11:16

Alexey
06.08.2018
09:14:44
у capistrano наверное в Gemfile версия прописана

Denis
06.08.2018
09:15:49
не прописана

ojab
06.08.2018
09:17:17
версию rubyzip поставить поновее в Gemfile, очевидно

Denis
06.08.2018
10:14:20
Установить вроде вышло все. Но вот возникла новая проблемма.
cannot load such file -- zip/zip (LoadError)

Антон
06.08.2018
10:52:36
5-й год без капистрано - полет нормальный

No
06.08.2018
10:53:57
1 год без капистрано - полет нормальный, но скучаю
Вызывает привыкание )

Felix
06.08.2018
10:54:38
если человек спрашивает совета — логично предположить, что нужно что-то простое и рабочее) а без капистрано чаще всего те проекты, где деплой проще настроить без капистрано, чем возится с ним
какие-то слишком кастомные фичи нужны например, или что-то другое

Антон
06.08.2018
10:55:12
что-то простое и рабочее это хероку например, там нет капистрано

Google

Felix
06.08.2018
10:55:14
но в таком случае обычно настраивает деплоймент тот, кто понимает как нужно настроить

Антон
06.08.2018
10:55:48
ну.... оно дешевле чем настраивать все самому, особенно если не знаешь как
время кабута бесплатное у нас нынче

Felix
06.08.2018
10:56:11
и это тоже верно

Антон
06.08.2018
10:56:40
ну не совсем "тоже", я же не говорю "только хероку/ранчер/ватевар"

Felix
06.08.2018
10:56:55
:)
еще бывает что какой-то разработчик не сильно загружен. и чем он простаивать будет, лучше нагрузить чем-то полезным

Антон
06.08.2018
10:58:10
да я не уверен что польза будет
потому, что каждый "сисадмин" всякие эти ротации логов, всякие god и другую разную дребедень настраивает каждый раз в чем-то по другому
а потом оказывается, что держать кеш ап и дб на одном сервере было плохой идеей
а нанятые сисадмины не могут на этот сервер imagemagic наверноуть потому что там ______
девопс - штатная единица, а не разработчик которому заняться нечем
если проект в разработке, не требователен к персональным данным и нагрузка не большая, то можно обойтись бесплатной херокой.
таких проектов большинство

trickster
06.08.2018
11:19:41
да ну, слип этот по 10 секунд
проще уже ДО оплатить за копейку

Антон
06.08.2018
11:20:14
7$? обалдел?

trickster
06.08.2018
11:20:21
+ урлы ужасные

Антон
06.08.2018
11:20:29
dns?

trickster
06.08.2018
11:20:44
да
на бесплатном хероку

Google

trickster
06.08.2018
11:21:19

Антон
06.08.2018
11:21:21
можно взять кредит в банке

trickster
06.08.2018
11:21:33

Антон
06.08.2018
11:21:45

trickster
06.08.2018
11:22:03
дикие деньги, если ты решишь заплатить хероку ?

Антон
06.08.2018
11:22:31
платил пару раз за 10 лет ?
ssl вот еще дорогой

Felix
06.08.2018
11:24:56
0$

Антон
06.08.2018
11:25:12
ваще зажрались

Darth
06.08.2018
12:42:13
Как в модуле получить имя контроллера/неймспейс который его вызвал?
А ещё как в модуле вызвать методы из этого же модуля?

Aleksey
06.08.2018
12:44:53
когда модуль инклюдится в класс, все его методы становятся доступны в классе как родные, соотв. к методам обаращаешься так же как и в классе
насчет первого вопроса, единственное место где ты можешь узнать куда попал модуль - переопределить в модуле
def self.included(base)
end
во время инициализации кода этот метод вызовется каждый раз на каждый include, куда модуль заинлюдили а в base лежит имя класса куда его заинклюдили
от себя: исходя из общего уровня вопросов, есть подозрение что ты решаешь свою проблему как-то не так

s
06.08.2018
12:50:58

Darth
06.08.2018
12:53:03
Тогда попробую от задачи:
Хочу инклудить модуль только в Base (желательно)
Во время инклуда понимать куда инклудится (вниз по наследованию) и в зависимости от того куда сейчас инклужусь вызывать некоторую логику

s
06.08.2018
12:54:14
лучше так не делать
а сделать метод, который должен вызвать некоторую логику, которая зависит от контекста
и переопределить его везде, где нужно

Google

Darth
06.08.2018
12:54:49
Меня оч просили, чтоб это было в 1 модуле

Aleksey
06.08.2018
12:56:07
это очень очень неправильно

Darth
06.08.2018
12:57:33
Не вижу ничего неправильного
Вижу сложное
В любом случае таск есть таск

Aleksey
06.08.2018
12:59:22
модуль знает про классы в которве он инклюдится
даже не про интерфейс а про сами классы и дерево наследования
удачи тому кто это будет поддерживать

Admin
ERROR: S client not available

Darth
06.08.2018
13:02:20
Так фишка сделать так, чтобы работало, а потом только данные в массивах менять раз в n лет
Крч имеет смысл делать такую магию

Aleksey
06.08.2018
13:05:37
ну если имеет то как-то так:
`
module MyModule
def self.included(base)
case base.class.name
when BaseClass
base.include(ModuleForBaseClass)
when ChildClass
base.include(ModuleForChildClass)
when …
end
end
module ModuleForBaseClass
# something
end
module ModuleForChildClass
# something
end
end
`
но это феерический говнокод

Alexey
06.08.2018
13:24:58

Darth
06.08.2018
13:28:28

Alexey
06.08.2018
13:29:32
да, примерно так
module TMixin
def common_method
important_method1 + important_method2
end
def important_method1
raise 'implement'
end
def important_method2
raise 'implement'
end
end
class TBase
include TMixin
end
class T1 < TBase
def important_method1
"cool staff 1"
end
def important_method2
"cool staff 2"
end
end
p T1.new.common_method

Eugene
06.08.2018
13:30:29
А как ты это говно будешь тестить?
Типо тебе сказали так сделать, но потом так опача - ошибки летят, ты ничего не понимаешь и понимаешь, что легче было написать сразу норм, чем по второму кругу переписывать.
Хотя для быстрого релиза это подойдет.

Alexey
06.08.2018
13:35:38
> "вниз по наследованию" вроде не получится
поясню, что имею ввиду
module TMixin
def self.included(base)
self.instance_variable_set(:@klass, base)
end
def call
self.class.instance_variable_get(:@klass)
end
end
class TBase
include TMixin
end
class T1 < TBase
end
TBase.new.call
T1.new.call
T1.new.call
=> nil
т.к.для T1 не было явного include
но
TBase.new.call
=> TBase

Google

Eugene
06.08.2018
13:37:13

s
06.08.2018
13:37:40
а все же, зачем это нужно?

Alexey
06.08.2018
13:38:15
метамагия до добра не доведет, да
тут несложное оопе, чистый шаблонный метод какой нибудь наверняка

s
06.08.2018
13:38:23
если нет желания сделать по-человечески, с переопредлением метода, то хотя бы конфигурацию модуля вынести в подклассы
вроде include GenderTraits
а в дочернем классе gender :male, gender :female
и внутри модуля, в зависимости от конфирурации уже разруливать БЛ

Mikhail
06.08.2018
13:39:35

Alexey
06.08.2018
13:40:01
ну я же чисто по вопросу
метапрограммирование в целом неплохо
но нужно смотреть применение

s
06.08.2018
13:40:25
метапрограммирование это норм, но лучше его избегать, если есть возможность
но тут дело не в нем, а в вывернутой логике
в которой миксин почему-то должен что-то знать о контексте и вести себя по разному
если всех участников канала сложить в стопку, то получится full hd развертка )

Dmitry
06.08.2018
13:53:47

wi11son
06.08.2018
13:53:52
Хах
Как вообще сейчас народ деплоит? Ато я потерял из виду этот момент, как девопсы завелись в компании

Eugene
06.08.2018
13:55:24

wi11son
06.08.2018
13:55:26
Дженкинс+Ансибл+контейнеры?

s
06.08.2018
13:57:20
ансибл для провижининга и управления конфигурацией приложения, ансибл или капистрано для деплоймента
а дженкинс тут причем?)