Открыть боковую панель
nt_test133
nt_project_uxpg8lvcuq8w
Коммиты
6ce21a9c
Не подтверждена
Коммит
6ce21a9c
создал
Сен 04, 2019
по автору
Nick Thomas
Просмотр файлов
Add a predicate to check for strong memoization
владелец
96a9a140
Изменения
2
Скрыть пробелы
Построчно
Рядом
lib/gitlab/utils/strong_memoize.rb
Просмотр файла @
6ce21a9c
...
@@ -24,13 +24,17 @@ module StrongMemoize
...
@@ -24,13 +24,17 @@ module StrongMemoize
# end
# end
#
#
def
strong_memoize
(
name
)
def
strong_memoize
(
name
)
if
instance_variable_defined?
(
ivar
(
name
)
)
if
strong_memoized?
(
name
)
instance_variable_get
(
ivar
(
name
))
instance_variable_get
(
ivar
(
name
))
else
else
instance_variable_set
(
ivar
(
name
),
yield
)
instance_variable_set
(
ivar
(
name
),
yield
)
end
end
end
end
def
strong_memoized?
(
name
)
instance_variable_defined?
(
ivar
(
name
))
end
def
clear_memoization
(
name
)
def
clear_memoization
(
name
)
remove_instance_variable
(
ivar
(
name
))
if
instance_variable_defined?
(
ivar
(
name
))
remove_instance_variable
(
ivar
(
name
))
if
instance_variable_defined?
(
ivar
(
name
))
end
end
...
...
spec/lib/gitlab/utils/strong_memoize_spec.rb
Просмотр файла @
6ce21a9c
...
@@ -52,6 +52,22 @@ def trace
...
@@ -52,6 +52,22 @@ def trace
end
end
end
end
describe
'#strong_memoized?'
do
let
(
:value
)
{
:anything
}
subject
{
object
.
strong_memoized?
(
:method_name
)
}
it
'returns false if the value is uncached'
do
is_expected
.
to
be
(
false
)
end
it
'returns true if the value is cached'
do
object
.
method_name
is_expected
.
to
be
(
true
)
end
end
describe
'#clear_memoization'
do
describe
'#clear_memoization'
do
let
(
:value
)
{
'mepmep'
}
let
(
:value
)
{
'mepmep'
}
...
...
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать