1. C чего мне начать, чтобы стать рубистом? Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и теже вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
2. Какой gem посмотреть, чтобы понять, как писать код? Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping. А еще можешь полистать на гитхабе гемы с нарастающей популярностю. https://github.com/trending?l=ruby Там еще нет тысяч строк, и тебе будет легче понять.
3. Есть ли GUI для руби? Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО? Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.
7. Хорошие практики по руби и рельсам? Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes. Почитайте еще Grimm A. - Objects on Rails Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
13. Где можно задать глупые и не очень вопросы? - здесь - stackoverflow.com - тематические slack-конфы - а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это? Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код? Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows? Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка? Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
18. Можно ли делать игры на Ruby? Можно, но не нужно. Гем Gosu.
20. Как и где искать работу? Легко и просто - http://rubyjobs.ru/ Не так просто - https://upwork.com/ Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.
TODO лист для ньюфагов: И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь. Рекомендации: 1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии. 2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет) 3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch 4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой. Ну, а мы открываем очередной Ruby Thread.
Аноны, подумываю сменить деятельность (сейчас разработчик ХД). Не подскажете, много ли сейчас работы для ruby-погромистов? Гуглил, смотрел, читал-довольно противоречиво. Где-то говорят, что работы дохуя, а где-то, что хайп прошел, работы нет буду менять язык ко-ко-ко.
>>766953 >Что такое кофе-скрипт? CoffeeScript — скриптовый язык, транслируемый в JavaScript. CoffeeScript добавляет синтаксический сахар в духе Ruby, Python и Haskell для того, чтобы улучшить читаемость кода и уменьшить его размер. На самом деле нет.
>Что такое препроцессоры CSS? CSS preprocessors: LESS, SASS, COMPASS, TeaCSS. Расширяют CSS всякими фичами с добавлением сахара.
>>766969 — умеешь в руби (ссылка на гит с каким нибудь ненужным гемом) — умеешь в ror (еще одна ссылка, на ненужный проект уже на рельсе) — умеешь в TDD тестирование — умеешь в гемы devise, boostrap/foundation/, rpsec и прочие — умеешь пердолится в гитхаб, знаешь как свитчится между ветками, скушить коммиты и прочее. — умеешь в деплой на хероку — умеешь в верстку по psd (совсем не руби, но всем насрать)
список можно продолжать до бесконечности, что хочешь то и пиши.
>>766980 Еще забыл работу с бд указать, хз. Умение в аяксификацию, тоже было бы неплохо.
Это так самый минимум, чтобы было о чем поговорить. Ну и никто не говорит прям все нужно знать, но понимать да. И еще уметь решать задачки с помощью указанных технологий.
А если хочешь показать, что что-то знаешь то будь готов побеседовать на тему метапрограммирования в руби, orm моделей и их реализации через active-record. Ну и в таком духе.
>>766996 Не надо сравнивать джуна со школотой котора вчера прочитала про высокие зарплаты и вучила синтаксис ЯП по кодскул. Джун должен уметь работать в линуксе и командной строке, понимать базовые структуры данных и алгоритмы (сортировки, поиск).
Ну, а че в продакшен тоже надо уметь. А то читаешь какой-нибудь стаковерфлоу. Вопрос типа в продакшене на хероку пишет иррор «сикрид кей из миссед». На что придурки отвечают, добавь свой сикред кей в проект на гитхабе и норм. А другие придурки плюсуют этот ответ, да так что он в топе.
И потом сидишь и тихо плачешь, теряя последние остатки веры в человечество.
>>766996 Тащемто этот анон хорош. Умеет в линукс, не побоялся зайти на официальный irc канал и решить проблему с установкой postgres. Настроил yml, запустил приложение. Если так и дальше пойдет, то всё будет ок. Зря ты его демотивируешь.
>>766975 Спасибо,анон,а для чего это нужно? тот же кофескрипт,это просто JS обернутый в синтаксис Ruby (типа),никаких новых фич он не несет? и зачем все пишут в habl+less\sass ,если есть чистый css\html ,это помогает разработчику?
>>767006 Я, честно говоря, не понял что там у него за проблема была. Постгрес не запущен, нужно было запустить, или чо?
Уметь в линукс веб разработчику это базовый навык, как уметь в английский. Скомандовать какие-то совсем простые вещи компьютеру в терминале и уметь прочесть документацию или решение проблемы на stackoverflow.
То что анон сразу идет в irc канал со стандартной проблемой, которая (я уверен) уже описана на первых страницах гугла — вряд ли хороший показатель.
Просто я сейчас не совсем уверен, вот это >>766969 шутка или в 2016 воннаби-погромисты всерьез думают что этого достаточно для того, чтобы его взяли на любую, даже самую элементарную работу рельсоразработчика? Хоть бы railstutor прошел, кек, там дел на пару дней максимум.
>>767052 >рельсоразработчика Хуй знает, как там у вас — у рубистов. Но на должность .Net джуна меня взяли охотно. До этого я ни разу не кодил на C#. Перед собеседованием почитал чуть-чуть Хабрахабру и установил Visual Studio.
>>767054 Ну так объясни, что там за охуеть проблема была, что аж в чатик нужно было идти. В том скриншоте что он прикреплял упоминаний нет. В задаче "развернуть окружение по умолчанию" в принципе не может быть каких-то необычных проблем, все уже изъезжено вдоль и поперек. Скорее всего, сказали ему что-то вроде "у тебя постгрес не запущен, запусти постгрес".
>>767053 Ну хуй знает, может я и отстал от современных тендеций, и теперь спрос на погромистов такой, что можно вообще нихуя не знать и получить работу.
>>766405 Нужно поставить пакет postgresql-server-dev-all в Debian/Ubuntu, без него гем pg не компилируется
>>766801 Нужно поставить пакет postgresql в Debian/Ubuntu. Потом создать в БД юзера. Для этого набираем >sudo -u postgres psql и пишем: >CREATE ROLE myappname WITH LOGIN CREATEDB PASSWORD 'myappname'; Потом прописываем эти данные в config/database.yml и набираем в консоли >rake db:setup
Пиздец, парень, это всё описано в туториалах. Пишу это только потому, чтобы пресечь подобные вопросы хотя бы в этом треде.
туториалы всеравно нужно уметь читать и понимать что там пишут. Какой-нибудь Васян скачает agile web development для «профессионалов», начитается гайдов как устанавливать рельсу (sudo gem install), а потом будет трахать всем мозг, почему какой-нибудь нокогири (или другой связанный с рельсой гем) не ставится или чудно работает (спойлер: в книге ставят через судо, так не надо делать).
пока человек не научится думать, подобные проблемы будут возникать регулярно.
>>767121 А я не ставлю postgresql-server-dev-all, я ставлю libpq-dev. В чем разница хуй знает.
А по какому протоколу общаются постгрес клиент и сервер? Вопрос странный, но я просто задумался, они же по сети общаются, значит есть какой-то протокол прикладного уровня?
>>767135 > спойлер: в книге ставят через судо, так не надо делать Можешь пояснить? Типа они тогда ставятся для рута, а надо текущему юзеру ставить чтоб работало?
Бля, ебать я тупой, отписал не в том треде Короче Суп 2ч Не знаю как тут у вас, если что не насовывайте хуев Есть работа, горит дедлайн и я горю пиздец
Сделал в дешборде админки страницу чтобы добавлять в базу заинвайченных юзеров Надо как-то добавить метод мейлера на экшен по сохранению этой формы в activeadmin а я не ебу как.
Думал еще создать кастомную вьюху для эктивадмина с формой и таблицей, но так и не раздуплился с синтаксисом, потому что для глориус пехопе разработчика ето пиздец. Превентивно спс за помощь гайс
>>767404 Решил так и сделать, но чет нихуя не получается Смотри, я сгенерил контроллер и модель Но блядские обращения к контроллеру ( @invite, @invites) не работают и все оч плохо. Даже не могу понять где обосрался.
>>767392 Алсо, можешь ебануть after_create в модель юзера, который будет слать почту после его создания. А когда захочешь создавать юзеров без уведомления на почту, то просто обернешь в ActiveRecord::base.supress и все.
>>767499 > новое > DHH Но ведь DHH в не-японском руби комьюнити был с его появления, а подъехало новое поколение ступидентов с промытыми SOLID-парашей черепными коробками..
>>767135 >туториалы всеравно нужно уметь читать и понимать что там пишут. Нужно. Но туториалы описывают общий случай и не могут учесть всё проблемы, которые могут возникнут. А они возникнут, потому что могут. Так мне и сказал на официальном IRC-канале один из разработчиков СУБД. В общем, я обратился по адресу. Некоторые компоненты тянули за собой старые зависимости, а другим требовалась новые, что не так просто было понять. Особенно человеку, который впервые устанавливает PostgreSQL под Linux.
>>767538 Коллбэки и тем более этот самый сапресс - хуйня из под коня, модели выходят из под контроля из-за них, невозможно представить, что произойдет, если ты вдруг просто захотел ее создать. Это еще и затормаживает и усложняет тесты, если ты пользуешься factories. Самый толковый способ - делать всё через сервисные объекты, команды и запросы (CQRS), чтобы модель вообще ничего не знала о логике приложения. Она только отражает данные и может делать какие-нибудь простые преобразования с ними, типа отдать деньги вместо центов и валюты и т.п.
>>767642 Ну знаешь, обычно я так и пишу хуйня в том что у меня больше всего опыта на йии а тут срочно надо было сделать пару вещей на рельсах. Но обычно я так делаю из-за каргокультизма когда начитаюсь чужого кода. Херово во всем разбираться без сеньйоров, разок вылез на борду посоветоваться с пацанами Вот напрошусь на лето куда-нибудь стажироваться, тоже буду умничать
>>767647 Фигово значит, раз твой опыт тяжело портируется и зависит от инструмента. Перестань каргокультировать, почитай что-нибудь по теме, вдумайся почему так, а не иначе.
Господа, балуюсь с rails, создал модели User{id}, Admin_Rights{user_id, can_do_shit}. User has_one :admin_right Admin_right belongs_to :user Через rails console создал пользователя, дал ему права и могу делать так @user = User.find(1) @user.admin_rights.can_do_shit > 1 А вот во вьюхах не могу так сделать, пишет undefined method `can_do_shit` for nil:NilClass. Т.е. связь @user.admin_rights не работает. Ничего не понимаю, что я делаю не правильно?
>>767892 Блять пиздец вот я дибил, сука даже в консоли посмотрел что так и будет происходить и всеравно под пользователем без прав логинился и пытался что-то сделать. Сука целый уже два часа ищу в чем проблема. Спасибо.
Рубисты, поясните, можно ли использовать руби (рельсы например) для чего-нибудь сложнее landing page? Решил я давече завести себе свой github с блекджеком и шлюхами, погуглиг и нашел такую зверушку как gitlab. Так вот, бросил попытки завести этот кусок говна на бомжовой vps-ке после того как 3 гига свопа для него оказалось мало. [spolier]3 ГИГА БЛЯТЬ![/spolier]. Поставил няшный gog, который в пике жрет 25 метров памяти.
Посоны, задеплоил сайт на heroku, но там assetы не грузятся и сайт отображается не правильно. Прочитал, что можно соеденить heroku и dropbox, соединил, но всеравно сайт отображается не правильно. Как это исправить?
>>767986 Ты с хероку наебёшься ещё. Ассеты - это ещё ладно, гораздо большие проблемы будут потом. Купи лучше vps. Пять баксов в месяц - это немного. Держи рефералку. Зарегистрируешься по ней - дадут 10 баксов, на два месяца хватит, а потом сам решишь, продлевать или дальше ебаться с хероку. https://m.do.co/c/30374288c505
>>768176 Кастомная впс настраивается в две команды и её настройка абсолютно логична (если ты не спермодебил, но мы не в сишарп треде). В хостингах вроде хероку нужно осиливать и вызубривать тонную документации, которая суть есть - надстройка над впс. Какой ты нахуй серверный разработчик, если не можешь запустить сервер?
>>768182 Да тут каждый второй задаёт вопрос как на винде установить руби и рельсу, ни одного маковода или пинуксоида в тред уже давно не заносило, только школота на винде.
>>768182 Тупое ебло с гостевухой, давай настрой мне в две команды простейший сетап с лоад-балансером и 3 ВПС-ками: одна под СУБД, 2 под приложения, Как минимум с ротацией логов везде или лучше с их сбором на отдельной машине(а ты сука как думал? Когда вся эта хуйня развалится из-за того, что логами весь диск засрало, кого в жопу кочергой ебать будут?). С ежедневными и еженедельными бекапами СУБД на S3 и их ротацией. Естественно нужен редис хотя бы для sidekiq-а и шедулер, придумай там че-нить с кроном. В две команды, ебло. И попробуй только спиздануть про "нинужно", это блять самый минимум того, без чего нельзя жить в продакшне. Опционально можешь еще поебаться с графитом и собрать минимальный набор метрик и настроить хотя бы мастер-слейв репликацию.
>>768222 >не работает хероку, как починить? >подними впс, там быстро >ПОДНЯТЬ ТРИ ВПС И НАСТРОИТЬ КУЧУ СОФТА ЭТО БЫСТРО? >при чем тут три впс и куча софта? Я говорю об одной вместо хероку >Хуясно Вся суть треда.
>>768236 > сисодмин-эникейщик Это ты про свитера, который предлагает разворачивать всю инфраструру на коленке вместо того, чтобы воспользоваться готовым решением от хероку?
Можно инвестировать час своего времени, зато потом платить 5 баксов в месяц, а не 50. Т. е. уже после первого месяца у нас выгода. Умножаем на 100, и...
>>768251 Это я про дивана, который для тестовой визитки хотел поднять три сервера. >всю инфраструру Установка рельсов - это пара команд, а на выходе получится та же хероку, только без ограничений/оплаты.
Какого хуя может вдруг наебнуться рельсовое приложение? В частности, наебнуться доступ к БД?
У всех остальных частей системы все работает. Сервер БД тоже ессно работает, доступен без SSL. Как из других частей системы, так и из pgAdmin. Авторизация md5, логин и пароль верные.
I, [2016-06-13T07:33:36.658041 #14318] INFO -- : Refreshing Gem list I, [2016-06-13T07:33:38.624647 #14318] INFO -- : listening on addr=127.0.0.1:8080 fd=9 E, [2016-06-13T07:33:38.627656 #14318] ERROR -- : could not connect to server: Connection refused Is the server running on host "172.31.8.138" and accepting TCP/IP connections on port 5432? (PG::ConnectionBad)
>>768514 Да нет никаких файрволов, это интрасеть в EC2, все на Ubuntu 16.04.
Сервер БД доступен, к нему можно законнектиться с тачки где рельсы стоят, даже например по телнету. Типа через telnet 172.31.8.138 5432
Наебнулось оно ВНЕЗАПНО. Рельсовые разработчики в отпуске(есть подозрение что перед ним какой-нибудь ебанутый гем задеплоили и он все сломал). Я вообще на C# пишу, и немного девопсю, и на соседних тачках мой сервер отлично с БД работает.
>>768521 >Сервер БД доступен, к нему можно законнектиться с тачки где рельсы стоят Может в рельсах неправильный URL в конфиге указан? Смотри config/database.yml >ПРОДАКШН, КЛИЕНТЫ ЖАЛУЮТСЯ В staging ваши разработчики не умеют?
>>768531 >Может в рельсах неправильный URL в конфиге указан? Смотри config/database.yml А, сорь, теперь увидел, что >>768497 >E, [2016-06-13T07:33:38.627656 #14318] ERROR -- : could not connect to server: Connection refused >Is the server running on host "172.31.8.138" and accepting >TCP/IP connections on port 5432? >(PG::ConnectionBad)
>>768813 5 раз проверил, все работает еще раз. Даже телнетом законнектиться к БД можно.
Стейджинг вообще на левом хосте у рубистов самих, у них там на одной коробке все.
Я смотрел логи БД, она говорит, клиент сбрасывает соединение, не закончив передачу ээ рукопожатия при коннекте.
>>768533 Там вариант про юникс сокеты и все-на-одной-коробке, это не про нас.
Короче ебаные рельсы, заебался. Ждем пока кто-нибудь из этих рубистов подтянется.
Вот блядь ни разу с такой хуетой не сталкивался на дотнете да или даже на похапе. А в рельсах даже хуй поймешь где искать. Пиздец просто. Ебаные хипстеры криворукие.
Error: psql: could not connect to server: Connection refused Is the server running on host "192.168.0.1" and accepting TCP/IP connections on port 5432? Common Cause: The postmaster or PostgreSQL's server daemon process is not running or configured incorrectly.
When you receive this error most of the time it is due to not having PostgreSQL configured to allow TCP/IP connections or at least not connections from your particular workstation. If you have verified that postmaster is indeed running on the host you are trying to connect to then here is a list of common causes to this problem:
postgresql.conf not setup to allow TCP/IP connections. You'll want to look at the listen_address configuration parameter. postgresql.conf is not setup to allow connections on a non-standard port number. To determine this look at the port configuration option. authentication rules in PostgreSQL's access configuration file (pg_hba.conf) are not setup to allow either your uses or IP address to connect to that database. See the official documentation for more information on setting up your pg_hba.conf properly. ensure that there are no firewalls, such as iptables that are keeping your local system from even establishing a connection to the remote host
>>769672 мне недавно рубисты сломали судо при деплое через ansible. а еще юникорн жрет ебаные 500 мегов при старте. а еще на какой-то хуй нужен намейкинсталленный редис, и сайдкик.
ASP.NET WebAPI приложение, при этом, деплоится в один клик в студии/однострочник в powershell, жрет на порядки меньше, и работает на порядки быстрее, и там всего этого левого говна почему-то не надо.
>>769674 >однострочник в powershell >деплоится На IIS небось деплоится, спермораб? Рельсы может и говно, но об спермотехнологии шквариться это уже совсем никуда не годится.
На го надо перекатываться, хуй знает какие еще варианты.
>>769675 Допустим на IIS деплоится. Но IIS это нормальный такой сервер.
У вас там в прыщеблядинске есть тот же nginx, только почему-то ебанутые рубиблядки его не используют по назначению, а пидорасят свои unicorn и прочее непонятно зачем нужное говно.
>>769678 Почему тогда похапебляди его используют правильно и по назначению?
В AWS статика вообще-то в CloudFront лежит. А для load balancing там вообще ELB.
Вопрос почему не использовать nginx как веб-сервер или наоборот, только unicorn? Вопрос зачем вообще нужен unicorn? Вопросы риторические. Ответ - потому что ебанаты.
>>769683 Процесс разработки чего? Go удобен для всяких утилит небольших - оттуда берем, здесь парсим и умножаем на 2, туда кидаем. В любом хозяйстве такие требуются часто, и джуниорам можно поручить - не сишечка, и слишком уж сильно тормозить не будет - не руби-перл-питон-пехапе.
>>769712 Чтоб он мог для рельсовика заменить рельсы, ему нужны свои рельсы, только на го. Но так как большинству людей непонятно нахрена это делать, когда рельсы уже есть, то серьезных попыток сделать на го что-то похожее на рельсы не предпринимается. Что предпринимается более или менее всерьез - это попытки сделать какие-то аналоги синатры или других более легких фреймворков, но это история совсем другая.
>>769714 > то серьезных попыток сделать на го что-то похожее на рельсы не предпринимается Во всех языках давно уже есть рельсы: Python/Django, PHP/Laravel, C#/ASP.NET MVC, Java/Spring, Play.
>>769677 >У вас там в прыщеблядинске есть тот же nginx, только почему-то ебанутые рубиблядки его не используют по назначению, а пидорасят свои unicorn и прочее непонятно зачем нужное говно. Тупой? Реверс прокси и сервер для статики отличаешь от сервера приложений?
Unicorn говно, как я выше написал, сейчас есть Puma - лёгкая, многопоточная.
>>770014 >это я тебе как дотнетчик говорю Если у вас в спермомирке и принято мешать всё в один огромный продукт, то это не значит, что все так должны делать.
Если бы ты хоть немного вник в разницу, то понял бы, что у nginx и сервера приложений принципиально разные задачи. Современный сервер приложений держит и спавнит воркеры (и в виде процессов, и в виде потоков) с учётом особенностей среды выполнения. Например, руби и рельсы хорошо используют copy-on-write, поэтому там просто fork. Также он держит загруженной среду исполнения, потому что загрузка рельс с нуля длится несколько секунд и делать это на каждый запрос невозможно.
Алсо, именно из-за fork'а под виндой не используют Puma, а только Unicorn и прочее устаревшее говно.
>>770017 >Алсо, именно из-за fork'а под виндой не используют Puma, а только Unicorn и прочее устаревшее говно. А, вру, Unicorn тоже не работает под виндой.
>>770017 >Алсо, именно из-за fork'а под виндой не используют Puma И снова вру, Puma как раз используется под виндой (видимо в однопроцессном режиме, только на потоках)
>>770023 На винде вообще никто не использует рельсы. Там все пишут на ASP.NET MVC/Web API, который изначально был клоном рельс, а сейчас уже далеко их обошел.
>>770017 >у nginx и сервера приложений принципиально разные задачи Тем не менее nginx тоже может быть аппсервером, если к нему приложить ngx_lua, например.
>>770014 Если ты не понимаешь что твой IIS, к которому ты приделываешь нет-сборочки своего шарпо-говнокода это аппсервер (ничем не отличающийся принципиально от апача с модперлом) - это твои дотнетопроблемы
>>770095 Друзья не позволяют друзьям использовать Internet Explorer (а также IIS). Ты можешь сколько угодно доказывать тут преимущества IIS, но никто в мире его всё равно не использует: потому что вендорлок, медленный, закрытый, нерасширяемый (только в пределах допустимых самой мс), виндовой (боже мой, 2016 год, никто винду на сервера и в страшном сне не поставит кроме рашки-парашки конечно).
>>770101 Чета только мое приложение на ASP.NET работает на порядки быстрее чем прыщеблядинские скриптоподелия. А также, отлаживается легче, конфигурируется и т.п.
>>770104 Не слышал, а что там в IBM, завели стайку серверов по заказу МС для рекламы IIS, как это было с HPC из top500, который никто не использовал толком?
>>770105 Небось ещё и само себя пишет, член тебе полирует и спать укладывает?
>>770106 Ну как бы IBM более 60 процентов профита делает с софта и прочих околоплюшек, а не железок, как ты мог подумать. А то, что ты не слышал об этом софте, как бы намекает, на его охуительность вообщем.
>>770111 При том что весь энтерпрайз сектор микрософта это максимум 5 часть от того, что имеет IBM. При всем этом ты даже не слышал, что они делают софт(у них тоже есть свой IIS личной реализацией рантайма), чтобы почитать документацию на это, нужно оплатить лицензию, т.е. человек с улицы на вакансию по девелопу под этот софт и платформы просто не сможет попасть. Есть куча спецов внутри IBM они имеют спец отдел аутсорсинга, который помогает тупым людям, кто купил их софт его настроить и под него писать проги. Микрософт гавно не спорю, но любой чел с улицы разберется как писать веб апы под IIS, потомучто полно инфы в инете. А вот если я тебе за Датастэйдж посажу, ты в нем увязнешь и помрешь, этот софт не заводится своими собственными силами, он напсан для того чтобы ты потом пришел к ним и заплатил за уроки и консультации. Вот что такое вендорлок.
>>770101 IIS-экосистема на серверсайде используется достаточно широко. Это в основном интранеты в больших и средних компаниях - SharePoint, MS SQL Server и ASP.NET. Аппсервером IIS, конечно. У взрослых еще MSMQ и MTS. IIS быстрый, даже очень. Часть его хуярит в ядре, например. Но это, конечно, не главное в его выборе, главное экосистема и то что все друг к другу хорошо притерто и среднетупой макак мышкой навозюкает что-то более-менее работающее за приемлемое время.
Из highload энторнет-сайтов на этом работает StackOverflow - да, с MS SQL Server в том числе.
>>770119 Энтерпрайз сектор MS и IBM сравнивать некорректно, они почти не пересекаются. Во-первых, IBM почти все свои деньги зарабатывает на консалтинге, а совсем не на софте и железе. Софт и железо обычно идет в комплекте тоже, но составляет единицы процентов от суммы контракта. Во-вторых, IBM это верх энтерпрайза, MS - середина и низ.
>>770119 Т.е. сначала сам доказывал, IIS норм, а теперь говоришь обратное? Ну ок. То что IBM творит мерзости не оправдывает майкрософт. Да, дела так сложились, софт закупают идиоты которых окучивает МС и втюхивает им свой «софт». Тут много всяких причин, тупость, привычка, нежелание держать высококвалифицированных сотрудников. Вкладываясь в МС ты всегда должен быть готов выкладывать кучу бабла каждый год и к увольнению, потмоу что разработка софта перестала быть приоритетным направлением и теперь твою работу буту выполнять специалисты из солнечного бангалора.
>>770121 Про среднего макака написал выше. Выгодно работодателю, не выгодно работнику, а здесь больше форум работников. >Из highload энторнет-сайтов на этом работает StackOverflow - да, с MS SQL Server в том числе. Стаки сами писали, что знаю о том что это не самое оптимальное решение и работают по привычке, а не потому, что это самое лучшее решение. Неизвестно сколько человеко-часов было бы сэкономлено, если бы они выбрали другие технологии. Основной доход МС это лицензии на офис, все остальные направления убыточны.
>>770123 Во-первых, разговор про вендор лок, IIS типа вендорлок, сказал анон. Я на примере обьяснил что такое на самом деле вендор лок. Консалтинга не было бы если бы IBM сделал нормальный софт, который можно было бы юзать без консультантов. Но это их стратегия, такчто софт здесь как раз основной источник доходов, и это и есть вендорлок. Потомучто когда тебе потребуется, что то расширить к твоему IBM софту, к тиебе придут консультанты и скажут, что нужен вот этот продукт от IBM остальное не заведется, и так по кругу.
>>770126 Есть спецы, а есть сертифицированные специалисты, это две разных стязи. Вендору выгодно, чтобы сертифицированных было больше, он за них деньги получает. Микрософт идет на встречу спецам более менее, для IBM это до сих пор нелюди.
>>770132 Что касается самого заказчика, он не дурак и понимает куда лезет когда заключает контракты на консалтинг с этими гигантами. Но фишка в том, что, как правило, лобист решений и конченый человек, кто выбрал решение это обычный пордакт менеджер который захотел прикрыть свою жопу и всегда иметь возможность скинуть все на вендора если будет срыв проекта. На одного спеца все сложно скинуть, ведь он его нанял, а тут целый вендор подставил. Ну еще бывает банальный распил как опция.
>>770132 Единственная выгода для вендора это лок на него, так что спец убивший время на сертификацию конечно выгоден, потому он не пойдёт учить что-то другое, кушать-то тоже хочется. Спецы, как я понял это независимые специалисты, которые тем или иным образом работают с продуктом так? Вот что-то не кажется мне что МС идёт на встречу спецам, потому что тогда бы они помогали разработчикам того же вайна или чувакам которые хотели портировать сильверлайт на линукс. Идти на встречу спецам для МС означает хоронить свой бизнес основанный на дойке лицензий на офис и винду, с корпоративных заказчиков.
>>770140 Продукты МС покупают как раз таки только для распила, на тех же линуксах, попилы куда менее рыбные.
>>770146 Ну я сужу по количеству доступной инфы в инете, по Шэйрпоинту или IIS или эксчендж серверу(это между прочим все, часть мидл инфрастрктуры любого гигансткого энтерпрайза) я найду кучу дискусси по множеству известный проблем. Для пидорасов локеров, я найду максимум официальную отписку в стиле, да эта мы знаем про эту хуйню, вот симптомы, решения - наш новый патч. Ниаких решений на текущую версию платформ. Вот тебе и разница. А специалисты, они , по большому счету в той же ситуации что и спецы, потомучто все их курсы, которые они проходили, подготовлены также на отьебись, как и все это ПО.
>>770146 Спецы это не те кто разрабатывает конкурирущее ПО, в данном контексте - это люди, кто работает с их платформами, чтобы сделать ПО для предприятия, где они работают. Такчто не вижу причин не идти им навстречу.
Отвечу рубиблядку-анимешнику(вот почему эти две вещи так связаны часто? какой-то сдвиг в голове), потому что МИНЯАЖТРИСЕТ с этого школьника.
Я специалист под винду, и в частности, под ASP.NET MVC. И скажу - что такой удобной инфраструктуры для разработчика, такой качественной, и интегрированной друг с другом, и при этом доступной(дада, сейчас даже студия уже community и бесплатна. уж не говорю про документацию - от MSDN до SO) - на прыщеблядстве никогда блядь не было.
Выбор в сторону экосистемы .NET я сделал осознанно и по нескольким причинам - это, во-первых, востребованность, во-вторых удобство(от C#, мегаприкольного языка, по мне так лучшего из мейнстримных, до интеграции всего и вся), в третьих, документация, в четвертых, вменяемость(деплой например, в ебаном руби это всегда анальная боль, в отличие от), в четвертых, уровень коллег в целом и среднем выше, чем на прыщеблядстве(пыхомакаки, рубиобезьяны, и ноджсчернь - заебали на текущем проекте вон уже).
При этом, я, как выше писал, прыщеблядство вполне себе знаю, и часто в роли девопса выступаю. Начинал в свое время с пыха фрилансить, трогал и руби(даже полгода на нем работал, давно правда еще, рельсы были 2е), питон знаю, итд. Жабу тоже знаю, но от нее АЖТРИСЕТ - до чего там все блядь просто как будто специально неудобно сделано(ну есть скала и кложа, но это уровень хипстотной черни похуже рубироидноноджсной).
Какой медленный IIS? Да он один блядь из самых быстрых серверов. Какой вендорлок? В чем он блять проявляется? Не больше там вендорлок чем у тебя, пыхорубимакаки, на прыщеблядикс(в остальных местах эта гнойная масса просто не работает нормально).
Вобщем, АЖТРИСЕТ, что от бреда который от несет, что от блевотных онемешных картинок.
>>770177 П.С. дотнет среду я не защищаю аж тресет бля. Просто, я за то что с чем придется столкнутся на серьезной работе, где платят реальные бабки, чтобы не сосать хуй, а жить. И руби там нет. Есть асп, есть джава, иногда питон для девопсов, сиквел. Остальное игнорится. такчто решайте сами, бог вам свидетель.
>>770163 >Спецы это не те кто разрабатывает конкурирущее ПО, в данном контексте - это люди, кто работает с их платформами, чтобы сделать ПО для предприятия, где они работают. Такчто не вижу причин не идти им навстречу. А ну то есть просто программисты 1С, понятно-понятно. Вы дотнетчики с ними за руку ходите.
>>770176 Ой-ой, у нас тут get the facts стучатся из склепа, божешки. >Какой медленный IIS? Да он один блядь из самых быстрых серверов. Какой вендорлок? В чем он блять проявляется? Не больше там вендорлок чем у тебя, пыхорубимакаки, на прыщеблядикс(в остальных местах эта гнойная масса просто не работает нормально). За прыщеблядикс тебе не нужно платить, ты можешь свободно выкидывать любые компонентыи настраивать под свой проект >При этом, я, как выше писал, прыщеблядство вполне себе знаю Ага, убунта в путти, тут вас много таких) * >Отвечу рубиблядку-анимешнику(вот почему эти две вещи так связаны часто? какой-то сдвиг в голове), потому что МИНЯАЖТРИСЕТ с этого школьника. Это же как так получилось что на анимешном форуме да водятся анимешники, тайна сия великая есть! Проггеры на других языках конечно же смотрят только картины в третьяковке. Олсо, если тебе так хорошо в своём дотнете, то чего тебя сюда занесло? Сидел бы в своём закончике для вендомакак, ходил бы к друзьям 1Сникам в тред и радовался жизни, но нет ведь решил сюда зайти)))
>>770180 >>А ну то есть просто программисты 1С, понятно-понятно. Вы дотнетчики с ними за руку ходите.
Ты на своем руби думаешь больше прикладнухи делаешь чем обычный говно разработчик на 1с? Я сомневаюсь. Они все те же задачи рещают. Такчто у тебя, мой друг, тоже платформа, хоть обосрись.
>>770180 >За прыщеблядикс тебе не нужно платить, ты можешь свободно выкидывать любые компонентыи настраивать под свой проект Ага, блядь, тут настроим RVM, которая с текущим либц несовместима, там - в /usr/local намейкинсталлим. В продашкне все наебнется - но зато ведь НАСТРАИВАТЬМОЖНА
>Ага, убунта в путти, тут вас много таких) Я для пыхомакак однажды обновил бабуин с 4го до 7го, что стоило много усилий и знаний.
Анимешный форум это в /a, свали туда.
А зашел потому что мне продакшн сломали рубибляди тупые, выше писал.
>>770179 По моему ты бака. Ну так и говорил про это сразу, всем понятно что в россии сейчас есть только пыха, 1с, шарп. Но это не значит, что нужно остановиться в развитии и вариться в чане с аспом.
>>770181 Ага, только редактор можно выбрать, ОС, систему сборки, разбить по файлам, использовать систему контроля версий, любую базу данных.
>>770182 >Ага, блядь, тут настроим RVM, которая с текущим либц несовместима, там - в /usr/local намейкинсталлим. В продашкне все наебнется - но зато ведь НАСТРАИВАТЬМОЖНА При установке rvm ничего не мейкинсталлится) Конечно если ты не делаешь системвайд установку, но так никто не делает. >Я для пыхомакак однажды обновил бабуин с 4го до 7го, что стоило много усилий и знаний. Воу, да ты герой, пошевелил аж двумя извилинами! >Анимешный форум это в /a, свали туда. И туда тоже)))) >А зашел потому что мне продакшн сломали рубибляди тупые, выше писал. Сам виноват, если пускаешь в продакшен кого попала, всё таки люди из экосистемы МС необучаемые бараны, спасибо за очередное подтверждение.
>>770180 >>>За прыщеблядикс тебе не нужно платить, ты можешь свободно выкидывать любые компонентыи настраивать под свой проект
На крупных проектах это доступно богам типа амазона, они имеют ресурсы это сделать, ты со своим хэлоуворлдом пока помолчи. И остальной энтерпрайхи пока тоже помолчат, и будут юзать готовые платформы от сраных вендоров, потомучто инчае не могут.
>>770185 Какая экосистема МС? Экосистема МС у нас отлично и стабильно работает(это ядро системы вообще), и деплоится причем вообще без проблем, и горизонтально масштабируется в auto-scaling группе AWS.
А сломали свое говно патентованные прыщеблядки как раз, линупс иксперты в третьем поколении, с протекшим рубироидным шифером. Им одну коробку дали, огороженную, так они ее умудрились нахуй сломать.
>>770182 >для пыхомакак однажды обновил бабуин с 4го до 7го, что стоило много усилий и знаний Ничосе, вот это мэдскиллз! Небось еще и соседу шиндошс переустанавливал?
>уж не говорю про документацию - от MSDN до SO >MSDN >буквы, написанные депрессивными роботами-аутистами из майкрософт, отдаленно напоминающие документацию
Безотносительно рельс, боль спермораба понятна. С таким резюме (спец по спермотехнологиям, девопс уровня обновлял убунту) путь за пределы сперморабста закрыт. Вендор лок.
>>770275 Ты попробуй обнови, на живом продакшне который держит тыщи реквестов в секунду, это говно, и не сломай. Потом пизди, кукаретик лендингостроительства
Ну тут всё понятно. Шарпер правильно пояснил - есть спецы, а есть "сертифицированные специалисты". Но кое в чём он ошибся. Он говорит, что уровень знаний его коллег выше, чем у типичной руби-макаки. Вот только это уровень знаний в ограниченной экосистеме (если фича не реализована в продукте, то нужно пердолиться на низком уровне работы фреймворка, а это выходит за пределы знаний обычного разработчика), и в рассчёте на поддержку. Я согласен, что для некоторой части энтерпрайза это удобней, нежели как-то самостоятельно выявлять хороших спецов среди тех, кто приходит на их вакансии. Но если вы таки нашли Руби-программиста, который действительно шарит, то для него почти нет невозможных задач. Хотя бы потому, что в мире FOSS нет "стандартов на знания", нет списка, что нужно выучить, чтобы быть сеньёром за 100500к. Не беря в рассчёт обычных макак, которых полно и в руби, и в ноде, и в асп, нормальный спец в руби гораздо больше заинтересован в саморазвитии, нежели спец в проприетарной технологии.
Я не хочу поддерживать спор "RoR vs ASP.NET" или "фреймфорк А против фреймворка Б", но я однозначно за открытые технологии по озвученной мной причине.
А по поводу качества хипстерокода (упоминалось где-то в обсуждении) - ну нехуй подключать хипстерогемы. Я, например, сравнивая гемы, иногда отдаю предпочтение менее удобному на первый взгляд, но обладающему более высоким качеством кода и лучше развивающемуся.
>>770346 Лол. Рубимакакинг это как раз про стандарт на знания. Рельсы, ActiveSupport, пердолики.
А про невозможные задачи - ну например такая задача - не использовать ActiveRecord вообще, и с базой работать самостоятельно. Всякий там PostGIS использовать, сложные запросы и прочее. Вперед.
BTW: .NET - Открытая технология, как рантайм дотнета, так и стандартная библиотека, так и ASP.NET весь. Пруфы на гитхабе - коммить не хочу.
>>770433 >А про невозможные задачи - ну например такая задача - не использовать ActiveRecord вообще, и с базой работать самостоятельно. Всякий там PostGIS использовать, сложные запросы и прочее. Вперед.
Есть sequel и он охуенен. Хотя интеграция с postgis есть и для AR, писать сложные запросы на чистом sql тоже в AR никто не запрещает.
>>770433 > утверждает, что шарпоблядь и вообще белый человек > на работе обновляет шубунту и поддерживает чужой быдлокод на похапе и руби Пшел вон отсюда, свитерок вонючий.
Сделал сборку из контейнеров для девелоперской среды - то есть описал все сервисы в docker-compose.yml и примонтировал директории проектов (в т.ч. рельсового) как вольюмы. То есть я могу запустить docker-compose up и все запускается - база, рельса, нода и др приблуды. Но блять оказалось, что не работает хот релоад. То есть сервер не видит изменений в коде, его нужно перезапускать. Проверил - директории моунтятся, изменения в докере видны, время обновления файлов актуальное, но блять хот релоада нет. Я не могу понять в чем дело, как так, ведь полноценная среда в контейнерах запускается. Грешу на докер-машину (ибо на маке все это), но какая блять разница, если все синхронизировано.
Помогайте, что это за хрень. Очень классная идея херится - кросплатформенный запуск всего окружения одной командой.
>>770128 Что тебе мешает использовать, например DB2 или MQ без консультантов? Red book не можешь осилить? У IBM всегда была и есть одна из самых лучших документаций во всей индустрии. Консультанты нужны по одной причине - типичный макако-штат разработчиков, имеющийся в типичной организации обладает крайне низкой квалификацией и нулевой способностью осваивать новые знания. И нежеланием это делать. Но опытные консультанты даже таких макак умеют за короткое время надрессировать так, что те не только смогут поддерживать внедренное решение, но и даже принять участие в его разработке. На уровне "сходи в бытовку, принеси лопату", но без консультантов для них и это недостижимый уровень.
>>770456 Нету пока, иначе сразу нашёл бы сорцы. Я тоже пять минут посидел в гугле, все ссылки ведут на оригинальную новость, и всё. Не факт, что вообще собираются что-то открывать, на этом же деньги можно зарабатывать. Может вообще использовать и открывать не будут. Если новостей больше не будет, попробуй написать письмо кому-нибудь (хз кому).
Пишу блог на rails. Как сделать в этом шаблоне http://bootstrap-3.ru/examples/blog/ блог Archives. В yii2 я бы сделал через widget. Как правильнее делается в rails? Через yield(:archives) и в каждой вьюхе засовывать туда переменные , не очень хочется
>>770767 Простейший вариант - partial view и before_action в контроллерах. >в каждой вьюхе засовывать туда переменные Ты о чём? Шаблоны не должны содержать логику.
Аноны,а тесты для джуниора на codility это вообще нормально? вчера дали тес на 4 таска,успел сделать 1,спустя 10 минут после истечения таймера сделал еще 2.
>>771827 С выводом проблем нет. Проблема в дубле кода. Этот блок может быть , а может и не быть на странице. Допустим этот кусок может появиться на выводе всех статей и на статической странице типа about. А когда провалишься в саму статью его не должно быть
>>771875 > Допустим этот кусок может появиться на выводе всех статей и на статической странице типа about. А когда провалишься в саму статью его не должно быть
Партиал ебни. Поток к нему обращайся через рендер, где надо.
>>771892 >Партиал ебни. Поток к нему обращайся через рендер, где надо. Ты же понимаешь, что у чувака типичная рельсопроблема, связанная с тем, что в рельсах не совсем MVC - как таковых вьюх, которые подготавливали бы среду для рендеринга партиала (в данном случае @archives). в рельсах нет.
>>771901 Сколько раз уже вижу этот trailblazer (в основном в ру-комьюнити), с одной стороны и хочется попробовать (и еще захотеть), но блять, чуть больше чем нихуя коммитов и контрибьюторов, им кто-то вообще пользуется? И не так, круд и бложик, а нормальный продакшен?
>>772121 Cells и reform вполне годные и популярные, operation тоже выглядит неплохо, но по-моему проще свой велосипед вместо него запилить, остальные части trailbalzer не нужны.
>>773650 Я там недавно видел перлошизика с 80 баксами. Ставка в профиле - это не реальная ставка, а желаемая, обычно в несколько раз выше реальной. Суть проста - ставишь 15, предлагаешь заказчику 10, соглашаешься на 8.
Аноны,есть сервисы где можно джуну проверить свои знания, что бы можно было уверенней ходить на собеседования? Вот например я : Знаю html+css, bootstrap. Умею ненмого в RoR и нормально в sinatra по алгоритмам слабо подкован,но везде говорят,что это нахуй уже никому не нужно есть профиль на гитхабе,даже не пустой. естественно heroku+git, linux(mint) с JS знаком на уровне JQuery Что меня спросят на собеседовании? На что мне нужно сделать упор в плане обучения(списываюсь с анонами уже полгода,я тот чел,который хочет уехать в мае 2017 в мск или дс2)
>>775005 Не слушай долбоебов, алгоритмы нужны, но пока не тебе - тебе надо фреймворки додрочить и уметь круды шлепать сейчас. Пройди тест на апворке (правда хуита устарелая), проходи все подряд интервью, смотри вон публичные собеседования с хекслета, и что-нибудь получится.
>>775418 Не надоело? Шизик здесь только ты. Ты можешь перевести стрелки, но это ничего не изменит. Ты можешь сказать что мой пост сочится бугуртом, но это тоже ничего не изменит. Потому что все мы знаем, что это есть почерк тупорылого хуесоса-шизика. Ты не можешь в спор, не можешь в аргументы, не можешь в мэдскилзы, не можешь в пасты. Все твое оружие это мелкобуквенные йоба-высеры вроде: ололо у тебя баттхерт, карочи все кто против миня шизики. Ты уныл как Дима Билан в период беременности. Непрошибаемый тупой пидор, который даже не может толком обозначить свою позицию. Чего ты хочешь? Тебе нравится внимание? Нравится когда тебя кормят говном? Шизоид. Тебе никогда не избавиться от этого клейма. Кинул кирпичом в дегенерата.
>>773706 >перлошизика с 80 баксами Ты знаешь людей, с большим опытом перла, способных разобраться, поддерживать, дописывать и менйтейнить перловый легаси-код любой степени уебищности - которые будут работать за миску риса?
Мне нужна модель только для чтения данных из таблицы. Ни один метод этой модели не должен иметь возможности изменить данные. Можно ли каким-то образом установить это ограничие вроде "таблица только для чтения"?
>>777201 Да, ты прав. В декораторы захуярю sql запросов. Та и с activeadmin повеселюсь, не буду делать через .register Сделаю register_page и сам всё кастомизирую. А то все слишком изично, рельсы слишком легкие, посоны засмеют же.
Есть линк_то, надо подвесить джаба-кофе-скрит, но чёт нехочет. Во всяких гайдах рекомендуют вешать в респонд_ту обработчик на джаву, и бахать каллбеки на евенты в filename.js.erb, но это для контроллеров. Вопрос, как без котроллера заставить скрипт завестись по клику на линк-ту ссылочку. Есть стаковерфлоу, но ихний код не работает, да и вообще там много говна, научат еще бездуховно программировать, а мне так не надо.
Спасибо анон.
p.s. Есть рабочий вариант, вставлять джава скрипты прямо в агрументы линк_ту (т.е. через хеш параметров с обработчиком онклик и кодом на него), но, говорят, это плохо.
>>778947 Ты сам-то понял, что ты хочешь? Нормально сформулируй, мы тут не экстрасенсы.
У меня приложение простое, и я делаю просто - Paloma вызывает JS-код при загрузке страницы, а там я уже с помощью jQuery вешаю все коллбеки. link_to просто имеют html id и ссылаются на '#'
Есть ли какие книги, которые можно читать, но чтобы не надо было сразу пробовать на практике написанное? Что-то типа Data Modeling Essentials, 3rd Edition | Graeme Simsion, но по рубям?
Я так понял, тебе нужна теория? Так почитай что-нибудь общее, не по конкретному ЯП. На Руби многие концепции ООП переносятся очень хорошо, разве что зачастую упрощаются за счёт динамичности и метапрограммирования.
>>779797 Полна шапка книг. Попробуй Practical Object-Oriented Design in Ruby. Я сам её не читал, но пишет Сэнди Метз, видел её выступления и статьи, она шарит.
Шалом. Подскажите, как можно реализовать следующее: Есть у меня, к примеру, модель Message И в данный момент в этой модели есть 4 столбца для прикрепленных файлов. Но мне так не нравится, совсем. Для загрузки файлов использую carrierwave.
Моя идея в том, чтоб добавить ещё одну модель, например, Uploaded. Сделать отношение many to many к Message.
Так вот сам вопрос, как мне это всё организовать с помощью carrierwave? Их аплоадер позволяет загружать файл и записывать его название в колоночку, это хорошо, НО. Как мне сделать так, чтоб загружалось несколько файлов в соответствии айди какому-то сообщению.
Снова всем доброго дня,Аноны! перекатывающийся_в_ДС1.2_кун на связи
Сейчас варю два своих проекта,один из них простенький онлайн магазин,второй блог(этот уже под мои нужды),блог собираюсь переносить до конца лета на heroku ,есть все исходники по обоим проектам на гит хаб ,ежедневно заливаю новые фишки туда. Блог построен на RoR+PostgreSQL,в качестве верстки два фрэйморвка bootstrap + material design. JS я знаю на урвоне JQuery, поэтому всяких фич на фронтэнд не завез. Работаю на linux mint с гит работаю через терминал. Так вот,вопросы к мудрым анонам 1)насколько два моих проекта будут смотреться в глазах работодателя? Это норм проекты для джуна или зашквар? 2)насколько критично сейчас дрочить кофескрипт и всякие ангуляры с реактом? 3)Могу ли я пок пройти без препроцессоров и если нет на 2 и 3 вопрос,то как это лучше выучить,без гикования. 4)какие еще скиллы подятнуть?
>>781002 1. 80%, что их никто даже не посмотрит, зато получишь опыт. 2. Надо 3. Это элементарные вещи, учатся за пару вечеров в бою. 4. Учись правильно программировать, а не задрачивай технология_неймы.
>>781023 а вот что именно для боевого опыта прикрутить на блог из ангуляра или реакта? И я видел конвертеры из html to haml, насколько реально перенести проект на haml с помощью этого и от этого дальше разбираться?
Кстати насчёт прикрутить на блог ангуляр, как можно ангуляром получить вложенный ресурс типа /posts/:post_id/comments ? Почему-то не работает $routeParams, видимо из-за кривого роутинга или ng-view. http://pastebin.com/BKBn6pWR
>>766884 (OP) Рубаны, подскажите вот что по автолодингу ModuleOneName::ModuleTwoName::Constant доступно автоматически, только если я не подгружаю через require_dependency 'module_one_name/module_two_name/module_tree_name' Это особенность третьей рельсы или я что-то не так делаю?
>>780615 >Uploaded Лучше MessageAttachment >Как мне сделать так, чтоб загружалось несколько файлов в соответствии айди какому-то сообщению. Это не задача аплоалера, а бизнес-логика. Советую вынести её в сервисный объект, который, например, будет принимать текст сообщения и форму с файлами и реализовывать всю логику. Не советую делать это в коллбеке модели или в модели вообще (толстые модели в больших приложениях почти так же плохо, как толстые контроллеры). >>781060 >а вот что именно для боевого опыта прикрутить на блог из ангуляра или реакта? Первый ангуляр - это 90% заказов по фронту на апворке и. думаю, 90% работы по фронту в офлайне (в офисе). Бизнес не любит новое, бизнес любит проверенные временем решения. >И я видел конвертеры из html to haml, насколько реально перенести проект на haml с помощью этого и от этого дальше разбираться? HAML знать надо бы, но не думаю, что есть смысл переносить существующий код ERB в HAML. Просто на новом проекте сразу бери HAML. Кстати, это вкусовщина на самом деле, многим не нравится такой сахар, предпочитают ERB. >>781093 >Это особенность третьей рельсы или я что-то не так делаю? Хз, у меня в рельсе 4.2 вообще всё из папки app/ автоматически грузится.
Привет, рубисты. Скажите, легко ли вкатиться в руби после 2х лет разработки на джаве? Джава сейчас потиху проседает, а на след курсе в уни у меня будет спецкурс "Программирование на Ruby", вот я подумываю начать задрачивать их чтобы на работе, если джава просядет, перепрыгнуть туда.
>>781612 >Нахер эти руби, у них непонятное будущее Будущее у руби очень понятное. Уголки где нужно быстро на коленке склепать небольшую вебню. Конкурирует с пистоно-джангой и пэхапе, все трое быстро вытесняются из этой ниши джаваскриптерами с NodeJS.
>>781612 >Куда проседает? В моей компании мой проект - один из последних проектов на джаве. Большинство джавистов пересаживаютс на JS. Я JS выучил, но считаю его как запасным аэродромом и не очень его люблю.. А руби будут в универе преподавать. Хотелось бы попробовать.
>>781620 Ой, не смеши нода из говна и палок уже ничего не вытеснит. А будущее непонятное, потому что некоторые другие уже наступают на пятки в деле быстрого прототипирования, но с куда большей производительностью, а руби находятся в неопределенном состоянии, где с одной стороны запиливают сапрессы, а с другой недосранные фреймворки торчат с туманным будущим. Вот почему.
>>781636 Твоя компания - жертва хайпа, но скорее всего просто экономит деньги, а в принципе ей все равно на чем там будет написано. Язык выучить не проблема, когда уже работаешь, не знаю зачем тут спрашивать. И если есть курс - ты разве можешь его избежать?
Не знаю, почему все так хейтят аутсорс. Комфортные условия работы, ОЧЕНЬ свободный график работы (могу пояснить точнее), высокие зп, куча бонусов. Дурачки, наверное.
>Ты читаешь? 2 года опыта работы. Я ещё даже универ не закончил. Я просто хочу сказать, что для заказчиков это не деньги вообще, и да, они экономят таким образом.
>Я просто хочу сказать, что для заказчиков это не деньги вообще, и да, они экономят таким образом. Как что-то плохое. Для нас это очень большие деньги. В месяц получается отложить 1к баксов на будущую жизнь (переезд и т.п.), если затянуть пояс - получается отложить 1.2к. Года 3-4 и можно уже валить. Средняя по стране 300 баксов.
Вот кусок кода из модели, работает только валидации по картинке (я менял местами их). При попытке загрузить файл, отличный от картинки всегда срабатывает защита от content spoofing, блять(
Аноны, есть маза запилить сайтец на рельсах знакомому, но я не знаю где можно его захостить, чтобы потом этому знакомому отдать нужные логины/пароли и пусть он его сам потом оплачивает. Что посоветуете?
Как сделать меню для сайта создающееся из БД? Ну типа в БД есть таблица КАТЕГОРИИ и записи в ней РУЧКИ КАРАНДАШИ ТЕТРАДИ. Понимаю, что надо сделать модель КАТЕГОРИЯ, контроллер КАТЕГОРИИ_КОНТРОЛЛЕР, сделать вьюхи для них или не вьюхи, а партиалами сделать. А потом уже встраивать эти партиалы на сами страницы сайта. Это будет работать? Прост я на работе сейчас, разные реализации и на гуглеж времени мало
Не могу разобраться. Может у кого есть идеи. Не срабатывает рут роут. Не попадаю в контроллер. Вместо этого в роутах каким-то макаром меня перехватывает такая ебола match "*url", to: "application#render_not_found", via: [:get, :post, :path, :put, :update, :delete] которая в роутах ниже рута. Пытаюсь зайти на рут а кидает херню. В чем фишка?
есть папки, в них есть файлы вида 001 002 003 n. Надо написать класс который будет выплевывать мне данные из файла по запросу вида yoba_object[42]. Правильно ли будет если я йобну инстанс переменную типа массив, проинициализирую её полностью и напишу делегатор пропущенных методов к этой переменной. Или есть другие, более изящные методы?
>>784564 да лень расписывать, уже делаю делегатор.
Но если коротко, то нужен класс который будет оспособен отзываться на методы массива, т.е. при обращении к таким методам делегировать их к своей локальной переменной типа массив. Естественно сам класс будет больше чем просто оболочкой.
>>784583 >Но если коротко, то нужен класс который будет оспособен отзываться на методы массива Ну если коротко, то def [](index) do_something_with index end
>>766884 (OP) Сижу на 7-й винде, начал только-только обмазываться - и сразу проблема
В ответ на "rails new app" выдаёт вот такое: G:/RailsInstaller/Ruby2.2.0/lib/ruby/site_ruby/2.2.0/rbreadline.rb:1097:in `<mod ule:RbReadline>': HOME environment variable (or HOMEDRIVE and HOMEPATH) must be set and point to a directory (RuntimeError)
HOME и HOMEPATH у меня на кириллице, и cmd при запросе вместо папки пользователя выдаёт набор каких-то ёбаных нечитаемых символов. Предположительно, рельсы их не воспринимают как нормальный адрес. What do?
Ребзя, есть какой-нибудь нормальный способ решать вот такую задачу: конвертировать одну структуру данных в другую? То есть какой-нибудь один сложный json отобразить в другой, более простой нужного формата. Вот типа как на пике. Мне кажется было бы удобно использовать что-то типа карт.
Нужно это вот для чего. Есть ебанутейшие xml-ные апишки, которые отдают шлак в совершенно нерабочем формате. Чтобы работать с их данным мне приходится сначала их сильно обрабатывать. И происходит это тупым поэлементным присвоением, типа: data = {} data[:my_field] = src[:blah_blah_response][:blah_blah_params][:blah_blah_output][:blah_blah_list][:blah][:blah][:blah] Это ужасно. Хочется какой-нибудь более удобный и правильный способ конвертировать одно в другое.
>>785570 > Там 5ю рельсу зарезили... Собираюсь переходить, пока приложение маленькое. 11 тысяч строк. Надеюсь управиться часов за 10. Благо тесты есть почти на всё, кроме контроллеров (надо написать).
Думаю, это имеет смысл. Это гарантия лёгкого перехода на новые минорные версии на несколько лет вперёд, а значит - новые фичи рельс, новые крутые гемы, которые могут понадобиться.
>>785611 Задай себе вопрос - стоит ли оно того? Тупое присвоение легко тестировать, легко писать (но сложно читать и поддерживать, да). А так тебе придётся придумывать декларативный формат на все случаи жизни, тестировать его, переписывать весь существующий код, потом проверить, что переписал правильно (значит тесты на существующий код всё равно придётся написать).
>>785618 У меня еще нет существующего кода, там не много переписывать. Читать это мудатень тоже невозможно. Вообще мне кажется для этого уже должно быть какое-то решение. Вопрос конвертации одного в другое ведь много где встречается. У меня сначала в голове все время крутились ActiveModelSerializers, которые в пятую рельсу добавили. Но я так и не придумал, как их можно использовать для этой задачи. Хотя по сути они ведь похожую задачу решают.
>>785654 В Эрефии до сих пор не знают как работает айти. ПМ приходит к заказчику и говорит, что тут надо BDD. Иначе ад и погибель. Поэтому плоти, чтоб покрыли тестами. А если это бодишоп, то ПМ напаривает заказчику, что нужна орава тестировщиков, иначе качество никак не обеспечить. В итоге за каждую голову бодишоп срубает бабло.
>>785654 Заказчику глубоко похуй что ты там будешь делать лишь бы сделОл. Эти баззворды именно для развода заказчиков. Не подумай только что я против тестирования... это полезно, когда продукт разрастается. И не боишься что-то поломать, когда рефакторишь. TDD неплохой подход и в некоторых случаях таки помогает.
Собираюсь вкатываться на руби с нуля, придумал себе проект небольшой. Перенесу свой скрипт с пёрла на руби (http://www.imagemagick.org/discourse-server/viewtopic.php?t=18963), добавлю удобный интерфейс, возможно сделаю что-то типа планировщика очереди (на руби ведь возможно сделать event loop?). Потом сделаю блог, чатик (ждал релиза 5.0), оповещения, интеграции с различными API, OAuth2.0.. Много чего банального в общем.
За плечами 3 года разработки на PHP/JS. Фриланс на дядю Шона за $16/час. Почти год уже работаю на него (начинал с $8-10), но нужно двигаться дальше.
Разрабатывать буду на своём VPS, чтобы проекты сразу были доступны в вебе для просмотра и тестирования, работали webhooks, https, можно было интегрировать API, проходили callback-и и так далее. Знаю, что есть ngrok, xip.io и прочие штуки, но не использую. В качестве IDE буду использовать продукт от IDEA, потому что очень долго сижу на нём и знаю много различных фич/клавишных комбинаций, которые часто использую.
Вопросы: 1. Стоит ubuntu 16.04 свежая. Терминал открыт. Что нужно поставить в первую очередь? Знаю только, что нужен ruby, rails и rvm/rbenv. Помимо этого что-нибудь пригодится? Если у вас будет чистая система, что какие пакеты ставить для разработки? 2. Какие тулзы мастхэв? Когда ставил себе давным-давно redmine получилось так, что сначала поставил rails, ruby определённой версии. Потом оказалось, что redmine идёт на другой версии, и мне пришлось гуглить, как же грамотно поставить окружение. В итоге поставил rbenv, но все эти гайды меня знатно поднапрягли, часов 5 потратил точно. 3. Какой самый современный и максимально эффективный workflow для разработки? Для меня (на PHP) это выглядит так: - Asana для задач - Отдельный сервер (VPS) для разработки, ubuntu 16.04 LTS, либо Vagrant - Git workflow, feature-branches или developer-branches - Изменения в структуре базы данных только через migrations - Timedoctor - трекинг времени на задачи - Chrome - отладка js скриптов, вёрстка, проверка селекторов (jQuery) - Zoc Terminal - единственный нормальный терминал под винду, где возможен коннект по ssh
>>785741 Ну, например, Stripe webhooks привязываются к конкретному адресу. К локалке привязывать через ngrok это костыли какие-то, да и не нужно в продакшене. Клиенту я сразу показываю сделанную работу, вернее, он может мониторить меня часами, пока я делаю апдейты каждые минут 20-40. Сделал модальное окно - вот, посмотри, проверь - может чего не хватает. Добавил новый плагин - посмотри, нормально ли работает на iphone/safari. Он так то тоже на PHP немного кодит, но в основном Android. За год отношений я многому научился сам и его тоже учил, как надо разрабатывать приложения. К примеру, когда я только взялся за проект, не было даже Git, отсутствовал менеджер js-пакетов, не было миграций (при том, что в CodeIgniter они есть), сейчас вот BDD-тесты пытаюсь освоить.
С винды не пересел ещё, потому что имеется только один ноут на гейминг, Reaper, погромирование. Скоро возьму нормальный пека для игор, а ноут переделаю в линух, потому что заебался с костыльными решениями в PHPStorm типа поиска и установки руби бинарников под венду, мучения с PATH, все гайды даже на официальном сайте PHPStorm написаны под разработку на линуксе.. Всё, что мне нужно - возможность поставить необходимые пакеты и использовать, например, препроцессоры CSS, Babel, Grunt, прочие штуки без изъёбств. Винда к этому не располагает совершенно.
>>785995 По-сути - да. Но я на него загружаю файлы постоянно, чтобы получать feedback, когда исправляю какой-то мелкий косяк, типа неработающей ссылки. Иметь Vagrant локально это хорошо (не приходится ждать целую секунду-две, пока соединится по SSH и загрузит один файл, рендер быстрее), но каждый раз делать отдельно upload на удалённый сервер, после того, как изменил пару-тройку файлов и хочу показать работу очень заёбно. Может, конечно, есть какой-то удобный способ это контролировать? Проект очень большой, 60 контроллеров, примерно столько же моделей, 75+ таблиц. Когда я открываю на своём i5-3610QM javascript-файл с проверкой синтаксиса/ошибок, он начинает люто тупить и лагать (секунд по 3-5) после каждого ввода символа.
>>786019 CI работает в случае, когда происходит коммит. Я тоже думал про это, но поскольку я работаю по сути один, то смысла в нём особого не вижу.
Сталкивался с группой погромистов, которые использовали этот CI в проекте на Yii. Неразбериха была та ещё, как они работали - не представляю. По 20 коммитов от одного программиста, исправляющего какой-то простой баг. А каждый деплой занимает время, минуты по 3-5, пока все тесты пройдут. Если бы я так работал, ни о какой продуктивности речи бы не было. Возможно, они просто неправильно использовали его, но для себя я решил, что CI нужен, только когда проект слишком сложный, чтобы использовать один stage-сервер, код покрыт тестами, имеется несколько разработчиков, нет проблем с наполнением базы тестовыми данными и так далее.
По поводу файлов. Проект, как я говорил, достался мне "в наследство" от другого погромиста, папка assets (js процентов так 70) занимает 200 мегабайт. 6 (sic!) версий jQuery в разных папках. Переписать с нуля это невозможно даже за месяца два, миграции я прикручивал в свободное от работы время (к слову о том, хочет ли заказчик выделять деньги на рефакторинг).
>>785653 >Сapybara >Блжад, попробовал. Как говна пожрал. Ты что-то не так делаешь. Я использую для парсинга Фейсбука (вместе с PhantomJS), и совершенно доволен. Раньше парсеры были написаны на чистом JS под PhantomJS, это был кусок нечитаемого неподдерживаемого асинхронного говна. >Почему у этого инструмента столько зависимостей? А ты как хотел, это же интерфейс к целому ебучему браузеру. >TDD/BDD - чего только не придумают, чтобы выжать бабло с заказчика. Ты хотел сказать сэкономить бабло заказчику? >>785654 >это для заказчиков, чтобы экономить на тестерах, а все дело делал программист. Это для программиста, чтобы всё не отваливалось нахуй после очередного изменения. >>785657 >Не подумай только что я против тестирования... это полезно, когда продукт разрастается. И не боишься что-то поломать, когда рефакторишь. TDD неплохой подход и в некоторых случаях таки помогает. Бля, ну я не знаю, насколько маленьким должен быть продукт, чтобы не бояться что-то сломать в нём при добавлении новых фич. У меня - 11 тысяч строк кода (HTML и прочее считая), 18 моделей. Это большой проект? Вроде считается небольшим. Но знал бы ты, сколько мне тесты моделей и политик времени сэкономили. И контроллеры скоро тестировать буду, потому что надоело, что некоторые страницы периодически отваливаются.
>>786117 Правильно. Это уже давно считается плохой практикой- тестировать контроллеры. Интеграционные тесты ещё и тем хороши что проверяют вообще ВЕСЬ стак. Как без них?
>>786118 >Правильно. Это уже давно считается плохой практикой- тестировать контроллеры. >Интеграционные тесты ещё и тем хороши что проверяют вообще ВЕСЬ стак. Как без них? Ну смотри. У меня фронтенд почти отсутствует. Так что в моём случае что тесты контроллеров, что интеграционные будут тестировать весь стек. Но тесты контроллеров намного проще и логичней с точки зрения программиста - сделал запрос, увидел, что action и view (тесты контроллеров умеют рендерить view) не отвалились, что произошли нужные изменения в БД, что нужные задачи были поставлены в очередь. Атрибуты заполняются исходя из логики контроллера, которая обычно if @page.save then ... else ... end. Всё.
А чтобы поддерживать интеграционные тесты нужна уйма времени - на каждой странице прокликать каждую кнопку, попробовать все варианты заполнения форм и т.д.
>>786124 Ты неправильно юзаешь интеграционные тесты. Как понять мало фронтенда? Апи? Когда ты пишешь тесты контроллеров, ты им создатель уютный такой пузырь. Далеко не факт, что все будет так же в продакшене, а капибара поможет отловить эти баги
>>785725 >но все эти гайды меня знатно поднапрягли Здесь это основная проблема. Заебешься настраивать окружение. Разруливать зависимости и так далее. Мимо-вкатился-в-руби
>>786191 В общем, вкратце, как я понял, нужно понять следующие тулзы:
ruby - непосредственно сам интерпретатор, который используется в rails. Без него не заведётся. В основном пользоваться им напрямую придётся только для того, чтобы проверить используемую версию.
rvm/rbenv - менеджер версий Ruby, в основном все используют только эту фичу и ничего больше. RVM активно развивается, предоставляя дополнительный функционал вроде установки нескольких гемов только для определённой версии. Типа bundler для Ruby. В общем, на всякий случай буду использовать RVM, хотя он больше "портит" систему, например, заменяя команды "cd" и "gem" своими аналогами.
bundler - используется для того, чтобы собрать зависимости сторонних пакетов (гемов). Напоминает мне Composer для PHP, только bundler не используется, чтобы поставить какой-то один пакет (гем). Для этого используется команда gem.
rails - очевидно, для генераций новых приложений, запуска встроенного веб-сервера, и, самое главное, генерация т.н. boilerplate кода, например, rails generate model NAME, а так же утилита для работы с базой данных rails db:migrate, db:schema, и т.д. К тому же ещё даёт контроль к кэшу assets (rails assets:clean, ...), их генерация. В общем, многозадачная команда, которая и делает разработку каркаса приложения на rails очень простой и приятной.
gem - менеджер пакетов ruby. Весьма популярный, как в своё время PEAR для PHP. Немного меня озадачил надписью "Ruby 1.9 and newer ships with RubyGems built-in but you may need to upgrade for bug fixes or new features." на официальном сайте. Не понятно, нужно ли вручную обновлять его когда-нибудь. Пока ещё не понял, куда ставятся гемы. Вроде бы можно их поставить глобально или локально в один проект (как в npm). Bundler отличается от этой приблуды тем, что устанавливает все зависимости (гемы) в директорию приложения. Поправьте, если не так.
Теперь вопрос. Достаточно ли этих штук, чтобы начать разрабатывать на Rails? Или есть ещё вещи, на которые нужно обратить внимание?
>>786138 >Как понять мало фронтенда? Апи? HTML генерируется на сервере, JavaScript - 1300 строк всего. >Когда ты пишешь тесты контроллеров, ты им создатель уютный такой пузырь. Далеко не факт, что все будет так же в продакшене, а капибара поможет отловить эти баги Я не совсем понимаю, что такого она может отловить, чего не отловят етсты контроллеров. Как я уже сказал, тесты контроллеров могут рендерить вьюхи, так что я могу быть уверен, что ошибок, выкидывающих исключения, не возникло. А что ещё нужно? >>786194 >Женщину найди уже. Бля, ну я в том числе для этого и работаю.
>>786267 >ruby - непосредственно сам интерпретатор, который используется в rails. Без него не заведётся. В основном пользоваться им напрямую придётся только для того, чтобы проверить используемую версию. Ну с рубишной консолью тебе часто придётся иметь дело. Советую использовать PRY вместо стандартного IRB (а также pry-rails, чтобы рельсовая консоль тоже была няшной) >буду использовать RVM, хотя он больше "портит" систему, например, заменяя команды "cd" и "gem" своими аналогами. Насколько я знаю, он делает хук на вызов cd (а не заменяет системную команду) >Напоминает мне Composer для PHP, только bundler не используется, чтобы поставить какой-то один пакет (гем). Для этого используется команда gem. Ну такое. Gem - это пакетный менеджер, да, а Bundler - виртуальное окружние (типа VirtualEnv в Python). >gem. Не понятно, нужно ли вручную обновлять его когда-нибудь. Да. Команда gem update --system вроде >Пока ещё не понял, куда ставятся гемы. Вроде бы можно их поставить глобально или локально в один проект Смотря как установлен сам Руби. Если из системных пакетов дебиана, то команду gem надо предварять sudo и ставятся гемы в /usr/local/share/rubygems (или что-то подобное). Если Руби установлен с помощью RVM, то гемы ставятся в $HOME/.gem >Bundler отличается от этой приблуды тем, что устанавливает все зависимости (гемы) в директорию приложения. По умолчанию это не так. По умолчанию они ставятся в $HOME/.rvm (если руби установлен с помощью RVM). Но есть такая опция конфигурации, чтобы ставились в директорию приложения.
>Достаточно ли этих штук, чтобы начать разрабатывать на Rails? Или есть ещё вещи, на которые нужно обратить внимание? Ты как-то всё усложнил. На самом деле всё проще: 1. Ставишь RVM 2. Ставишь Ruby 3. gem install bundler 4. gem install rails 5. rails new foobar && cd foobar 6. bundle install Всё.
Ещё, конечно, нужно будет настроить БД. Советую Postgres (все туториалы по рельсам используют её, мне она нравится больше MySQL из-за более строгой типизации и консистентности данных). Postgres настраивается так: 1. sudo apt-get install postgresql postgresql-server-dev-all (без второго пакета не скомпилируется гем pg) 2. sudo -u postgres psql В консоли постгреса: 3. CREATE ROLE foobar WITH LOGIN CREATEDB PASSWORD 'foobar'; (разрешения важны)
Далее меняешь в config/database.yml имя пользователя и пароль на "foobar".
Только что разобрался, как обновлять рельсы. Обновил с 5.0.0.beta1 до 5.0.0. Жаль, что это вообще прозрачно не происходит. Но потребовалось всего лишь: >bundle update coffee-rails activemodel jquery-rails
Надеюсь, обновиться с 4.2 до 5.0 будет не намного сложнее
>>785699 О, анон, очень похоже на то, что я хотел. Спасибо. Но видимо уже не смогу его использовать. Мне действительно это нужно для работы с SOAP и я использую библиотеку savon, она всем хороша, но у нее собственный парсер xml to hash. В принципе может быть костылями можно было впихнуть happymapper, но проект уже начался, боюсь проваливаться в рефакторинг.
>>786408 Рефакторинг уменьшает технический долг. Считай, что потом тебе будет в несколько раз сложнее, дольше и дороже разбираться с накопленнвм беспорядком.
Подскажите по поводу нормализации БД - как лучше построить отношения?
У меня есть модели Team, Member, User. Team has_many Users Team has_many Members
Также при регистрации User может выбрать несколько Member'ов, которые будут ему соответствовать. Хотелось бы, во-первых, избежать дублирования, во-вторых, избежать сложных валидаций (типа что Member соответствует либо User'у, либо Team'е), в-третьих, после регистрации достижения прикреплённых к пользователю Member'ов должны восприниматься как достижения самого User'а
>>786468 Пока думал, как это поможет, понял, что сообщил недостаточно информации.
Я работаю с Facebook API. Оно не возвращает "реальный" ID пользователя. Это значит, что в БД у меня могут быть несколько Member'ов (эта модель как раз представляет пользователя Facebook) с разными fb_id, но относящихся к одному пользователю Facebook.
Когда пользователь авторизуется у меня на сайте с помощью Facebook OAuth, я погу получить его token_for_business. Если потом я запрошу у какого-нибудь Member'а этот же токен, то он будет таким же для того же пользователя (Member'ов у меня уже больше двухсот тысяч, так что, видимо, придётся фильтровать по имени). Я пока не решил, что делать дальше - объединять модели, или вводить дополнительную модель OAuth has_many Members.
Есть некоторый функционал, который должен работать одинаково и для аутентифицированных через OAuth пользователей, и для сторонних пользователей Facebook (вкратце - я парсю события и смотрю, кто сколько пригласил в это событие).
Как-то всё это очень сложно, я даже не знаю, с какой стороны начать думать, чтобы додумать, как это реализовать красиво.
Когда пользователь регистрируется по почте или через OAuth/FB/Twitter/..., на него заводится запись в таблице User. После этого он может добавлять привязки из других социальных сетей если нужно с помощью простого интерфейса - серые кнопки с логотипами провайдеров - неактивные привязки, цветные - активные. Дубликаты исключить, либо придётся усложнять ещё больше (а стоит ли оно того?).
>>786480 >Дубликаты исключить, либо придётся усложнять ещё больше (а стоит ли оно того?). Собственно, в этом и вопрос - удалять ли записи Member, про которые мы выяснили, что они представляют того же самого пользователя Facebook? Да, это многое упростит, я смогу исходить из предположения, что один Member - один пользователь Facebook. Но это сама по себе непростая операция - придётся заменять member_id во всех отношениях. Впрочем, стоит сказать, что благодаря foreign keys у меня не останется ссылок на несуществующие записи. Но сам факт того, что придётся ожидать завершения какой-то фоновой задачи чтобы информация в БД соответствовала действительности, меня напрягает. Решение с помощью грамотно построенных отношений кажется мне более красивым и логичным.
>>786500 Пользователи с реальными id в базе есть? Или приложение создано после ввода API 2.0? Не понятно, каким образом может возникнуть дубликат. Пользователь удалил привязку к приложению через FB, а потом опять зарегистрировался? %Не шарю в FB, полистал Changelog и Stack Overflow на эту тему только%
Сап рубаны. Есть ли у кого опыт в OCR те машиное зрение? Есть пдфки и нужно найти слово X и то что на против его. проблема в том что сами картинки очень разные с разными шрифтами и тд. Посмотрел Tesseract-ocr но его надо тренить на шрифты вручную ,по этому я не думаю что он подойдет. что подскажите? какие инструменты есть?
>>786416 На двачах слишком любят все идеализировать. Живут в и идеальном мире и делают абстрактные проекты. Я некоторое время назад наконец понял, что нужно перестать пытаться писать идеальный код и искать разумное соотношение усилий и результата. И тестирование далеко не всегда нужно и рефакторинг не обязателен и лучшие практики лишь рекомендация.
Ссылочки на картинкиАноним03/07/16 Вск 11:51:44#360№786603
Пацаны, я не знаю, уместно ли здесь спрашивать, потому что вопрос вроде как по вебу, а не по руби. Я, пользуясь гемом HTTParty, посылаю запрос rest-веб-службе (вот этим http://developer.nytimes.com, конткретней - article search), получаю json и достаю из него ссылки на картинки. Но они имеют вид "images/2016/06/15/t-magazine/15tmag-duro-slide-6B0A/15tmag-duro-slide-6B0A-thumbWide.jpg", то есть напрямую вставить в "<a href" для отображения нельзя, а надо добавить остальной путь. Вопрос - где его брать? Ну, я, понятное дело, зашёл на сайт с самой новостью, нашёл там эту картинку, скопировал оставшуюся часть ссылки и просто прибавил строку с ней к началу той строки, которую вытащил из json-ответа. Мне кажется, что это как-то неправильно, и что относительный путь там не случайно указан (может, в дальнейшем, сервер с картинками уедет, или я хз чё). Как сделать правильно?
>>786573 >>786575 Перфекционисты не нужны. Все равно руби и рельсы для стартапов. А если проект выстрелит, то его потихоньку переписывают на чем-то ещё.
>>786502 >Или приложение создано после ввода API 2.0? Вроде до >Пользователи с реальными id в базе есть? Вроде есть >Не понятно, каким образом может возникнуть дубликат. Элементарно. В списке гостей события у пользователя ID1, а когда он авторизуется через OAuth, возвращается ID2.
>>786603 >Мне кажется, что это как-то неправильно, и что относительный путь там не случайно указан (может, в дальнейшем, сервер с картинками уедет, или я хз чё). Правильно думаешь. >Но они имеют вид "images/2016/06/15/t-magazine/15tmag-duro-slide-6B0A/15tmag-duro-slide-6B0A-thumbWide.jpg", то есть напрямую вставить в "<a href" для отображения нельзя, а надо добавить остальной путь. Вопрос - где его брать? Изучи документацию API. Если этого СОВСЕМ нигде нет, то в базе всё равно сохраняй относительный путь, а для получения абсолютного добавь модели метод, в котором начало пути будет добавляться к записи в базе, и этим методом пользуйся.
>>786651 >Все равно руби и рельсы для стартапов. А если проект выстрелит, то его потихоньку переписывают на чем-то ещё. Как же вы заебали. Покаже мне проект, кроме твиттера, который что-то переписал? Гитхаб - на рельсах. Soundcloud - на рельсах. Basecamp - на рельсах. Да, иногда некоторые части проекта переписывают на чём-то другом. У Soundcloud, например, есть сервисы на Go, Haskell. Это всякая обработка данных, события, воркеры. А рельсам остаётся то, что они должны делать - веб.
>>786651 Не нужен ты-максималист. За 3 года ни один проект не был на что-то переписан, но тем не менее они работают. И без рефакторинга мы бы охуели там. Его даже закладывают в сроки. Случай с переписыванием - это вообще 1 твиттер на миллион. В большинстве случаев ботлнеки устраняются как раз рефакторингом, выносом микросервисов, увеличением кол-ва серверей. Только в случае, если и это не поможет - встанет вопрос о переписывании.
>>786825 >В большинстве случаев ботлнеки устраняются как раз рефакторингом, выносом микросервисов, увеличением кол-ва серверей. >Только в случае, если и это не поможет - встанет вопрос о переписывании. Никакого вопроса о переписывании не встаёт. Дела обстоят так:
Изначально решение использует реляционную БД. Первое время производительность упирается в веб-фреймворк. Тут в дело идёт рефакторинг. Потом увеличение количества веб-серверов, потому что рельсы очень легко горизонтально масштабируются. Далее производительность упирается в БД. Начинается шардинг. Через какое-то время БД уже становится невозможно масштабировать. Приходится менять модель данных. Часть данных переносится в нереляционную БД. Жертвуем консистентностью данных ради скорости доступа.
Кроме самого первого времени, производительность веб-фреймворка не имеет никакого значения. Его код выполняется 5% времени запроса, остальное - доступ к БД.
Остаются различные сервисы, которые, как правило, переписываются с Руби на быстрый компилируемый статически типизированный ЯП, если производительности Руби не хватает в конкретном случае. Но вот вам пример - по словам разработчиков яндекса, значительная часть их поискового движка до сих пор написана на Perl.
>>786843 Насчет 5 процентов спорно. Конкретно в рельсах большую часть времени на один запрос отжирает рендеринг вьюх, тут нужно кэширование, где возможно. И да, твиттер же почему-то переписали, значит встал у них вопрос.
>>786850 Такая нагрузка как у твиттера 99% никогда не светит. И да, у них код рельсовый был говно. Да блять, у них и сейчас фронтенд твиттера лагает так , как будто я 3 крайзис пытаюсь играть.
>>787072 >у них и сейчас фронтенд твиттера лагает так , как будто я 3 крайзис пытаюсь играть Рассматривал их веб-фронтенд в деталях. Говнище неописуемое. У Фейсбука та же история, им даже Sencha на спор сделали нормальный фронтенд на HTML5, который не тормозил совсем и имел такую же функциональность, после того как Цук рассказывал что эти веб-технологии, это из-за них у нас все тормозит.
>>787112 Обычно, когда меняешь дизайн - все начинают ныть и исходить говном. А на старый никто не жалуется, к старому все привыкли. Зачем им создавать себе лишние проблемы, и ещё и платить за них?
>>787288 >Дуров пидорашек просто на хую вертел, а Цукерберг заботится о своих пользователях. То-то Вконтач намного удобней. Но вот с приватностью у Фейсбука получше, да.
Посоны, знаете что-нибудь кроме Delayed Job для отложенных задач? Не сайдкик и рескуе, нужно на реляционке. Я недавно наткнулся на QueueClassic, там в описании есть >Leverage of PostgreSQL's listen/notify Если это то, о чем я думаю, то это круто - DJ опрашивает базу на предмет новых задач каждые 5 сек. Создает нагрузку, срет логи и при этом добавляет лаг в 5 сек. Если QC использует механим pub/sub, то это охуенно. Только не понятно, действительно ли он его использует как надо, и вообще, насколько QC функционален.
Еще, пользуясь случаем, хочу спросить, кто работал с ELK (эластик, логстеш, кибана) для логирования. Чет я попробовал прикрутить при помощи гемов lograge и logstash-logger и получается какая-то хуйня. Эктив-рекорд не пишется, эксепшены по прежнему идут в несколько строк (читай несколько записей), как прикрутить логирование других компонентов (типа того же воркера) тоже смутно. Гайдов особо не нашел.
Помогите решить задачу, есть модель Slot, у нее поля start_time и end_time, нужно сделать sql выборку между всеми записями которые находятся в промежутке дней между start и end полями включая их самих. Пробовал разные запросы ни один не возвращает что надо, приходит масив включая левые даты .where(":start_date >= start AND :end_date <= 'end'", start_date: dates[:start], end_date: dates[:end]) .where('start >= ? AND "end" <= ?', dates[:start], dates[:end]) .where('start IN (?) AND "end" IN (?)', dates[:start]..dates[:end], dates[:start]..dates[:end])
Параметры приходят типа таких { start_time: 'mon', end_time: 'thu' } далее я делаю 'mon'.to_date и сверяю с полями модели, пока что не смог получить нужный результат. Выручай анонас.
>>788193 Не научился и никогда не научится. если автора не сменить. Aphyr его в его говно тыкал, кто только не тыкал уже - спорит как двачер, нихуя не понимает даже что ему говорят. Типичный ноэсккуэльщик.
>>788145 >Не сайдкик и рескуе, нужно на реляционке. Что за глупость >Нельзя потерять задачи С чего ты решил, что можешь потерять задачи в редисе? >нужны транзакции. Ну так используй транзакции при работе с БД. Задачи-то зачем в ней хранить?
>>788145 Даже сохранение в базу не гарантирует, что задачи не будут потеряны. Все равно может возникнуть ситуация, когда какое-то событие произошло, а записаться или уничтожиться не успело. Тем более когда есть одноразовые таски типа отправки имейлов, их вообще нельзя повторять.
Господа рубоны, я в замешательстве. Ситуация: 20 лвл, учусь на юрфаке госа города Сибирские Залупки. К концу первого курса начал проклинать день, когда перед поступлением послушал отцовское "ты гуманитарий чистейший, только пиздеть и умеешь, так что пиздуй на юриста", хотя и испытывал тягу к программированию и почти всему, что охватывается аббревиатурой IT. К середине второго, осознав, насколько всё уёбищно в этой стране, посмотрев на всё с точки зрения юриста, решил уёбывать, благо английский знаю почти как родной. Т.к. юрики не выездные и вообще не особо в почёте, решил вернуться к старым интересам. Благополучно съел подкинутого другом Криса Пайна (руби для самых маленьких). Сейчас, как освободился от зловонючей сетки, сел работать над собой. Определился, что изучать буду именно руби, т.к. для англоговорящих есть перспективы, работа, да и уйти в другую сферу не составит труда. В вашем храме рубей увидел список литературы, сел читать по порядку. Проблема в том, что, читая прагматик руби, я чувствую себя примерно как морская свинка. Многие вещи непонятны, хотя и улавливаю суть в целом. Вопрос следующий, это нормально и нужно продолжать, или стоит начать с какой-то общей теории, ООП и т.д.?
>>788237 Поиск идет между двумя полями, запрос ('? >= start AND ? <= end_time') не возвращает что надо, будто end_time не обрабатывается, хотя в sql запросе есть
>>788401 Мы не знаем, всё зависит от тебя. Общая методика такова: читаешь всякие книжки, ебошишь блог/твитор/чят, фиксишь это всё, пытаешься устроиться куда-нибудь за жрат. Дальше по обстоятельствам.
>>788401 >В вашем храме рубей увидел список литературы, сел читать по порядку. Проблема в том, что, читая прагматик руби, я чувствую себя примерно как морская свинка. Многие вещи непонятны, хотя и улавливаю суть в целом. Вопрос следующий, это нормально и нужно продолжать, или стоит начать с какой-то общей теории, ООП и т.д.? Насколько я помню, ВСЕ книги из шапки предназначены для тех, кто уже знаком с программированием. Как и большинство книг по руби, с него редко начинают изучать. Попробуй http://railstutorial.org, по ходу дела познакомишься с самим руби более-менее. Но после обязательно почитай книги по Руби, иначе многие вещи потом будешь делать очень неэффективно.
>>788650 после хартла хуй кто читает про руби, сразу идут ебошить гавнокруд и смотреть макензи, хотя вроде хартл для 5 рельс более подробный гайд сделал.
>>788172 Может и что-то годное, но очень старое и безызвестное.
>>788193 >Редис давно уже научился при правильной настройке данные не проебывать не хуже реляционок. Я могу ошибаться, поскольку с редисом практически не знаком. Но вся его суть и возможности в том, что он хранит данные ОЗУ? При аварийном завершении он не успеет флашнуть на диск. Если это HA-клсатер, то репликация опять же не синхронная, то есть на других нодах могут быть устаревшие данные.
>Ну так используй транзакции при работе с БД. Задачи-то зачем в ней хранить? В транакцию оборачивается группа операций. Они выполнятся все или ни одна. В том числе в транзакции идет постановка задачи в очередь. Если где-то что-то пойдет не так, я могу быть уверен, что задача не поставилась, как и остальные изменения.
>>788335 Не знаю, что ты имеешь в виду. Реляционки обеспечивают ACID. Транзакции обрабатываются очень аккуратно, вплоть до подтверждения физической записи на диск (у постгреса по крайней мере настраивается). Какие-то там нюансы и ограничения в граничных ситуациях существуют но они на уровне того, что транзакция ПРОЙДЕТ, просто ты перед крашем не успеешь получить подтверждения, но это уже не то о чем стоит задумываться.
Недоволен этим туториалом. Сразу пихают всякого, а суть не рассказывают. А ещё какой-то пиздец с зависимостями случился и теперь rails s не запускается. Я негодую.
>>789198 >На хероку нужная база лежит, ее обязательно забрать. Облачные сервисы баз данных обычно не любят легко отдавать дампы БД. Погугли. Я столкнулся с тем, что на Amazon RDS очень сложно получить дамп БД.
>>789152 >Если где-то что-то пойдет не так, я могу быть уверен, что задача не поставилась, как и остальные изменения. Здесь не нужны транзакции. Достаточно после постановки задачи проверять, поставилась ли она в очередь, и если нет, то выбрасывать исключение. Можешь написать своё небольшое дополнение к Сайдкику или погуглить, есть ли готовые.
>При аварийном завершении он не успеет флашнуть на диск. >Транзакции обрабатываются очень аккуратно, вплоть до подтверждения физической записи на диск (у постгреса по крайней мере настраивается). У Редиса настраивается частота записи на диск. Я согласен, есть вероятность, что в случае отключения питания или немедленного убийства процесса данные будут потеряны. Но скажи, какова вероятность этого? Если тебе недостаточно записи на диск раз в несколько секунд, то что же за приложение такое ты пишешь, что ему нужна такая надежность? Я просто хочу понять, что за задача такая, где это действительно нужно.
>>788942 >после хартла хуй кто читает про руби, сразу идут ебошить гавнокруд Согласен, сам так сделал. Но быстро осознал ошибку и сидел, задрачивал руби. Надо лишь донести, что тому же хуже будет, кто проигнорирует это замечание. А так railstutorial хорошая штука.
Подскажите, есть ли какое-нибудь решения для разделения контроллеров и вьюх? Вьюхами в рельсах называются шаблоны на самом деле. А реальным view для них является контроллер - они берут его переменные экземпляра и методы.
Решение должно быть максимально прозрачным для рельс и стороннего кода. Шаблоны не должны знать, что рендерятся не в контексте контроллера.
>>789932 В дополнение к этому, хотелось бы узнать "правильный" способ делать партиалы, чтобы не мучаться с вспоминанием того, от каких переменных и методов шаблон зависит.
>>789202 >Здесь не нужны транзакции. Достаточно после постановки задачи проверять Не понял тебя. Я говорю про то, что постановку задачи удобно запихивать в транзакцию вместе с другими операциями, которые неразрывно с ней связаны. Например, сделали рассчеты по платежам, обновили кучу записей, поставили тут же задачу. Где-то случился роллбек - он отроллбечит и задачу. Речь о том, что это просто удобно. Конечно это не тру-необходимость, потому что планировщики это отдельный сервис (всякие там очереди сообщений). Но там и другие уровни сложности.
>в случае отключения питания или немедленного убийства процесса данные будут потеряны. Но скажи, какова вероятность этого? По закону Мерфи, она крайне высока. У меня в приложении есть логика связанная с платежами. При этом они не разовые point-to-point, это целый процесс, серия задач many-to-many, и у процесса есть промежуточные состояния. Это делает логику сложной и проеб задачи чреват. Тут правда у меня есть недостатки архитектуры, но в целом, проеб любой маломальски важной задчи (кроме какой-нибудь генерации документа или отсылки письма) всегда чреват.
>Если тебе недостаточно записи на диск раз в несколько секунд, то что же за приложение такое ты пишешь, что ему нужна такая надежность? Но ведь любое приложение? Абстрагируемся от планировщика - речь же идет о возможности потери данных за несколько секунд. Иногда это допустимо, но это отдельно планируется и прописывается. По умолчанию мы ведь не держим в голове мысль о том, что данные за n времени могут быть утеряны. И вообще в этих случаях нужен механизм, который даст понимание, что данные были потеряны, чтобы это можно было учесть. Важно в любой бизнес-задаче, е-комерс и т.п.
>>789993 Никогда в рельсах не испытывал дискомфорта от принятой архитектуры. В том числе и от хелперов. Разок вместо хелперов юзал декораторы. Зачем тебе, анон, расскажи.
Раз тебе не нравится рейлс-вей, может тогда убрать фронт из монолита, вынести его весь в отдельный сервис на реакте с нодой и общаться через АПИ.
>>789996 >trailblazer Ой, там все сложно. По-моему ребята нахуевертили.
ну можно как дхх советует хуячить на каждый экшен по контроллеру с 1 экшеном, все контроллеры по директориям раскидать, и типа здоровая архитектура рельс возникает лул
>>789996 >trailblazer Я знаю про него, но не могу себе позволить такой отход от рельс в существующем проекте.
>>790136 >А что делает настоящий контроллер тогда? Настройку вьюхи, вызов операций над моделями, постановка задач в очередь, проверка политик, HTTP-редиректы и т.д.
>>790138 >ну можно как дхх советует хуячить на каждый экшен по контроллеру с 1 экшеном, все контроллеры по директориям раскидать, и типа здоровая архитектура рельс возникает лул Видел эту статью. Не понял, как при этом организовывать маршруты - кажется, при этом теряется вся сила ресурсов роутера. Ну и непозволителен мне такой сильный рефакторинг в существующем приложении, опять же.
>>790111 >Но ведь любое приложение? Абстрагируемся от планировщика - речь же идет о возможности потери данных за несколько секунд. Иногда это допустимо, но это отдельно планируется и прописывается. По умолчанию мы ведь не держим в голове мысль о том, что данные за n времени могут быть утеряны. Не знаю, как у других тут, но у меня в редисе сейчас только те данные, которые можно спокойно терять. Не могу себе представить ситуации, чтобы я занёс в редис что-то, что никак нельзя терять.
>У меня в приложении есть логика связанная с платежами. При этом они не разовые point-to-point, это целый процесс, серия задач many-to-many, и у процесса есть промежуточные состояния. Это делает логику сложной и проеб задачи чреват. Понял. Согласен, в этом можно положиться только на реляционку. Но это не значит, что Сайдкик тебе не подойдёт. Ты в любом случае должен хранить в реляционке информацию о состоянии. Пусть воркер меняет эту информацию только когда операция гарантированно завершена. Также воркер должен быть идемпотентен (актуально для Сайдкика в целом). Сделай периодическую задачу, которая ставит в очередь те задачи изменения БД, которые там ещё не стоят. Уникальные задачи - это не базовая возможность Сайдкика, но я видел дополнение.
Не уверен, что это лучшее решение. Возможно, тебе не нужен Сайдкик. Я просто привык, что в каждом приложении у меня он используется почти с самого старта.
>>790699 >но теперь я знаю, как сделать то, что хочу Вру. Я хотел переопределить метод view_context контроллера, чтобы предоставлять вьюхе свой собственный контекст, в котором переменные экземпляра и методы будут принадлежать не контроллеру, а моему объекту. Но как построить такой контекст, чтобы он по-умолчанию вёл себя как рельсовый контроллер, т.е. включал хелперы и всё прочее, есть есть в обычном view_context?
Сап. Нужно задеплоить проект на ДО. Там до меня настроили капистрано. Все подкрутил, когда бандлер отрабатывает во в ремя cap deploy, сыпется когда доходит до нокогири. И пиздос, уже часов восемь топчусь на месте. На ремоуте поставил и рвмовский и системный нокогири нужной версии. Враждую на то что через gem install оно не встает прав не хватает, встает только через rvmsudo. Что делать выручите пожалуйста.
Два часа потратил на то чтобы узнать, что на Xероку read-only system. И поэтому мои файлики не заливаются. Теперь и ты потратил около минуты чтобы прочтитать и понять это бесполезное сообщение :0
>>790552 >>>Вьюхами в рельсах называются шаблоны на самом деле. А реальным view для них является контроллер - они берут его переменные экземпляра и методы. >>А что делает настоящий контроллер тогда? >Настройку вьюхи, вызов операций над моделями, постановка задач в очередь, проверка политик, HTTP-редиректы и т.д. Ничерта не понял. Ровно это делают контроллеры в рельсах. Не?
>>790573 Да, согласен с тобой. Воркер он как бы априори нечто внешнее. Поэтому нормальная архитектура должна подразумевать его отказ и не должно быть такого ограничения, что очередь воркера становится источником истины. Просто на небольшом монолитном проекте это удобно - пользоваться реляционкой.
>>790947 >Ничерта не понял. Ровно это делают контроллеры в рельсах. Не? Вот нафига было так формулировать вопрос тогда? >А что делает настоящий контроллер тогда? У меня одна претензия к рельсам - какого черта они рендерят шаблоны в контексте контроллера? Должен быть промежуточный объект - view - который настраивается из контроллера и в контексте которого рендерятся шаблоны. Это нужно, чтобы если мне надо отрендерить шаблон в контексте ДРУГОГО контроллера, мне не приходилось вспоминать, от каких методов и переменных экземпляра контроллера шаблон зависит. Если при создании этого объекта я забуду передать какую-то переменную, то будет исключение ArgumentError. Также мне не придётся дублировать код в контроллерах.
>>790957 >Воркер он как бы априори нечто внешнее. Поэтому нормальная архитектура должна подразумевать его отказ и не должно быть такого ограничения, что очередь воркера становится источником истины. Так он и остаётся опциональным компонентом в предложенной мной архитектуре. Данные в реляционной БД по прежнему самодостаточны. Они не будут неверны, если очередь задач вдруг перестанет работать - они будут хранить информацию, что нужная операция ещё не проведена и информацию о том, как её провести. Работает ли воркер на основе Sidekiq, DelayedJob или самописного решения - не важно для твоих данных. Просто Sidekiq крутая штука, и если тебе нужна очередь задач, то стоит взять его. А без очереди задач в любом случае некому будет сделать операцию над данными.
>>790966 >У них вроде бы можно отдельный дата-вольюм монтировать и хранить там что нужно. Ты представляешь, насколько это будет дороже Амазона? >>790970 >Даже в доках рекомендуют, использовать S3 >а зачем этот хероку нужен, когда можно деплоить на амазон и т.п сервисы. На мой взгляд, хероку нужен только если ты не умеешь настраивать деплой нормально. И переплачиваешь ты за это очень большие деньги. Лучше один раз разобраться с Docker и Chef. Когда вся платформа на амазоне - это очень удобно.
>>791837 >Cells далеко не везде нужны и хуево дружат с другими гемами, которые например свои хелперы примешивают.
Судя по его описанию того, что он хочет, именно они ему и нужны. А у всех нормальных гемов хелперы лежат в отдельном модуле, который можно заинклюдить.
>>791837 >render locals: {} И что, мне имена переменных по всей вьюхе искать? В тому же, логику по прежнему некуда запихнуть (не в шаблон же) >>791798 Читал я про них, что-то не очень похоже. Cells - это view models, а меня интересуют views
>>791853 По-моему как раз наоборот: cell - это просто view с кучкой хелперов, а view model - декоратор или презентер.
Locals хотя бы будет ругаться, если забыл чего-то передать, для этого. Да и в контроллере видно сразу, что именно явно попало во вьюху и никем не изменилось "где-то там, где ещё видны инстанс переменные контроллера".
>>791861 >Да и в контроллере видно сразу, что именно явно попало во вьюху Так я не хочу на каждый action явно вызываеть render. >что именно явно попало во вьюху и никем не изменилось "где-то там, где ещё видны инстанс переменные контроллера" Вообще-то контекст контроллера по-прежнему будет доступен
И от дублирования кода это никак не спасает. В каждом контроллере придётся создавать, например, query-объект Ransack на коллекции, хотя это можно было бы делать во view, если туда передаётся коллекция.
Также я хочу сделать вьюхи настраиваемыми. Например, у меня page has many events. На странице /events я хочу отображать ссылку на page каждого event'а, а на странице /pages/1/events это не имеет смысла.
>>791864 Как-то странно ты хочешь чтоб где-то всё явно было, а где-то render не писать - хоти лучше одно. И я точно говорю - cells решают все эти проблемы.
>>791875 >Как-то странно ты хочешь чтоб где-то всё явно было, а где-то render не писать - хоти лучше одно. Я хочу детерминировать зависимости, но не писать шаблонный код. Вьюха это и делает - определяет зависимости явно, но свой шаблон она рендерит автоматически. >И я точно говорю - cells решают все эти проблемы. Ладно, попробую повнимательней почитать документацию.
Как это сделать? Можно конечно тупо через итератор пройтись, это будет решением моей задачи, но это означает что будет много запросов к постгресу, а значит это неудачное решение. Собсвтенно, какой метод я упускаю?
>>791971 Вроде так: >result = Employer.includes(:skills).where('...') Эти выражения уже не вызовут запроса к БД, потому что значения из таблицы "skills" включены в результат запроса: >result.first.skills.map(&:name) >result.second.skills.map(&:name) >result[2].skills.map(&:name) >result[100500].skills.map(&:name)
Появилась потребность поднять виртуальное окружение на домашнем комплюкаторе. Комплюкатор стало быть под виндой. Скажу сразу, что поставить линупс не составляет проблемы, но ведь это не rails wayинтересно! Я себе прикинул небольшой план, выполнив который я, в идеале, получу возможность без особого гемора на домашнем компе поднимать полноценное окружение для работы с различными рельсо-проектами. И так: 1. Вагрант-бокс с убунтой, гитом и менеджером руби-версий. (Какой? За этим я сюда и пришёл) 2. Виндовая папка в которую с помощью вагрантовой синхронизации менеджер руби-версий будет складывать собственно руби и его гемы. 3. Виндовая папка в которую с помощью вагрантовой синхронизации и гита будут заливаться проекты с ремоут реп. 4. Докер с контейнерами, на видне, со всякими маст-хев технологиями (СУБД-шки, всякие эластики, воркеры, редисы и по мелочам), которые можно спокойно выносить в отдельные виртуалки. 5. Собственно утилита разработки изпадвинды, которая спокойно роется в папке с проектами. 7. .....? 8. PROFIT! Посему вопросы. Кто-нибудь с такой ебалой (ну хотябы под управлением линупса) сталкивался? Какой менеджер руби-версий можно взять, чтобы перенастроить ему папку, в которую он закидывает гемы и руби так чтобы их можно было спокойно использовать внутри вагрант-бокса? Докер, докер изпадвинды работает? Лучше чем изпадмака? Какие вообще подводные камни? inb4: купи мак, поставь линкус, забей.
>>792295 RVM. Синхронизацию VM не юзай, медленная пиздец. Ну или у меня способ синхронизации такой, хз. Теперь тупо по sftp скидываю файлы, благо RubyMine сам деплоит файлы при сейве. Докер тут нахуй не нужон. Поищи готовые конфиги vagrantfile, для рельсов должны быстро найтись
>>792298 >Синхронизацию VM не юзай, медленная пиздец. Которая из тех, что "искаробки" (помимо NFS)? >по sftp скидываю файлы, благо RubyMine сам деплоит Это конечно заебись, но я не планирую использовать рубимайн, и уж точно не планирую хранить файлы проекта внутри виртулбокса, меня интересует именно возможность хранить гемы/проекты/настроечки вне бокса, чтобы при каждом его запуске не скачивать/устанавливать их, а тупо дёргать из синхронизированной папки. По sftp то можно было и в офисе комп оставить включённым со всем нужным окружением, но это не вариант.
RVM нормально работает с не дефолтными папками для гемов? Не будет проблем потом с ручной правкой PATH-ей?
>>792318 Двачую. >>792322 Олсо если хчоешь скорости можно либо поднять гитлаб/гитхаб/битбакет и в конце рабочего дня туда всё заливать и дома дёргать. Либо есть такая штука как rsync daemon, но подходит только для юниксобогов, на винду уже несколько лет никто не компилирует rsync (хотя может кто-то реализовал протокол в другом какой-нибудь проекте?).
>>792411 перечитай вопрос. Задача была в том чтобы для каждого объекта сформировать _его_ множество nested атрибутов. Плак же все переформатирует в одноуровневый массив, т.е. потом нужно будет разбираться кому какой принадлежит.
>>793277 Какого хайпа, болезный? Руби твой хайпали с 2006 по 2010 примерно. С тех пор хайп прошел (подхватила нода эликсиры и прочие расты) и язык хиреет.
Перекатился - потому что контора основные проекты пишет (брали меня в другой проект под другую технологию).
>>793346 >язык хиреет Ещё один кукаретик. При чём тут язык вообще? Ты про рельсы что ли? Так настолько богатую и стабильную экосистему ещё поискать надо.
>>793346 Они говорят про восторги от сиквела, дубина. При этом пытаются его использовать, начитавшись этих восторгов, но так и не поняв в чём его реальное преимущество. Это не хайп?
>>793454 Ты ещё не достиг нужного уровня, чтобы понять, но я попытаюсь: ActiveRecord как паттерн - не самая гибкая вещь, и в огромных проектах модели начинают тащить на себе несколько ответственностей, усложняя код, замедляя поддержку, увеличивая затраты. Sequel позволяет этого избежать не привязываясь к конкретному хранилищу.
>>793479 Ну это всё итак понятно. Ты бы поведал, как именно это достигается. Я вот смотрел ROM, там паттерн репозиторий, модель не привязана к таблице БД, действия также вынесены в отдельные объекты, т.е. данные, логика и хранение разделены.
>>793504 >Дык Sequel тот же паттерн реализует. Дак не надо им пользоваться. В этом и понимание. Мало ли че он там реализует, нужно пользоваться тем, что он не навязывает тебе ActiveRecord.
Так может кто-то рассказать про связь экшенов и вьюх в рельсах? С разными вариантами которые бывают, а то в пыхофреймворках все просто, есть экшен, он становится адресом, в нем в ретурне можно указать любую вьюху, во вьюху параметры передаются вместе с ее вызовом, и все так простенько вроде. В рельсах же не понял ничо, вроде путь прописываешь сам, а контроллер по дефолту возвращает вьюху с таким же названием.
Вечер в хату, Рельсаны, стремящийся в треде. Есть какой годный простой гем для отображения на сайте города посетителя или его выбора города из селекта? Или советы мудрые как это сделать? Чет не могу найти, geocoder вроде комбайн на все случаи жизни, а мне чего попроще надо. Да и сайт не сайт, а лендинг для портфолио типа "во как могу".
Ищу рор джуна. Работа удалённо, без строгого графика.
Нужно: - Работать с Rails 5 - Иметь представление что такое Postgresql - Уметь работать с git - Уметь в heroku - Должен работать в linux\macos (windows юзеры де-факто не подходят, сорян)
Если нет реального опыта работы с чем либо выше или вообще никогда не работал как рор дев, то смело пиши, придумаем что-нибудь.
С меня зп, менторство до стабильного миддла. Сразу указывай опыт, аккаунт на GH, месседжеры для связи и зарплатные ожидания.
Принимаются изменения в шапку треда в виде пулл-реквестов:
https://github.com/meoweg/2ch-pr-ruby
Как показывать код:
Быстро - https://pastebin.com
С исполнением - https://ideone.com
Требуется аккаунт GitHub - https://gist.github.com
FAQ:
1. C чего мне начать, чтобы стать рубистом?
Отличным началом будет Programming Ruby (The Pragmatic Programmers Guide), читать Eloquent Ruby и The Well Grounded Rubyist после прочтения первой толку особо не даст, одни и теже вещи, дальше читаем Ruby Way, затем познаем метапрограммирование с Metaprogramming Ruby. А дальше открываем Ruby cookbook 2015 года, Пишем свой код во время чтения.
Следующий уровень, продвинутые книги по руби:
Confident Ruby by Avdi Grimm
Practical Object-Oriented Design in Ruby
Refactoring Ruby Edition
Ruby Under a Microscope для любителей залезть под капот.
Документация по стандартным библиотекам http://ruby-doc.org/
Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
И ещё раз онлайн: http://www.codewars.com/?language=ruby
Не веришь в свои силы? Прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com
И вот еще https://rubymonk.com/ - Матц одобряет.
2. Какой gem посмотреть, чтобы понять, как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancancan, pundit, camping.
А еще можешь полистать на гитхабе гемы с нарастающей популярностю.
https://github.com/trending?l=ruby
Там еще нет тысяч строк, и тебе будет легче понять.
3. Есть ли GUI для руби?
Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО?
Да. Для iOS есть RubyMotion терпимого качества, для Android - лагающий и падающий, но всеми силами развивающийся ruboto. Для WinPhone до сих пор ничего не завезли.
5. Как установить разные версии рубей?
Легко и просто: https://github.com/sstephenson/rbenv
И это тоже, легко и просто: https://rvm.io
6. Что почитать по рельсам?
http://guides.rubyonrails.org
http://ruby.railstutorial.org
API: http://api.rubyonrails.org
Прекрасные туториалы в стиле for dummies - http://www.theodinproject.com/ruby-on-rails , а вот тут все тоже, но на русском http://codenamecrud.ru/
Классический вводный туториал, где делается с нуля клон твиттера, для новичков в rails самое то - https://www.railstutorial.org/book
Для дотошных читателей есть The Rails 4 Way.
7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, смотрим Rails Best Practices, также неплохо посмотреть Rails Recipes.
Почитайте еще Grimm A. - Objects on Rails
Еще продвинутое чтиво - http://tutorials.jumpstartlab.com/
8. Ruby/Rails блоги, рассылки и твитторы
IRC каналы на FreeNode: #ruby, #ruby-core, #RubyOnRails, #rails (не очень активен).
Твитторы @rails, @dhh, @yukihiro_matz, @wycats, @tenderlove
Рассылки ruby-core, rails-core, rails-talk
Подкасты:
- http://rubyrogues.com
- http://ruby5.envylabs.com
Скринкасты:
- http://railscasts.com
- https://peepcode.com
- https://www.destroyallsoftware.com
- http://railsforzombies.com
Блоги:
- rubyflow.com - каждый день новости, новые библиотеки, обновления, все дела.
- rubysource.com - читаем интервью, хорошие практики, и безумные сравнения упоротого дибила-индуса на самом деле их пропускаем
- rubyinside.com - новости, туториалы.
- rubyweekly.com
- http://37signals.com/svn
- http://yehudakatz.com
- http://afreshcup.com
9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.
10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - [email protected]
А еще есть русская слак конфа - https://russiandevs.slack.com она общая, но есть очень активный руби канал.
Так же русская гугл группа, активная - https://groups.google.com/forum/#!forum/ror2ru
Еще вот - https://onrails.club/
11. Какие гемы стоит знать?
capybara, rack, rspec, devise, cancancan, simple_form, solr, sinatra, тысячи их.
Поиск гемов https://www.ruby-toolbox.com
12. Зачем нужны тесты и как их писать?
http://rusrails.ru/a-guide-to-testing-rails-applications
http://habrahabr.ru/post/163597/
Вместо этого можно прочитать классную книгу Everyday Rails Testing
13. Где можно задать глупые и не очень вопросы?
- здесь
- stackoverflow.com
- тематические slack-конфы
- а вообще, гугли, с вероятностью в 90% ответ на твой вопрос уже висит на stackoverflow.
14. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.
15. В чём писать код?
Atom, Brackets, Sublime Text, TextMate, Vim, GNU Emacs. Для особо упоротых энтерпрайз-макак есть rubymine, плагины к эклипс и нетбинс.
16. Можно ли писать на руби с под windows?
Можно, но придется обрасти костылями в виде виртуальной машины, придется сходу разбираться с Vagrant и многим другим. Чем дальше ты продвигаешься, тем ближе становится ясно, что пора перекатываться на linux/mac
17. Руби язык одного фреймворка?
Есть еще Sinatra, Hanami (ранее Lotus), Volt, Grape, отличные штуки для DevOps - Chef, Puppet и годные генераторы для бложиков - Jekyll, Middleman, всё это активно используется в продакшене
18. Можно ли делать игры на Ruby?
Можно, но не нужно. Гем Gosu.
19. Ютуб каналы
Youtube driven development...
Вот тебе пара каналов, но никому не говори что учишься по видео.
https://www.youtube.com/channel/UCIQmhQxCvLHRr3Beku77tww/videos
https://www.youtube.com/channel/UCfWZwsP8trUy5uHJg8gcGIQ
https://www.youtube.com/channel/UCSI77lJlzlCFPLdV1RSAoYQ
https://www.youtube.com/channel/UCPIyDzf1vwWc8EQJGUX-vYw - тут на ру$$ком даже.
20. Как и где искать работу?
Легко и просто - http://rubyjobs.ru/
Не так просто - https://upwork.com/
Еще вконтакте есть группы по руби/рельсам, там иногда постят вакансии. Еще в русской гугл группе постят вакансии. Новичку будет сложно, но возможно.
TODO лист для ньюфагов:
И так, ты поставил руби, уже сгенерировал свой первый проект rails new pidaras
Начни уже с платинового пути, блог >> клон твиттера >> своя имейджборда >> свой гем >> дальше сам придумаешь.
Рекомендации:
1. Для блога, создать роли, Админ, Пользователь (можно использовать паттерн form object). Прикрутить лайки, комментарии.
2. По твиттеру, следуя гайду Хартла, пиши все то что он предлагает в качестве доп. заданий, например оповещение по нику (@eblan: привет)
3. По имиджборде: воссоздать по возможности полный функционал, в этом случае придется ознакомится с javascript/jquery/coffeescript, но тебе так или иначе придется. Еще хорошей фичей будет использование background job и крон тасков (sidekiq, whenever), чтобы заполнять свою борду тредами и постами с другой борды, можно использовать api двача, чтобы вытягивать треды и посты - https://github.com/ID25/api_2ch
4. Не стесняемся постить свои репозитории, наши эксперты с радостью отревьювят вас.
После этого тебе будут нужны паттерны, без них твой код превратится в говно. Один из часто используемых - Service Object.
https://netguru.co/blog/service-objects-in-rails-will-help - о сервисах
Еще паттернов - https://robots.thoughtbot.com/back-to-basics-solid
Но самый читаемый код, как и следовало ожидать, даёт функциональное программирование. Начни отсюда:
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-i/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-ii/
http://www.sitepoint.com/functional-programming-techniques-with-ruby-part-iii/
http://www.sitepoint.com/functional-programming-pure-functions/
http://www.sitepoint.com/functional-programming-ruby-value-objects/
Только не переборщи. Руби - не функциональный язык, и иногда такой код может работать медленней.
Прочитал? Теперь рефактори то, что уже написал. И не забывай покрывать тестами.
Хорошим финалом будет деплой, это пожалуй самое болезненное, и ничего общего с деплоем на heroku, где тыц тыц и готово. Придется поковыряться со смежными вещами и узнать много нового, уже устоявшийся гем для таких дел - Capistrano.
Не забывайте спрашивать у анонасов вопросы, код лучше показывать через gist или pastebin с подсветочкой.
Ну, а мы открываем очередной Ruby Thread.