
Valentin
20.09.2016
11:58:32

ojab
20.09.2016
12:03:31
ошибка всё ещё есть?

Valentin
20.09.2016
12:04:01

ojab
20.09.2016
12:04:14
это ок

Google

ojab
20.09.2016
12:04:45
capistrano добавляет всякие пути, которых нет у юзера
там puma и лежит

Valentin
20.09.2016
12:11:58

ojab
20.09.2016
12:12:28
нет, это надо выполнить один раз для проверки наличия SECRET_KEY_BASE в окружении при запуске через capistrano
если там secret_key_base выставляется — ты как-то не так запускаешь puma, если нет — надо разбираться с окружением

Valentin
20.09.2016
12:15:22
Оно же должено без пуша на мастер выполняться?
А то я не пушил, просто изменил деплой.рб и
Don't know how to build task 'custom'

Mikhail
20.09.2016
12:16:15
а кэпа не надо пушить

Valentin
20.09.2016
12:17:15
тупанул
без print_secret прописал

ojab
20.09.2016
12:18:50
хм

Mikhail
20.09.2016
12:19:12
ну че там

Google

Mikhail
20.09.2016
12:19:16
насилуете да)
?

ojab
20.09.2016
12:19:27
а, блин
а, не
там в последней колонке /bin/bash или /bin/sh?

Valentin
20.09.2016
12:20:46

ojab
20.09.2016
12:20:58
магия

Valentin
20.09.2016
12:22:17
скорее кривые руки на каком-то этапе деплоя

ojab
20.09.2016
12:24:04
ан нет, не магия, на работающем хосте у меня тоже SECRET_KEY_BASE пустой

Иван
20.09.2016
12:28:53
Ребят, подскажите пожалуйста. Вот есть у нас к примеру класс А внтури которого лежит константа. Далее мы определяем новый класс B, указывая что он внутри области видимости класса А, но использовать константу из клсса А напрямую мы не можем. Почему класс А не считается охватывающим классом при такой записи:
class A
CONST = 1
end
class A::B
puts CONST
end

ojab
20.09.2016
12:31:33

Valentin
20.09.2016
12:32:33

ojab
20.09.2016
12:33:56
если я всё правильно понимаю — puma на убунте запускается через dash, в котором окружения нифига нет
:/

Valentin
20.09.2016
12:34:09
а если прописать sh -c "env | grep SECRET" на сервере, то SECRET_KEY_BASE=
походу где-то пустое значение присваивается

ojab
20.09.2016
12:35:13
гм

Google

Valentin
20.09.2016
12:36:17
как там вывести название файла через греп?

ojab
20.09.2016
12:36:54
если грепаешь по директории — он сам выведет

Valentin
20.09.2016
12:37:18
ну, я твоим методом грепаю

ojab
20.09.2016
12:37:58
тогда ты грепаешь по текущим переменным окружения, там нет имён файлов
grep -r SECRET_KEY_BASE /etc ~
грепнет по /etc и по домашней директории

Eugene
20.09.2016
12:43:43

Valentin
20.09.2016
12:44:02

ojab
20.09.2016
12:48:02
mkay, а где и что у тебя сейчас присваивается?

Valentin
20.09.2016
12:48:23

ojab
20.09.2016
12:49:06
ну то есть нигде

Иван
20.09.2016
12:51:59
он не внутри видимости класса А, он в модуле A.
В данном примере получается внутри _класса_ А? Но почему руби все равно при таком определении класса не считает что класс/модуль А является охватывающим класс B? Ведь к константе напрямую я не могу обратиться.

Valentin
20.09.2016
12:52:03

Иван
20.09.2016
12:52:13

ojab
20.09.2016
12:55:16
Если имеется в виду родительский — нет, он не внутри класса A и не является дочерним.

Иван
20.09.2016
12:56:04
в общем меня интересует почему вот это -
module A
CONST = 1
class B
puts CONST
end
end
и вот это
module A
CONST = 1
end
class A::B
puts CONST
end
ведет себя по раному

yopp
20.09.2016
12:57:13
1) A, B и CONST это всё константы
2) В руби константы разрешаются из своей лексической области
d ckexf

Google

yopp
20.09.2016
12:57:45
тьфу
короче, оно работает как папочки
:: мысленно замени на /
только с той разницей, что руби будет искать вверх по лексической области видимости, по всей текущей ветке иерархии. если ничего не найдёт, то будет NameError
лексически в первом случае у тебя иерархия :: -> A -> (CONST, B)
во втором :: -> A -> CONST; :: -> A::B
когда из ::A::B разрешается константа CONST (относительный путь), она будет разрешена в ::A::CONST
во втором случае, при разрешении из ::A::B разрешать некуда, потому что в текущей ветке CONST тупо нет

Иван
20.09.2016
13:05:13
во спасибо, так понятей

yopp
20.09.2016
13:07:15
где-то даже была статья на эту тему, я её сюда несколько раз даже кидал, но щас не могу сходу найти

Admin
ERROR: S client not available

Иван
20.09.2016
13:12:20
Если вдруг случайно наткнешься еще раз на статью, скинь, пожалуйста, еще раз. А то я пытался гуглить на эту тему, но как то даже и сформулировать не могу что хочу

yopp
20.09.2016
13:16:28
ruby constant resolution

Aldar
20.09.2016
13:16:58
поэтому в рубях можно вызывать constantize и получать имя класса)
из строки

Mikhail
20.09.2016
13:24:27
???

yopp
20.09.2016
13:24:58
ну тут только разница в том, что файловая система не будет искать файл уровнем выше :)

Aldar
20.09.2016
13:24:59
папочки, как в виндавс

Mikhail
20.09.2016
13:25:20
да

Google

yopp
20.09.2016
13:25:45
а так да. CONST относительный путь, а ::CONST абсолютный

Mikhail
20.09.2016
13:25:51
я раньше на модулях делал всегда по рекомендации моего лида
А потом нарвался на конфликт и начал абсолютные юзать
как ты выше привел
::ParentClass::BaseClass::Class

Иван
20.09.2016
13:26:41
получается что при записи class A::B; end у нас не попадает ::A в лексическую область видимости?

Mikhail
20.09.2016
13:26:52
да
Всегда где у тебя класс не первый в дереве(иерархии) ставь ::КЛАСС чтобы попадать

ojab
20.09.2016
13:27:48

yopp
20.09.2016
13:27:59

ojab
20.09.2016
13:28:01
я таки нагуглил что хотел

Иван
20.09.2016
13:28:19

yopp
20.09.2016
13:28:38
http://cirw.in/blog/constant-lookup.html
http://valve.github.io/blog/2013/10/26/constant-resolution-in-ruby/
http://jfire.io/blog/2011/01/21/making-sense-of-constant-lookup-in-ruby/
это у меня в закладках осталось

Mikhail
20.09.2016
13:29:54
Классная статья

yopp
20.09.2016
13:30:01
вот ещё: https://gist.github.com/kyrylo/6413067

Mikhail
20.09.2016
13:30:35
бесплатная раздача полезного контента)
у меня эта есть http://valve.github.io/blog/2013/10/26/constant-resolution-in-ruby/

Иван
20.09.2016
13:33:01
да про поиск констант вроде все относительно понятно, просто мне показалось странным что при той записи модуль А не считается охватывающим и в нем не происходит поиск
оказалось что его даже нет в области видимости