
No
30.08.2017
10:11:05
собственно, весь энтерпрайз так работает )

v
30.08.2017
10:11:08
наняли разработчика на пхп
он по старинке и сделал админку отдельно

No
30.08.2017
10:12:04
https://stackoverflow.com/questions/8776585/rails-two-sites-one-database

Google

No
30.08.2017
10:12:08
а вот это уже кидали?
идея вроде ок из первого ответа
ну собственно и с миграциями поступить так же, как и с моделями
в итоге весь слой Data-Model будет зашарен

Nurik
30.08.2017
13:46:35
Всем привет. Ребят поднял стек для OSM. Включая их сайт, который написан на рельсах. Сам я в рельсах не разбираюсь вообще. В руби - да. Итак вопрос:
1. Установил я значит rails port - т.е. сайт копию того что доступна по адресу openstreetmap.org
2. Сделал всё по интсрукции запускаю приложение командой bundle exec passenger start.
После этого всего всё работает. Но это всё в development. По хорошему теперь нужно поставить спереди nginx, чтобы обслуживать статику. Сам сайт мне нужен только из-за редактора josm.
Вот как и что мне нужно сделать чтобы nginx обслуживал статику. И как сделать чтобы приложение работало в production ?

Кøе-ктø Геннадьевич
30.08.2017
13:47:00
https://www.ruby-lang.org/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/

ojab
30.08.2017
13:52:50

Nurik
30.08.2017
13:54:20

rekero
30.08.2017
13:58:20
-e production для прода

Nurik
30.08.2017
14:03:56

Nikita
31.08.2017
08:31:14
как в руби просто записать следующую логику:
переменная a равно b, если b присвоена, если нет - то какое-то значение, допустим 123

Google

Nikita
31.08.2017
08:31:22
типа:
a = b || 123

Vasiliy
31.08.2017
08:33:03
да

Nikita
31.08.2017
08:34:09
та не работает так
NameError: undefined local variable or method `b' for main:Object

Vasiliy
31.08.2017
08:34:41
а

Nikita
31.08.2017
08:34:57
хотя странно

Vasiliy
31.08.2017
08:34:59
a = defined? b ? b : 123

Nikita
31.08.2017
08:35:02
в irb не работает, в рельсах работает
value: @mover.radius_of_operation || 30
в рельсах ок вроде бы

Vasiliy
31.08.2017
08:35:42
пушто мовер переменная инстанса
а неопределённые переменные инстанса - nil
b - локальная переменная и к ней нельзя обращаться до её определения

Nikita
31.08.2017
08:38:04
value: @mover.radius_of_operation || 30 то есть вот так ок будет?

Vasiliy
31.08.2017
08:38:58
не должно
т.к. @mover у тебя nil, а у него нет свойства radius_of_operation
value: @mover&.radius_of_operation амперсанд надо или .try(:radius_of_operation) если руби старые

Антон
31.08.2017
09:18:47
a = try(:b) || 123
только это рельса опять

Nurik
31.08.2017
09:22:21
Всем привет. Ребят объясните плиз если passenger установлен как gem как к нему прикрутить nginx ?

Google

Антон
31.08.2017
09:23:27

Nurik
31.08.2017
09:23:38
гуглил?
33 мануала нашёл. Везде всё по разному.

No
31.08.2017
09:23:51
с nginx не конфижил его

Антон
31.08.2017
09:24:01
а у самого phusion passanger не пробовал мануал?

Nurik
31.08.2017
09:25:26
сколько мануалов не сработало?
У меня кароче проблема, то что passenger как gem установлен. И я вот не знаю что с ним делать в таком состоянии. Установил из репозитория nginx со скомпиленным passenger. Но что дальше делать не знаю.

Fedor
31.08.2017
09:25:27
запускаешь пассажира, и говоришь nginx редиректить на тот порт, на котором он слушает
есть еще вариант сконфигурить пассажира, для работы через unix сокеты. Тогда пассажир создает сокет, и надо сконфигурить нгинкс, что бы он в него писал

Антон
31.08.2017
09:26:30
https://www.phusionpassenger.com/library/walkthroughs/start/ruby.html

Nurik
31.08.2017
09:28:48

Антон
31.08.2017
09:29:04
я же дал ссылку

Nurik
31.08.2017
09:30:06
я же дал ссылку
Я же говорю, у меня точно так же. Он сам будет подниматься если сервер рестартнуть ?

Антон
31.08.2017
09:30:29
откуда мне знать, я ж не сервер
рестартани - посмотри

Nurik
31.08.2017
09:31:04
Что-то я там не нашёл про nginx

Антон
31.08.2017
09:31:23
а я нашел
https://www.phusionpassenger.com/library/install/nginx/install/oss/
примерно за 6 секунд, там есть поиск

Google

Alexey
31.08.2017
09:38:07
Спасиб @koekto , увидел это же когда сделал gem update --system
https://www.ruby-lang.org/en/news/2017/08/29/multiple-vulnerabilities-in-rubygems/

Nurik
31.08.2017
09:49:14
https://pastebin.com/SybfjcQV
Ребят в общем, кто может помочь, гляньте плиз конфиг. Почему-то статические файлы не обрабатываются passenger'ом в режиме production. А В режиме development всё ок. Я в общем установил openstreetmap website aka (Rails port). И всё сделал по инструкции. Далее перевёл в production и теперь статика не обрабатывается. Заранее спасибо.

rekero
31.08.2017
09:53:28
assets сначала скомпилировать надо

Admin
ERROR: S client not available

Nurik
31.08.2017
09:54:26


Loris
31.08.2017
09:56:23
Я новичёк, побаловался с ORM, сделал функию getinfostr для User.
Функция штатыными методами делает массу запросов в таблицы с телефонами, email и тп.
Допустим мне нужно выгрузить пол таблицы пользователей по критерию.
Логично сделать User.where(<условие(на каждый вызов разное)>).map{|u| u.getinfostr}.join(",")
По коду это просто удобно и понятно, но это будет для каждого пользователя
делать SQL запрос на выгрузку инфы по пользователю, что при больших
таблицах и частых запросах будет работать ОЧЕНЬ МЕДЛЕННО.
Вопрос, как и какие кеширование включить, чтобы неувеличивая сложность
кода получить суперпупер быстрый результат? По сути должен остаться 1 SQL запрос
по where, всё остальное должно браться из cache при условии что БД не менялась.
Ещё раз подчеркну, что условие на каждый запуск будет отличатся.

Sergey
31.08.2017
09:57:15
почитай про N+1

Loris
31.08.2017
09:58:54
Супер, спасибо

Alexey
31.08.2017
10:01:16
есть гем bullet который в группу devlopment гемфайла пихаешь. Он как раз за тебя отлавливает N+1

Evegeniy
31.08.2017
10:02:58
Жаль нету гема, который за тебя код пишет
?

rekero
31.08.2017
10:04:16
и прогнать

Loris
31.08.2017
10:04:29
Получается что функция getinfostr бесполезна, так как обрабатывает 1 пользователя за раз, оптимизировать её с помощью includes нельзя? Нужно делать метод self.getinfosstr(where), которая будет вываливать весь список?

rekero
31.08.2017
10:04:54
что у тебя функция делает?

Loris
31.08.2017
10:05:49
Ну допустим "#{user.emails.join(","), #{user.phones.join(","))"
т.е. запрашивает всю инфу из других таблиц

Google

pny
31.08.2017
10:06:37
Так напиши запрос так что он сразу все данные вытащит

Loris
31.08.2017
10:07:42
Просто от этого код от этого станет менее понятным, мне хотелось бы этого избежать, если возможно.
Да и если это метод по одной записи, то при выборке Users.where(<>).map{|u|u.getinfostr} будет куча SQL запросов, на каждого пользователя.
т.е. должно быть чтото вроде Users.getinfosstr(<>) и всё, а в getinfosstr уже мозговыносящий код с includes и тп?

pny
31.08.2017
10:10:39
Что в нем мозговыносящего о
?

Fedor
31.08.2017
10:12:09
я вообще вопроса не понял )
ты хочешь получить кучу пользователей, причем одного по логину, другого по паролю, а третьего по фамилии бабушки?
тогда у тебя, судя по всему, кривая архитектура

Loris
31.08.2017
10:17:08
Не совсем, я допустим хочу сделать вывод всех пользователей, по фамилии бабушки и вывести их в какойм-то стандартном виде. Это две разные задачи. Я хочу решить их отдельно друг от друга, т.е. удобным мне способом получить список пользователей, а потом преобразовать его в с помощью какой-нибудь функции. А получается что приходится делать функцию которая будет делать и то и другое сразу.

Fedor
31.08.2017
10:19:30
есть User.where().map{}который решает эту проблему
можно написать метод класса User который будет выводить realtion в нужном формате
и просто вызывать его

Loris
31.08.2017
10:20:03
User.where().map{|u| u.getinfostr()}.join(",")
так?

Fedor
31.08.2017
10:20:14
нет
map - вернет массив