Size: a a a

2021 January 20

E

Evgeniy in RubyRush
Спасибо, я примерно это понял. А вот за счет чего в application_controller.rb  ничего не реквайрится, а он "из воздуха" наследуется от ActionController::Base ? ))
источник

L

Lem in RubyRush
Evgeniy
Спасибо, я примерно это понял. А вот за счет чего в application_controller.rb  ничего не реквайрится, а он "из воздуха" наследуется от ActionController::Base ? ))
короче, береш гем...
источник

ЗА

Злой Апельсин... in RubyRush
Lem
короче, береш гем...
и читаешь документацию?
источник

ЗА

Злой Апельсин... in RubyRush
Evgeniy
Спасибо, я примерно это понял. А вот за счет чего в application_controller.rb  ничего не реквайрится, а он "из воздуха" наследуется от ActionController::Base ? ))
Не совсем понятно, почему из воздуха наследуется
Для контроллеров, моделей и не только, есть древо наследования, в каждом предке есть свои методы, которые добавляются к конечному допустим контроллеру
при поиске метода - поиск производится по восходящей, сначала в методах наследника, потом ближайшего родителя и так по восходящей, пока не добирается до самого первого суперкласса, кажется это BasicObject
теоретическая выкладка получается такой, возможно где-то ошибся и товарищи по цеху поправят
источник

Э

Эдем in RubyRush
Evgeniy
Спасибо, я примерно это понял. А вот за счет чего в application_controller.rb  ничего не реквайрится, а он "из воздуха" наследуется от ActionController::Base ? ))
Константы из гемов подтягиваются. Там есть boot.rb. Например, если есть гем pundit, то можно «из воздуха» писать include Pundit
источник

E

Eugene in RubyRush
Evgeniy
Всем привет! Подскажите за счет чего в Rail работает такой код, что нет require? Спасибо!
class ApplicationController < ActionController::Base
end
источник

MR

Mad Reyk in RubyRush
Здравствуйте, работаю с библиотекой telegram-bot-ruby, кто знает, как реализовать реплай сообщений в другой чат?
источник

AV

Alexander Vladimirov in RubyRush
Mad Reyk
Здравствуйте, работаю с библиотекой telegram-bot-ruby, кто знает, как реализовать реплай сообщений в другой чат?
источник

MR

Mad Reyk in RubyRush
спасибо!
источник

E

Evgeniy in RubyRush
Господа рубисты, подскажите, а что return останавливает выполнение reduce? Есть ли какая то замена этой инструкции для возврата аккумулятора? Спасибо!
источник

Э

Эдем in RubyRush
Возврата куда?
источник

Э

Эдем in RubyRush
Он и возвращает туда, откуда вызвали метод с блоком
источник

Э

Эдем in RubyRush
Как-то так

def method_with_return_from_block
 [0, 1, 2, 3].each_with_index { |_, i| puts i; return 10 if i == 2 }
end

method_with_return_from_block == 10
# вернёт true, перед эти выведя 0, 1, 2
источник

E

Evgeniy in RubyRush
array.reduce(0) do |acc, item|
 return acc if item < 0
 acc += item
 acc
end
Вот такой код не работает. Первый же return останавливает свертку массива.
источник

Э

Эдем in RubyRush
Такой код вернёт значение acc туда, откуда вызвали этот reduce, если значение элемента отрицательно. Причём может зарэйсится LocalJumpError
источник

E

Evgeniy in RubyRush
Просто на js до этого писал, там это возможно. А в руби, чем можно return заменить, чтобы вернуть значение аккумулятора, не останавливаю работу reduce?
источник

Э

Эдем in RubyRush
Непонятно, о чём речь. Лучше пример
источник

E

Evgeniy in RubyRush
result = [1, 2, 3, 0, 5, 6].reduce(0) do |acc, item|
 return acc if item == 0
 acc += item
end

result   # => ничего
источник

Э

Эдем in RubyRush
Ничего — это что? И что нужно?
источник

E

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