@rubylang

Страница 1191 из 1684
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/

Nurik
30.08.2017
13:54:20
passenger'у не нужен nginx, он сам вполне способен статику отдавать
Понятно. Спасибо за инфу. А не подскажите как демонизировать команду: bundle exec passenger start Просто не понимаю как запустить passenger чтобы он слушал порт.

Понятно. Спасибо за инфу. А не подскажите как демонизировать команду: bundle exec passenger start Просто не понимаю как запустить passenger чтобы он слушал порт.
И вообще не понятно что делает bundle exec, хотя и читал доку. Например в nodejs npm run [command_name] запускает скрипт из секции scripts в файле package.json, но здесь я такого не нашёл, поэтому непонятно что делает bundle exec.

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
Nurik
31.08.2017
09:23:38
гуглил?
33 мануала нашёл. Везде всё по разному.

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

Антон
31.08.2017
09:24:01
33 мануала нашёл. Везде всё по разному.
сколько мануалов не сработало?

а у самого phusion passanger не пробовал мануал?

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

Fedor
31.08.2017
09:25:27
запускаешь пассажира, и говоришь nginx редиректить на тот порт, на котором он слушает

есть еще вариант сконфигурить пассажира, для работы через unix сокеты. Тогда пассажир создает сокет, и надо сконфигурить нгинкс, что бы он в него писал

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
Жаль нету гема, который за тебя код пишет

?

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 - вернет массив

Страница 1191 из 1684