Подтвердить что ты не робот

Использовать глобальную или постоянную переменную в Ruby/Rails?

Скажем, у нас есть соединение с memcache или redis... какой стиль является предпочтительным и почему?

MEMCACHE = Memcache.new(...)
REDIS = Redis.new(...)

ИЛИ

$memcache = Memcache.new(...)
$redis = Redis.new(...)
4b9b3361

Ответ 1

Возможно, вы захотите использовать Redis.current Подробнее здесь

Например, в инициализаторе:

Redis.current = Redis.new(host: 'localhost', port: 6379)

И затем в других классах:

def stars
  redis.smembers("stars")
end

private

def redis
  Redis.current
end

Ответ 2

Они не являются эквивалентными конструкциями. В зависимости от вашего приложения они могут быть или не быть взаимозаменяемыми, но они семантически отличаются.

# MEMCACHE is a constant, subject to scoping constraints.
MEMCACHE = Memcache.new(...)

# $memcache is a global variable: declare it anywhere; use it anywhere.
$memcache = Memcache.new(...)

Ответ 3

IMO "константа", потому что она сообщает, что она должна быть... постоянной.

Глобалы не подразумевают, что они не должны быть мутированы.