Size: a a a

2020 February 26

N

Ni in RubyRush
(руби не предоставляет, но скоро будет)
источник

E

Eugene in RubyRush
Ni
он топорный и с ним тяжеловато работать
Он тянет за собой "родовые травмы", которые годами исправляют
источник

N

Ni in RubyRush
Eugene
Все языки общего назначения являются панацеей :)
к сожалению, нет
источник

E

Eugene in RubyRush
Ni
я лишь говорил, что он асинхронный, а это круто, когда язык предоставляет эту функциональность из коробки
Почти любой язык, где есть библиотека работы с сетью, будет предоставлять асинхронность.

JS это не асинхронный язык. Это синхронный язык, поэтому и приходится городить огород callback-ов. Для того чтобы можно было писать асинхронный код. Это костыль. (Ruby в этом плане точно такой же - никаких отличий.)

Асинхронным в каком-то смысле можно было бы назвать, например, Haskell, где все вычисления "ленивые" (вызовы "методов", грубо говоря, откладываются до момента, где требуется конечный результат).

Или какой-нибудь Erlang/Elixir, где спавн процесса в самом деле является конструкцией языка.
источник

E

Eugene in RubyRush
Ni
(руби не предоставляет, но скоро будет)
Ну JS ничего не предоставляет из коробки

У него есть одна коробка Node.JS, котрая до сих пор не поддерживает современный стандарт языка

И есть куча других коробок - браузеры - каждый со своими причудами

И вот они чего-то там предоставляют

В Ruby сто лет уже есть EventMachine. Широко известная (в сообществе) библиотека с разнообразными примерами применения. (Мне, правда, вблизи пока смотреть не доводилось.)
источник

E

Eugene in RubyRush
Ni
к сожалению, нет
Ну это бы звучало убедительно, если бы у вас был авторитет на уровне Линуса или какие-то аргументы
источник

N

Ni in RubyRush
Eugene
Ну это бы звучало убедительно, если бы у вас был авторитет на уровне Линуса или какие-то аргументы
окей, что тогда по-вашему язык-панацея?
источник

M

Michael in RubyRush
прекритите уже камон
источник

N

Ni in RubyRush
Eugene
Ну JS ничего не предоставляет из коробки

У него есть одна коробка Node.JS, котрая до сих пор не поддерживает современный стандарт языка

И есть куча других коробок - браузеры - каждый со своими причудами

И вот они чего-то там предоставляют

В Ruby сто лет уже есть EventMachine. Широко известная (в сообществе) библиотека с разнообразными примерами применения. (Мне, правда, вблизи пока смотреть не доводилось.)
это сторонняя библиотека))
источник

M

Michael in RubyRush
хотя бы до флудовых потерпите
источник

E

Eugene in RubyRush
Michael
хотя бы до флудовых потерпите
А, точняк, сорри :)
источник

D

Denis in RubyRush
Они дату на часах перевели =)
источник

E

Eugene in RubyRush
У меня чего-то внутренний таймер со вчера как сбился, так и пока не вернулся на стандартное время :)
источник

КК

Кракозябр Кракозябро... in RubyRush
Текс. Вот имеется  у меня модель Задачи. Есть у неё поле "время выполнения", которое просто строчка вычисляемая функцией work_time из даты создания и даты завершения. В идеале мне нужно чтобы это самое поле "время выполнения" вычислялось и заносилось в базу сразу же, как появляется время завершения и статус задачи меняется на "завершено". Соответственно я вижу это как вызов функции work_time на коллбэке after_update, но тут  ловится  рекурсия, ибо вызов метода тоже вызывает update модели. Сейчас я наваял костыль говнопалочного вида

after_update :work_time, if: :check_finish?

 private

 def check_finish?
   return false if status != 'finished' #проверяем статус
   return false if finished_at.blank? #проверяем наличие даты завершения
   return false if @t.present? #проверяем переменную, чтобы не уйти в рекурсию

   true
 end

 def work_time #тут мы считаем и рожаем строку нужного формата
   @t = sec2dhms(finished_at - created_at) if finished_at.present?
   update_attribute(:work_time, @t)
Данная конструкция нормальная или фсёфигня и можно в 2 раза короче и в три раза красивше?
источник

E

Eugene in RubyRush
Кракозябр Кракозябрович
Текс. Вот имеется  у меня модель Задачи. Есть у неё поле "время выполнения", которое просто строчка вычисляемая функцией work_time из даты создания и даты завершения. В идеале мне нужно чтобы это самое поле "время выполнения" вычислялось и заносилось в базу сразу же, как появляется время завершения и статус задачи меняется на "завершено". Соответственно я вижу это как вызов функции work_time на коллбэке after_update, но тут  ловится  рекурсия, ибо вызов метода тоже вызывает update модели. Сейчас я наваял костыль говнопалочного вида

after_update :work_time, if: :check_finish?

 private

 def check_finish?
   return false if status != 'finished' #проверяем статус
   return false if finished_at.blank? #проверяем наличие даты завершения
   return false if @t.present? #проверяем переменную, чтобы не уйти в рекурсию

   true
 end

 def work_time #тут мы считаем и рожаем строку нужного формата
   @t = sec2dhms(finished_at - created_at) if finished_at.present?
   update_attribute(:work_time, @t)
Данная конструкция нормальная или фсёфигня и можно в 2 раза короче и в три раза красивше?
а зачем update_attribute?

чем простое присвоение не угодило?

self.work_time = ...
источник

КК

Кракозябр Кракозябро... in RubyRush
да там консоль  уменя ругалась
источник

КК

Кракозябр Кракозябро... in RubyRush
ща переделаю
источник

КК

Кракозябр Кракозябро... in RubyRush
гм, callback пришлось поменять на  before_update, чтоб отработало
before_update :work_time, if: :check_finish?

 private

 def check_finish?
   return false if status != 'finished'
   return false if finished_at.blank?

   true
 end

 def work_time
   self.work_time = sec2dhms(finished_at - created_at) if finished_at.present?
 end
источник

E

Eugene in RubyRush
Кракозябр Кракозябрович
гм, callback пришлось поменять на  before_update, чтоб отработало
before_update :work_time, if: :check_finish?

 private

 def check_finish?
   return false if status != 'finished'
   return false if finished_at.blank?

   true
 end

 def work_time
   self.work_time = sec2dhms(finished_at - created_at) if finished_at.present?
 end
def check_finish?
 status == 'finished' && finished_at.present?
end
источник

E

Eugene in RubyRush
а в work_time убрать if
источник