@codenamecrud

Страница 872 из 1009
Dimon
23.05.2018
14:19:43
ну так 700 это почти половина от 1500

и джун как и мидл - понятия растяжимые

Yaroslav
23.05.2018
14:20:12
Ivan
23.05.2018
14:26:28
Подскажите кто нибудь от чего могут не работать шрифты в продакшене

Google
Ivan
23.05.2018
14:26:39
Вроде всё стандартно по инструкции сделал

В дев среде работает

I
23.05.2018
14:33:22
не скомпилилось?

Ivan
23.05.2018
14:36:03
не скомпилилось?
Просто пустое место

Там где должен быть текст

Никаких ошибок нигде

Ivik
23.05.2018
14:43:49
вроде популярная проблема - должно гуглиться там гемор с прописыванием их кажется

Eugene
23.05.2018
19:49:01


Roman
24.05.2018
15:30:04


Igor
24.05.2018
23:09:34
Кто нибуть може т разЪяснить самый нижний код на стр. http://bookre.org/reader?file=598200&pg=147

Sergey
25.05.2018
04:42:15
вот этот?



присваиваешь result открытый файл если дан блок выполняешь его для файла закрываешь файл возвращаешь result

Google
Sergey
25.05.2018
04:51:17
просто возвращает файл

Sergey
25.05.2018
04:52:01
ну да, ensure f.close под if block_given? же

Igor
25.05.2018
04:52:23
Странно

Он вроде бы в любом случае должен закрываться

Sergey
25.05.2018
04:53:53
не, ты же можешь в принципе сделать так file = File.open('path', 'wb') file << 'zalupa' file << 'else zalupa' file.close но каноничнее с блоком

Igor
25.05.2018
04:55:54
ну да, ensure f.close под if block_given? же
коме того я с переменными запутался - я счначала считал, что result и f меняются одновременно , но тут они меняются независимо

Sergey
25.05.2018
04:57:43
сначала result = f, потом (если блок дан) result = yield f чтобы просто вернуть файл если без блока, и результат выполнения блока если блок был

Igor
25.05.2018
04:58:55
f = File.open("temp.rb", "w") f.puts "module Temp" f.puts " def Temp.var" f.puts " #{1}" f.puts " end" f.puts "end" f.close load "temp.rb" puts Temp.var

Действительно, если не закрывать, то temt.rb - не загружается

спасибо Сергей Благодарен

Попробовал без ensure - все тоже работает. Оно видимо нужно на тот случай - ели в блоке происходит облом. В этом случае она при всех обломах - закрывает файл

Dimon
25.05.2018
06:09:59
Он вроде бы в любом случае должен закрываться
не закрывается и остается в памяти. можешь проверить: добавь в экшоне любого контроллера открытие файла, открой страницу для этого экшона и зажми f5 пока память не кончится

Igor
25.05.2018
07:46:26
Очевидно же, нет?
Что именно очевидно? Если вы про enshure то я не до конца понимаю (понимал) как он работает без rescue щас вроде что то прояснилось

Google
Eugene
25.05.2018
07:50:18
ensure всегда вызывается в конце операции, независимо от её успеха или провала

Чего гадать-то как оно работает

Sergey
25.05.2018
07:51:07
и begin не обязателен

def function(*args) ensure end

Dimon
25.05.2018
07:53:57
Из моего текста видно, что не закрывается.
Я особо тебя не читал дальше

Igor
25.05.2018
07:54:39
и begin не обязателен
бегин именно нужен для ensure - если его убрать - можн убирать и begin - я так понял

Чего гадать-то как оно работает
Все что я смог найти - пока объясняет ensure в связке с rescue

Sergey
25.05.2018
07:56:36
да, можно убрать begin там нужен чтобы отграничить действие ensure на отдельную часть поcле begin

begin тут что-то делаем rescue Что-то пошло не так, обрабатываем ошибку ensure делаем всегда Если ты не обрабатываешь ошибку то и rescue не нужен, очевидно

Igor
25.05.2018
07:59:02
if block_given? # begin result = yield(f) ensure f.close # end end

Sergey
25.05.2018
07:59:57
на что действует тогда ensure?

Igor
25.05.2018
08:00:33
на что действует тогда ensure?
когда нет бегина - нет

выдается ошибка - яж написал

Sergey
25.05.2018
08:01:32
это да, я поэтому и спросил, на какой блок кода в твоем случае распостраняется ensure?

Igor
25.05.2018
08:02:03
на что действует тогда ensure?
так что энщуа энщурит только внутри бегина

Igor
25.05.2018
08:02:35
на f.close

I
25.05.2018
08:02:45
def some_method_name # something which might raise an exception rescue SomeExceptionClass => some_variable # code that deals with some exception ensure # ensure that this code always runs end

вот так тоже эншурит

Google
Sergey
25.05.2018
08:03:26


на f.close
нет, f.close у тебя внутри еншура. Что еншурится этим еншуром (бля, как же это словами выразить то :))

на скрине еншурится вся функция zalupa

I
25.05.2018
08:05:16
блок
какой?

Igor
25.05.2018
08:07:08
какой?
result = yield(f)

Admin
ERROR: S client not available

I
25.05.2018
08:08:32
и покажи как ты в итоге этот метод используешь

Sergey
25.05.2018
08:09:36
вот тут еншурится ` begin result = yield f end `` Если ты убираешь begin .. end то и ensure получается лишний

Sergey
25.05.2018
08:12:31
у тебя ошибка не из за того что нет бегина, а из-за того что ты еншуром разрываешь if..end

Igor
25.05.2018
08:12:37
I
25.05.2018
08:13:29
def method_name тоже идет как начало

Sergey
25.05.2018
08:14:37
если нет begin..end то ensure пытается действовать на всю функцию, и от def до ensure должен быть законченный блок кода. У тебя остался незаконченный if без end и поэтому ты получил SyntaxError

I
25.05.2018
08:16:15
кого «ее»?

Google
I
25.05.2018
08:16:25
смотрит на состояние стэка

Igor
25.05.2018
08:17:50
если бегина с эндом нет?

I
25.05.2018
08:21:37
и что в нем?
блок внутри if...end

в рамках которого ensure не ожидается

Sergey
25.05.2018
08:22:15
Я энщуа понимаю так. когда до него дошла очередь он не обращая не на что выполняет часть кда после него
до него всегда доходит очередь. Код внутри ensure выполняется всегда после выполнения кода функции

точнее не кода функции, а кода того блока который еншурится

Sergey
25.05.2018
08:25:45
да

в принципе наверное можно даже сделать ` class A ensure end `` но юзкейсов придумать не могу )

Igor
25.05.2018
08:30:46
да
энщурится от начала до ensure в качестве начала могут быть (видимо) def begin в общем все что кончается словом 'end`

Sergey
25.05.2018
08:31:42
ну да, блоки кода завернутые в ключевые слова begin/def/class/module/чтотамещеврубиесть ... end

Sergey
25.05.2018
08:33:28
if не блок кода же

Igor
25.05.2018
08:36:13
if не блок кода же
ну да, блоки кода слово блок не было воспринято мной правильным (рубиевым) образом

if не блок кода же
В общем сергей спс и благодарность - есще многое что прояснилось. Как то я в raise - еще плавую, но это на потом. Еще раз спасибо за ценное общение

Sergey
25.05.2018
08:37:42
ну и это не тот рубишный блок который имеется ввиду под do..end это какое-то мое интуитивное обозначение, хз как правильно назвать

Страница 872 из 1009