Size: a a a

2020 January 13

VK

Vasya Kuzmik in pro.ruby
Aliaksandr ¯\_(ツ)_/¯
роуты были, валидация, аплодер, флеш, формы.. неймспейсов не былоо
Эт потому, что ты не с того конца учить начал
Почитай well grounded rubyist, way of ruby, ruby under microscope
источник

AI

Alex Ilizarov in pro.ruby
Aliaksandr ¯\_(ツ)_/¯
я учил эти дни и руби и рельсы
рельсы вообще вылетая лара
одинаковые флеш методы, паршены

как то я не сталкнулся в изучении с системой плагинов и переопределении ядра

я просто пишешь роут, для него контролер и модель и рабоатешь выводишь что тебе нужно
Нет это лара вылитые рельсы, ларавель вдохновлялся рельсами.
источник

Aliaksandr ¯\_(ツ)_/¯ in pro.ruby
Aliaksandr ¯\_(ツ)_/¯
щас кароче попробую сам
типо так

module ForumUtils

   class Utils

       private
   
       class CommandRunner

         private
   
         def execute_command(*command, failure_message: "", success_status_codes: [0], chdir: ".")
         //my code
         end
       end
     end

def
вроде переопределил.. по крайней мере раншье бекап не создавался (Job exception: unknown keyword: chdir) , а теперь создается
ориентируюсь карчое на этот код - https://meta.discourse.org/t/tips-for-overriding-existing-discourse-methods-in-plugins/83389/2
источник
2020 January 14

YD

Yurii Dubinka in pro.ruby
Rustam Ibragimov
я тут на коленке запилил шаблонный проектик для запила своих гемчиков
просто клонируешь - меняешь - и фигачишь 🙂

https://github.com/0exp/gem_template

юзайте, кому понравится
Нашел сегодня этот проект
https://github.com/mattbrictson/gem

Может Вам стоит скооперироваться?
источник

YD

Yurii Dubinka in pro.ruby
Тёмыч
Я с вами в очереди постою
пока из тех что нашел этот ближайший к ответу на вопрос выше
https://github.com/mattbrictson/gem
источник

Aliaksandr ¯\_(ツ)_/¯ in pro.ruby
Aliaksandr ¯\_(ツ)_/¯
теперь этот код вынесли в новый приватный класс и приватный метод
как теперь переопределить?
https://github.com/discourse/discourse/blob/3b7f5db5ba9d4db23593fe116499f9583fed271f/lib/discourse.rb#L62-L73
Мне кстати вчера ктото написал, что переопределил. но потом удалил собщение.
Зря  я читаю, мне полезно
источник

S

ShadoWalkeR in pro.ruby
Господа. Есть вопрос. Я делаю split строки и получаю 3-7 значений. Как я могу их сохранить одной строкой в три переменных чтобы в центральную переменную сохранить как массив все что между ними? То есть чтото вроде a, b[], c = tmp.split(",")
источник

SD

Sunny Daily in pro.ruby
ShadoWalkeR
Господа. Есть вопрос. Я делаю split строки и получаю 3-7 значений. Как я могу их сохранить одной строкой в три переменных чтобы в центральную переменную сохранить как массив все что между ними? То есть чтото вроде a, b[], c = tmp.split(",")
a, *b, c =
источник

S

ShadoWalkeR in pro.ruby
Благодарю
источник
2020 January 15

YD

Yurii Dubinka in pro.ruby
Добрый день.
А как правильно принято делать лейзиинициализацию поля в классе?
https://hastebin.com/bukizoxoge.rb
class A
 def initialize(home)
   @field = Dir.glob(...)
               .select
               .sort
               . ...
               .each_with_index do |f, i|
    xxx
    yyy
    zzz
end
 end

 def a
   # manipulate with @field
 end

 def b
  # manipulate with @field
 end

 def c
  # manipulate with @field
 end
end


Вопрос #1:
Хранить логику инициализации обьекта в конструкторе плохая идея т.к. ты можешь построить обьект, но не вызывать его логику т.к. она может быть не нужна в момент создания.

Вопрос #2:
Постройка @field в конструкторе занимает ~10 cтрочек что как бы много.
Можно ли из конструктора вызывать ли методы по постройке обьекта и хорошая ли это практика?
источник

MC

Mikhail Churakov in pro.ruby
для поля класса в таком случае обычно создают геттер и сеттер, которые инкапсулируют логику работы с конкретным полем, если в методах класса используется явное обращение к полю (свойству) объекта, то инициализировать его естественно лучше при создании объекта сразу (будет меньше ошибок)
источник

AI

Alex Ilizarov in pro.ruby
Yurii Dubinka
Добрый день.
А как правильно принято делать лейзиинициализацию поля в классе?
https://hastebin.com/bukizoxoge.rb
class A
 def initialize(home)
   @field = Dir.glob(...)
               .select
               .sort
               . ...
               .each_with_index do |f, i|
    xxx
    yyy
    zzz
end
 end

 def a
   # manipulate with @field
 end

 def b
  # manipulate with @field
 end

 def c
  # manipulate with @field
 end
end


Вопрос #1:
Хранить логику инициализации обьекта в конструкторе плохая идея т.к. ты можешь построить обьект, но не вызывать его логику т.к. она может быть не нужна в момент создания.

Вопрос #2:
Постройка @field в конструкторе занимает ~10 cтрочек что как бы много.
Можно ли из конструктора вызывать ли методы по постройке обьекта и хорошая ли это практика?
То что вы ищите называется memoization
источник

YD

Yurii Dubinka in pro.ruby
источник

YD

Yurii Dubinka in pro.ruby
class User < ActiveRecord::Base
 def main_address
   @main_address ||= begin
     maybe_main_address = home_address if prefers_home_address?
     maybe_main_address = work_address unless maybe_main_address
     maybe_main_address = addresses.first unless maybe_main_address
   end
 end
end
источник

YD

Yurii Dubinka in pro.ruby
о как
источник

AI

Alex Ilizarov in pro.ruby
class MyClass
 def variable
   @varable ||= begin
      42
    end
 end
end
источник

YD

Yurii Dubinka in pro.ruby
👍
источник

YD

Yurii Dubinka in pro.ruby
спасибо!
источник

MC

Mikhail Churakov in pro.ruby
Вроде вопрос был как правильно =)
источник

AI

Alex Ilizarov in pro.ruby
Yurii Dubinka
спасибо!
Почитай внимательно как работает ||= иначе обожжешься
источник