
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

Igor
25.05.2018
04:50:44

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

Igor
25.05.2018
04:51:28

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

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 - все тоже работает. Оно видимо нужно на тот случай - ели в блоке происходит облом. В этом случае она при всех обломах - закрывает файл

Ēľ Ċāƥīāŋ Ƭīʋȷɍēś
25.05.2018
06:04:17

Dimon
25.05.2018
06:09:59

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

Eugene
25.05.2018
07:50:02

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 - я так понял

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
выдается ошибка - яж написал

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

Igor
25.05.2018
08:02:03

I
25.05.2018
08:02:34

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

Igor
25.05.2018
08:04:51

I
25.05.2018
08:05:16

Igor
25.05.2018
08:07:08

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 получается лишний

Igor
25.05.2018
08:09:37

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

Igor
25.05.2018
08:14:53

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
в рамках которого ensure не ожидается

Sergey
25.05.2018
08:22:15
точнее не кода функции, а кода того блока который еншурится

Igor
25.05.2018
08:25:37

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

Igor
25.05.2018
08:33:02

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
это какое-то мое интуитивное обозначение, хз как правильно назвать

Igor
25.05.2018
08:38:51