Вы видите копию треда, сохраненную 31 июля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Принимаются изменения в шапку треда в виде пулл-реквестов:
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. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - rubzdDyANUSjabbe~V3rPUNCTUM*n5ru
А еще есть русская слак конфа - 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.
Я вижу в заголовке Ruby on Rails 3, т.е. перевод устаревший. лучше читай оригинал https://www.railstutorial.org/
Там перевод официального руководства.
http://pastebin.com/
Гуглил, смотрел, читал-довольно противоречиво. Где-то говорят, что работы дохуя, а где-то, что хайп прошел, работы нет буду менять язык ко-ко-ко.
Что такое кофе скрипт и препроцессоры в css и html ?
Вот тут есть пример database.yml
http://stackoverflow.com/questions/19860122/rails-rake-dbcreateall-could-not-connect-to-server-psql-works-fine
>Что такое кофе-скрипт?
CoffeeScript — скриптовый язык, транслируемый в JavaScript. CoffeeScript добавляет синтаксический сахар в духе Ruby, Python и Haskell для того, чтобы улучшить читаемость кода и уменьшить его размер. На самом деле нет.
>Что такое препроцессоры CSS?
CSS preprocessors: LESS, SASS, COMPASS, TeaCSS. Расширяют CSS всякими фичами с добавлением сахара.
— умеешь в руби (ссылка на гит с каким нибудь ненужным гемом)
— умеешь в ror (еще одна ссылка, на ненужный проект уже на рельсе)
— умеешь в TDD тестирование
— умеешь в гемы devise, boostrap/foundation/, rpsec и прочие
— умеешь пердолится в гитхаб, знаешь как свитчится между ветками, скушить коммиты и прочее.
— умеешь в деплой на хероку
— умеешь в верстку по psd (совсем не руби, но всем насрать)
список можно продолжать до бесконечности, что хочешь то и пиши.
Умееть пиздеть языком.
Еще забыл работу с бд указать, хз. Умение в аяксификацию, тоже было бы неплохо.
Это так самый минимум, чтобы было о чем поговорить. Ну и никто не говорит прям все нужно знать, но понимать да. И еще уметь решать задачки с помощью указанных технологий.
А если хочешь показать, что что-то знаешь то будь готов побеседовать на тему метапрограммирования в руби, orm моделей и их реализации через active-record. Ну и в таком духе.
Какой тут хуяк-хуяк и в продакшн, если "джуниору" выше нужно два дня только для того чтобы пустой rails server запустить.
Москва не сразу строилась.
А вот и выебщики пожаловали.
Не надо сравнивать джуна со школотой котора вчера прочитала про высокие зарплаты и вучила синтаксис ЯП по кодскул.
Джун должен уметь работать в линуксе и командной строке, понимать базовые структуры данных и алгоритмы (сортировки, поиск).
Ну, а че в продакшен тоже надо уметь. А то читаешь какой-нибудь стаковерфлоу. Вопрос типа в продакшене на хероку пишет иррор «сикрид кей из миссед». На что придурки отвечают, добавь свой сикред кей в проект на гитхабе и норм. А другие придурки плюсуют этот ответ, да так что он в топе.
И потом сидишь и тихо плачешь, теряя последние остатки веры в человечество.
Тащемто этот анон хорош. Умеет в линукс, не побоялся зайти на официальный irc канал и решить проблему с установкой postgres. Настроил yml, запустил приложение. Если так и дальше пойдет, то всё будет ок. Зря ты его демотивируешь.
Спасибо,анон,а для чего это нужно?
тот же кофескрипт,это просто JS обернутый в синтаксис Ruby (типа),никаких новых фич он не несет?
и зачем все пишут в habl+less\sass ,если есть чистый css\html ,это помогает разработчику?
Добавляются всякие улучшалки, чтоб легче было код править. Но можно и без этого обойтись, конечно же. Погугли уже, ну.
Вики, официальные сайты смотрел?
Я, честно говоря, не понял что там у него за проблема была. Постгрес не запущен, нужно было запустить, или чо?
Уметь в линукс веб разработчику это базовый навык, как уметь в английский. Скомандовать какие-то совсем простые вещи компьютеру в терминале и уметь прочесть документацию или решение проблемы на stackoverflow.
То что анон сразу идет в irc канал со стандартной проблемой, которая (я уверен) уже описана на первых страницах гугла — вряд ли хороший показатель.
Просто я сейчас не совсем уверен, вот это >>766969 шутка или в 2016 воннаби-погромисты всерьез думают что этого достаточно для того, чтобы его взяли на любую, даже самую элементарную работу рельсоразработчика? Хоть бы railstutor прошел, кек, там дел на пару дней максимум.
>рельсоразработчика
Хуй знает, как там у вас — у рубистов. Но на должность .Net джуна меня взяли охотно. До этого я ни разу не кодил на C#. Перед собеседованием почитал чуть-чуть Хабрахабру и установил Visual Studio.
>Я, честно говоря, не понял что там у него за проблема была.
Нихуя не понял, но выебываешься.
Ну так объясни, что там за охуеть проблема была, что аж в чатик нужно было идти. В том скриншоте что он прикреплял упоминаний нет. В задаче "развернуть окружение по умолчанию" в принципе не может быть каких-то необычных проблем, все уже изъезжено вдоль и поперек. Скорее всего, сказали ему что-то вроде "у тебя постгрес не запущен, запусти постгрес".
>>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), а потом будет трахать всем мозг, почему какой-нибудь нокогири (или другой связанный с рельсой гем) не ставится или чудно работает (спойлер: в книге ставят через судо, так не надо делать).
пока человек не научится думать, подобные проблемы будут возникать регулярно.
А я не ставлю postgresql-server-dev-all, я ставлю libpq-dev.
В чем разница хуй знает.
А по какому протоколу общаются постгрес клиент и сервер? Вопрос странный, но я просто задумался, они же по сети общаются, значит есть какой-то протокол прикладного уровня?
Неа, не в этом была проблема.
Не понимаю, как это все работает. Какое место занимает ODBC? Я не слышал, чтобы он использовался в рельсах.
> спойлер: в книге ставят через судо, так не надо делать
Можешь пояснить? Типа они тогда ставятся для рута, а надо текущему юзеру ставить чтоб работало?
>>767183
Алсо, нигде не сказано https://bitbucket.org/ged/ruby-pg/wiki/Home что нужно поставить библиотеку libpq.
Этим и ценны сообщества потом. Дебилы не нужны.
Короче
Суп 2ч
Не знаю как тут у вас, если что не насовывайте хуев
Есть работа, горит дедлайн и я горю пиздец
Сделал в дешборде админки страницу чтобы добавлять в базу заинвайченных юзеров
Надо как-то добавить метод мейлера на экшен по сохранению этой формы в activeadmin а я не ебу как.
Думал еще создать кастомную вьюху для эктивадмина с формой и таблицей, но так и не раздуплился с синтаксисом, потому что для глориус пехопе разработчика ето пиздец.
Превентивно спс за помощь гайс
Решил так и сделать, но чет нихуя не получается
Смотри, я сгенерил контроллер и модель
Но блядские обращения к контроллеру ( @invite, @invites) не работают и все оч плохо.
Даже не могу понять где обосрался.
Да, да винда, все оч плохо
Алсо, можешь ебануть after_create в модель юзера, который будет слать почту после его создания. А когда захочешь создавать юзеров без уведомления на почту, то просто обернешь в ActiveRecord::base.supress и все.
Это меня выручило. Конечно тут надо будет переделать чтобы все-таки юзать вьюху, но ща это охуенно, спасибос.
> новое
> DHH
Но ведь DHH в не-японском руби комьюнити был с его появления, а подъехало новое поколение ступидентов с промытыми SOLID-парашей черепными коробками..
Да пацаны на дваче сказали что я и мой код хуйня вот я и сказал что переделаю чтоб не думали что я лох, че ты)
>туториалы всеравно нужно уметь читать и понимать что там пишут.
Нужно. Но туториалы описывают общий случай и не могут учесть всё проблемы, которые могут возникнут. А они возникнут, потому что могут. Так мне и сказал на официальном IRC-канале один из разработчиков СУБД. В общем, я обратился по адресу. Некоторые компоненты тянули за собой старые зависимости, а другим требовалась новые, что не так просто было понять. Особенно человеку, который впервые устанавливает PostgreSQL под Linux.
Коллбэки и тем более этот самый сапресс - хуйня из под коня, модели выходят из под контроля из-за них, невозможно представить, что произойдет, если ты вдруг просто захотел ее создать. Это еще и затормаживает и усложняет тесты, если ты пользуешься factories. Самый толковый способ - делать всё через сервисные объекты, команды и запросы (CQRS), чтобы модель вообще ничего не знала о логике приложения. Она только отражает данные и может делать какие-нибудь простые преобразования с ними, типа отдать деньги вместо центов и валюты и т.п.
Ну знаешь, обычно я так и пишу хуйня в том что у меня больше всего опыта на йии а тут срочно надо было сделать пару вещей на рельсах. Но обычно я так делаю из-за каргокультизма когда начитаюсь чужого кода. Херово во всем разбираться без сеньйоров, разок вылез на борду посоветоваться с пацанами Вот напрошусь на лето куда-нибудь стажироваться, тоже буду умничать
Фигово значит, раз твой опыт тяжело портируется и зависит от инструмента. Перестань каргокультировать, почитай что-нибудь по теме, вдумайся почему так, а не иначе.
thnx,anon, ты просто няша
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 не работает. Ничего не понимаю, что я делаю не правильно?
У тебя, видимо, модель admin_rights у какого-то пользователя не создана. Вот связь и равна nil.
Блять пиздец вот я дибил, сука даже в консоли посмотрел что так и будет происходить и всеравно под пользователем без прав логинился и пытался что-то сделать. Сука целый уже два часа ищу в чем проблема. Спасибо.
обосрался с разметкой, но сути не изменилось
Ты с хероку наебёшься ещё. Ассеты - это ещё ладно, гораздо большие проблемы будут потом. Купи лучше vps. Пять баксов в месяц - это немного. Держи рефералку. Зарегистрируешься по ней - дадут 10 баксов, на два месяца хватит, а потом сам решишь, продлевать или дальше ебаться с хероку. https://m.do.co/c/30374288c505
3 гига теперь не оверхед для админики? ну ок.
GitLab разрабатывают какие-то припизднутые хохлы, так что итог понятен, всё воруют собаки, рельсы, гемы, оперативку.
Благодарю за разъяснения, мил человек.
Кастомная впс настраивается в две команды и её настройка абсолютно логична (если ты не спермодебил, но мы не в сишарп треде). В хостингах вроде хероку нужно осиливать и вызубривать тонную документации, которая суть есть - надстройка над впс. Какой ты нахуй серверный разработчик, если не можешь запустить сервер?
Да тут каждый второй задаёт вопрос как на винде установить руби и рельсу, ни одного маковода или пинуксоида в тред уже давно не заносило, только школота на винде.
Ну в ридонли то наверняка сидят опытные сеньоры 300к в секунду.
Тупое ебло с гостевухой, давай настрой мне в две команды простейший сетап с лоад-балансером и 3 ВПС-ками: одна под СУБД, 2 под приложения, Как минимум с ротацией логов везде или лучше с их сбором на отдельной машине(а ты сука как думал? Когда вся эта хуйня развалится из-за того, что логами весь диск засрало, кого в жопу кочергой ебать будут?). С ежедневными и еженедельными бекапами СУБД на S3 и их ротацией. Естественно нужен редис хотя бы для sidekiq-а и шедулер, придумай там че-нить с кроном.
В две команды, ебло. И попробуй только спиздануть про "нинужно", это блять самый минимум того, без чего нельзя жить в продакшне. Опционально можешь еще поебаться с графитом и собрать минимальный набор метрик и настроить хотя бы мастер-слейв репликацию.
Ты считаешь, что хероку нормально заменит
>лоад-балансер и 3 ВПС
Серьезно? Ты редкостный даун даже для двачей.
>не работает хероку, как починить?
>подними впс, там быстро
>ПОДНЯТЬ ТРИ ВПС И НАСТРОИТЬ КУЧУ СОФТА ЭТО БЫСТРО?
>при чем тут три впс и куча софта? Я говорю об одной вместо хероку
>Хуясно
Вся суть треда.
Да это баттхертнутый сисодмин-эникейщик встрял в разговор, не обращай внимания.
> сисодмин-эникейщик
Это ты про свитера, который предлагает разворачивать всю инфраструру на коленке вместо того, чтобы воспользоваться готовым решением от хероку?
> хероку
Хуёку.
Можно инвестировать час своего времени, зато потом платить 5 баксов в месяц, а не 50. Т. е. уже после первого месяца у нас выгода. Умножаем на 100, и...
Это я про дивана, который для тестовой визитки хотел поднять три сервера.
>всю инфраструру
Установка рельсов - это пара команд, а на выходе получится та же хероку, только без ограничений/оплаты.
Какого хуя может вдруг наебнуться рельсовое приложение?
В частности, наебнуться доступ к БД?
У всех остальных частей системы все работает. Сервер БД тоже ессно работает, доступен без 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)
Ооо, с засранным диском от логов рельсового говна сталкивался, солидарен с тобой братишка.
Почему ебаные рельсодебилы такие тупые в основной массе?
>ERROR -- : could not connect to server: Connection refused
Сервер шлет тебе TCP reset
Это значит, что этот порт никто не слушает на сервере, или фаерволл.
Проверь фаерволлы и бинлинг сервера.
Да нет никаких файрволов, это интрасеть в EC2, все на Ubuntu 16.04.
Сервер БД доступен, к нему можно законнектиться с тачки где рельсы стоят, даже например по телнету. Типа через telnet 172.31.8.138 5432
Наебнулось оно ВНЕЗАПНО. Рельсовые разработчики в отпуске(есть подозрение что перед ним какой-нибудь ебанутый гем задеплоили и он все сломал). Я вообще на C# пишу, и немного девопсю, и на соседних тачках мой сервер отлично с БД работает.
inb4: ПРОДАКШН, КЛИЕНТЫ ЖАЛУЮТСЯ
>Сервер БД доступен, к нему можно законнектиться с тачки где рельсы стоят
Может в рельсах неправильный URL в конфиге указан? Смотри config/database.yml
>ПРОДАКШН, КЛИЕНТЫ ЖАЛУЮТСЯ
В staging ваши разработчики не умеют?
>Может в рельсах неправильный 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)
Попробуй это:
http://stackoverflow.com/questions/19828385/pgconnectionbad-could-not-connect-to-server-connection-refused
стейджинг работает, хз
database.yml:
production:
host: <%= Rails.application.secrets[:database][:host] %>
port: <%= Rails.application.secrets[:database][:port] %>
adapter: postgresql
encoding: UTF8
database: <%= Rails.application.secrets[:database][:name] %>
pool: 10
reaping_frequency: 30
username: <%= Rails.application.secrets[:database][:username] %>
password: <%= Rails.application.secrets[:database][:password] %>
schema_search_path: <%= Rails.application.secrets[:database][:schema] %>
secret.yml:
---
production:
secret_key_base: БУКВЫЦЫФРЫ
database:
:host: 172.31.8.138
:port: 5432
:name: ИМЯДБ
:schema: ИМЯСХЕМЫ
:username: ИМЯПОЛЬЗОВАТЕЛЯДЬ
:password: ПАРОЛЬ
стейджинг работает, хз
database.yml:
production:
host: <%= Rails.application.secrets[:database][:host] %>
port: <%= Rails.application.secrets[:database][:port] %>
adapter: postgresql
encoding: UTF8
database: <%= Rails.application.secrets[:database][:name] %>
pool: 10
reaping_frequency: 30
username: <%= Rails.application.secrets[:database][:username] %>
password: <%= Rails.application.secrets[:database][:password] %>
schema_search_path: <%= Rails.application.secrets[:database][:schema] %>
secret.yml:
---
production:
secret_key_base: БУКВЫЦЫФРЫ
database:
:host: 172.31.8.138
:port: 5432
:name: ИМЯДБ
:schema: ИМЯСХЕМЫ
:username: ИМЯПОЛЬЗОВАТЕЛЯДЬ
:password: ПАРОЛЬ
>>768521
>>768521
>>768521
>>768521
>>768521
>>768521
Prover nastroyki vpc, tam est faervol, nazyvaetsya acl
Snimi damp trafika PRI obraschenii prod I stage serverrov k db I sravni
5 раз проверил, все работает еще раз. Даже телнетом законнектиться к БД можно.
Стейджинг вообще на левом хосте у рубистов самих, у них там на одной коробке все.
Я смотрел логи БД, она говорит, клиент сбрасывает соединение, не закончив передачу ээ рукопожатия при коннекте.
>>768533
Там вариант про юникс сокеты и все-на-одной-коробке, это не про нас.
Короче ебаные рельсы, заебался. Ждем пока кто-нибудь из этих рубистов подтянется.
Вот блядь ни разу с такой хуетой не сталкивался на дотнете да или даже на похапе. А в рельсах даже хуй поймешь где искать. Пиздец просто. Ебаные хипстеры криворукие.
Недождёшься, они сейчас презентацию Apple смотрят, обтекают.
Базарю, окажется какая-нибудь системная ебатория, но ты все равно продолжишь думать, что ето рильсы феее.
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
Не могу нагуглить само приложение. Кто-нибудь в состоянии это сделать?
БЛЯДЬ ЭТО ФЕЙСПАЛМ.
Чуваки коннектились ко внутренним сервисам по ip и ПРОВЕРЯЛИ СЕРТИФИКАТ SSL НА ВАЛИДНОСТЬ И СООТВЕТСТВИЕ
СЕРТИФИКАТ SSL ПО АЙПИ БЛЯДЬ
сука блядь.
А вы говорите, руби.
Да ну его нахуй таких программистов.
Это вот такие программисты с винды приходят, хуяк-хуяк, убунта в путти и в продакшен))
А тут такие опытные рельсовики им хуяк-хуяк рассказывают что before fastthread we had ~400 restarts a day, now we have perhaps 10 и хуяк-хуяк все заебись
http://harmful.cat-v.org/software/ruby/rails/is-a-ghetto
мне недавно рубисты сломали судо при деплое через ansible. а еще юникорн жрет ебаные 500 мегов при старте. а еще на какой-то хуй нужен намейкинсталленный редис, и сайдкик.
ASP.NET WebAPI приложение, при этом, деплоится в один клик в студии/однострочник в powershell, жрет на порядки меньше, и работает на порядки быстрее, и там всего этого левого говна почему-то не надо.
>однострочник в powershell
>деплоится
На IIS небось деплоится, спермораб? Рельсы может и говно, но об спермотехнологии шквариться это уже совсем никуда не годится.
На го надо перекатываться, хуй знает какие еще варианты.
Допустим на IIS деплоится. Но IIS это нормальный такой сервер.
У вас там в прыщеблядинске есть тот же nginx, только почему-то ебанутые рубиблядки его не используют по назначению, а пидорасят свои unicorn и прочее непонятно зачем нужное говно.
Почему тогда похапебляди его используют правильно и по назначению?
В AWS статика вообще-то в CloudFront лежит. А для load balancing там вообще ELB.
Вопрос почему не использовать nginx как веб-сервер или наоборот, только unicorn? Вопрос зачем вообще нужен unicorn? Вопросы риторические. Ответ - потому что ебанаты.
Так у похапеблядей свои fmp вместо юникорна. У рабиблядей nginx статику и раздает. Не пойму до чего ты доебался.
"всё тормозит" и " робуст скейлебл энтерпрайз" это не одно и то же, хотя второе часто включает в себя первое
Процесс разработки чего?
Go удобен для всяких утилит небольших - оттуда берем, здесь парсим и умножаем на 2, туда кидаем. В любом хозяйстве такие требуются часто, и джуниорам можно поручить - не сишечка, и слишком уж сильно тормозить не будет - не руби-перл-питон-пехапе.
ну тут го пишут в одном посте с рельсами, видимо подразумевая что он сможет заменить
Чтоб он мог для рельсовика заменить рельсы, ему нужны свои рельсы, только на го.
Но так как большинству людей непонятно нахрена это делать, когда рельсы уже есть, то серьезных попыток сделать на го что-то похожее на рельсы не предпринимается.
Что предпринимается более или менее всерьез - это попытки сделать какие-то аналоги синатры или других более легких фреймворков, но это история совсем другая.
Рубидети сишечку не осиливают? Так еще и паскаль есть, там всякие средства чтобы не выстрелить себе в ногу.
> то серьезных попыток сделать на го что-то похожее на рельсы не предпринимается
Во всех языках давно уже есть рельсы: Python/Django, PHP/Laravel, C#/ASP.NET MVC, Java/Spring, Play.
>Во всех языках давно уже есть рельсы: Django, Laravel, ASP.NET MVC, Spring, Play.
Даже рядом не стоит
>У вас там в прыщеблядинске есть тот же nginx, только почему-то ебанутые рубиблядки его не используют по назначению, а пидорасят свои unicorn и прочее непонятно зачем нужное говно.
Тупой? Реверс прокси и сервер для статики отличаешь от сервера приложений?
Unicorn говно, как я выше написал, сейчас есть Puma - лёгкая, многопоточная.
>это я тебе как дотнетчик говорю
Если у вас в спермомирке и принято мешать всё в один огромный продукт, то это не значит, что все так должны делать.
Если бы ты хоть немного вник в разницу, то понял бы, что у nginx и сервера приложений принципиально разные задачи. Современный сервер приложений держит и спавнит воркеры (и в виде процессов, и в виде потоков) с учётом особенностей среды выполнения. Например, руби и рельсы хорошо используют copy-on-write, поэтому там просто fork. Также он держит загруженной среду исполнения, потому что загрузка рельс с нуля длится несколько секунд и делать это на каждый запрос невозможно.
Алсо, именно из-за fork'а под виндой не используют Puma, а только Unicorn и прочее устаревшее говно.
>Алсо, именно из-за fork'а под виндой не используют Puma, а только Unicorn и прочее устаревшее говно.
А, вру, Unicorn тоже не работает под виндой.
>Алсо, именно из-за fork'а под виндой не используют Puma
И снова вру, Puma как раз используется под виндой (видимо в однопроцессном режиме, только на потоках)
На винде вообще никто не использует рельсы. Там все пишут на ASP.NET MVC/Web API, который изначально был клоном рельс, а сейчас уже далеко их обошел.
>у nginx и сервера приложений принципиально разные задачи
Тем не менее nginx тоже может быть аппсервером, если к нему приложить ngx_lua, например.
>>770014
Если ты не понимаешь что твой IIS, к которому ты приделываешь нет-сборочки своего шарпо-говнокода это аппсервер (ничем не отличающийся принципиально от апача с модперлом) - это твои дотнетопроблемы
IIS это веб-сервер который умеет запускать дуднет код для обработки реквестов, тащемто все.
Аппсервер это баззворд.
Друзья не позволяют друзьям использовать Internet Explorer (а также IIS).
Ты можешь сколько угодно доказывать тут преимущества IIS, но никто в мире его всё равно не использует: потому что вендорлок, медленный, закрытый, нерасширяемый (только в пределах допустимых самой мс), виндовой (боже мой, 2016 год, никто винду на сервера и в страшном сне не поставит кроме рашки-парашки конечно).
Только не говори, что не слышал про IBM, там то точно никакого вендорлока нет.
Чета только мое приложение на ASP.NET работает на порядки быстрее чем прыщеблядинские скриптоподелия. А также, отлаживается легче, конфигурируется и т.п.
Не слышал, а что там в IBM, завели стайку серверов по заказу МС для рекламы IIS, как это было с HPC из top500, который никто не использовал толком?
>>770105
Небось ещё и само себя пишет, член тебе полирует и спать укладывает?
Ну как бы IBM более 60 процентов профита делает с софта и прочих околоплюшек, а не железок, как ты мог подумать. А то, что ты не слышал об этом софте, как бы намекает, на его охуительность вообщем.
если включить ебаный консалтинг по всему то будет все 80 процентов профита. Железо от силы процентов 10, в лучшем случае.
При том что весь энтерпрайз сектор микрософта это максимум 5 часть от того, что имеет IBM. При всем этом ты даже не слышал, что они делают софт(у них тоже есть свой IIS личной реализацией рантайма), чтобы почитать документацию на это, нужно оплатить лицензию, т.е. человек с улицы на вакансию по девелопу под этот софт и платформы просто не сможет попасть. Есть куча спецов внутри IBM они имеют спец отдел аутсорсинга, который помогает тупым людям, кто купил их софт его настроить и под него писать проги. Микрософт гавно не спорю, но любой чел с улицы разберется как писать веб апы под IIS, потомучто полно инфы в инете. А вот если я тебе за Датастэйдж посажу, ты в нем увязнешь и помрешь, этот софт не заводится своими собственными силами, он напсан для того чтобы ты потом пришел к ним и заплатил за уроки и консультации. Вот что такое вендорлок.
IIS-экосистема на серверсайде используется достаточно широко. Это в основном интранеты в больших и средних компаниях - SharePoint, MS SQL Server и ASP.NET. Аппсервером IIS, конечно. У взрослых еще MSMQ и MTS. IIS быстрый, даже очень. Часть его хуярит в ядре, например. Но это, конечно, не главное в его выборе, главное экосистема и то что все друг к другу хорошо притерто и среднетупой макак мышкой навозюкает что-то более-менее работающее за приемлемое время.
Из highload энторнет-сайтов на этом работает StackOverflow - да, с MS SQL Server в том числе.
Энтерпрайз сектор MS и IBM сравнивать некорректно, они почти не пересекаются.
Во-первых, IBM почти все свои деньги зарабатывает на консалтинге, а совсем не на софте и железе. Софт и железо обычно идет в комплекте тоже, но составляет единицы процентов от суммы контракта.
Во-вторых, IBM это верх энтерпрайза, MS - середина и низ.
Т.е. сначала сам доказывал, IIS норм, а теперь говоришь обратное? Ну ок.
То что IBM творит мерзости не оправдывает майкрософт.
Да, дела так сложились, софт закупают идиоты которых окучивает МС и втюхивает им свой «софт». Тут много всяких причин, тупость, привычка, нежелание держать высококвалифицированных сотрудников. Вкладываясь в МС ты всегда должен быть готов выкладывать кучу бабла каждый год и к увольнению, потмоу что разработка софта перестала быть приоритетным направлением и теперь твою работу буту выполнять специалисты из солнечного бангалора.
>>770121
Про среднего макака написал выше. Выгодно работодателю, не выгодно работнику, а здесь больше форум работников.
>Из highload энторнет-сайтов на этом работает StackOverflow - да, с MS SQL Server в том числе.
Стаки сами писали, что знаю о том что это не самое оптимальное решение и работают по привычке, а не потому, что это самое лучшее решение. Неизвестно сколько человеко-часов было бы сэкономлено, если бы они выбрали другие технологии.
Основной доход МС это лицензии на офис, все остальные направления убыточны.
Во-первых, разговор про вендор лок, IIS типа вендорлок, сказал анон. Я на примере обьяснил что такое на самом деле вендор лок. Консалтинга не было бы если бы IBM сделал нормальный софт, который можно было бы юзать без консультантов. Но это их стратегия, такчто софт здесь как раз основной источник доходов, и это и есть вендорлок. Потомучто когда тебе потребуется, что то расширить к твоему IBM софту, к тиебе придут консультанты и скажут, что нужен вот этот продукт от IBM остальное не заведется, и так по кругу.
Есть спецы, а есть сертифицированные специалисты, это две разных стязи. Вендору выгодно, чтобы сертифицированных было больше, он за них деньги получает. Микрософт идет на встречу спецам более менее, для IBM это до сих пор нелюди.
Что касается самого заказчика, он не дурак и понимает куда лезет когда заключает контракты на консалтинг с этими гигантами. Но фишка в том, что, как правило, лобист решений и конченый человек, кто выбрал решение это обычный пордакт менеджер который захотел прикрыть свою жопу и всегда иметь возможность скинуть все на вендора если будет срыв проекта. На одного спеца все сложно скинуть, ведь он его нанял, а тут целый вендор подставил. Ну еще бывает банальный распил как опция.
Единственная выгода для вендора это лок на него, так что спец убивший время на сертификацию конечно выгоден, потому он не пойдёт учить что-то другое, кушать-то тоже хочется.
Спецы, как я понял это независимые специалисты, которые тем или иным образом работают с продуктом так? Вот что-то не кажется мне что МС идёт на встречу спецам, потому что тогда бы они помогали разработчикам того же вайна или чувакам которые хотели портировать сильверлайт на линукс. Идти на встречу спецам для МС означает хоронить свой бизнес основанный на дойке лицензий на офис и винду, с корпоративных заказчиков.
>>770140
Продукты МС покупают как раз таки только для распила, на тех же линуксах, попилы куда менее рыбные.
Ну я сужу по количеству доступной инфы в инете, по Шэйрпоинту или IIS или эксчендж серверу(это между прочим все, часть мидл инфрастрктуры любого гигансткого энтерпрайза) я найду кучу дискусси по множеству известный проблем. Для пидорасов локеров, я найду максимум официальную отписку в стиле, да эта мы знаем про эту хуйню, вот симптомы, решения - наш новый патч. Ниаких решений на текущую версию платформ. Вот тебе и разница. А специалисты, они , по большому счету в той же ситуации что и спецы, потомучто все их курсы, которые они проходили, подготовлены также на отьебись, как и все это ПО.
специалисты = серфтифицированный специалисты, имеется ввиду.
Руби наше всё!
Спецы это не те кто разрабатывает конкурирущее ПО, в данном контексте - это люди, кто работает с их платформами, чтобы сделать ПО для предприятия, где они работают. Такчто не вижу причин не идти им навстречу.
Я специалист под винду, и в частности, под ASP.NET MVC.
И скажу - что такой удобной инфраструктуры для разработчика, такой качественной, и интегрированной друг с другом, и при этом доступной(дада, сейчас даже студия уже community и бесплатна. уж не говорю про документацию - от MSDN до SO) - на прыщеблядстве никогда блядь не было.
Выбор в сторону экосистемы .NET я сделал осознанно и по нескольким причинам - это, во-первых, востребованность, во-вторых удобство(от C#, мегаприкольного языка, по мне так лучшего из мейнстримных, до интеграции всего и вся), в третьих, документация, в четвертых, вменяемость(деплой например, в ебаном руби это всегда анальная боль, в отличие от), в четвертых, уровень коллег в целом и среднем выше, чем на прыщеблядстве(пыхомакаки, рубиобезьяны, и ноджсчернь - заебали на текущем проекте вон уже).
При этом, я, как выше писал, прыщеблядство вполне себе знаю, и часто в роли девопса выступаю. Начинал в свое время с пыха фрилансить, трогал и руби(даже полгода на нем работал, давно правда еще, рельсы были 2е), питон знаю, итд. Жабу тоже знаю, но от нее АЖТРИСЕТ - до чего там все блядь просто как будто специально неудобно сделано(ну есть скала и кложа, но это уровень хипстотной черни похуже рубироидноноджсной).
Какой медленный IIS? Да он один блядь из самых быстрых серверов. Какой вендорлок? В чем он блять проявляется? Не больше там вендорлок чем у тебя, пыхорубимакаки, на прыщеблядикс(в остальных местах эта гнойная масса просто не работает нормально).
Вобщем, АЖТРИСЕТ, что от бреда который от несет, что от блевотных онемешных картинок.
Ну не надо так резко, люди молодые, им еще много стоить пройти и перетерпеть. Это все сразу не дается.
П.С. дотнет среду я не защищаю аж тресет бля.
Просто, я за то что с чем придется столкнутся на серьезной работе, где платят реальные бабки, чтобы не сосать хуй, а жить. И руби там нет. Есть асп, есть джава, иногда питон для девопсов, сиквел. Остальное игнорится. такчто решайте сами, бог вам свидетель.
>Спецы это не те кто разрабатывает конкурирущее ПО, в данном контексте - это люди, кто работает с их платформами, чтобы сделать ПО для предприятия, где они работают. Такчто не вижу причин не идти им навстречу.
А ну то есть просто программисты 1С, понятно-понятно. Вы дотнетчики с ними за руку ходите.
>>770176
Ой-ой, у нас тут get the facts стучатся из склепа, божешки.
>Какой медленный IIS? Да он один блядь из самых быстрых серверов. Какой вендорлок? В чем он блять проявляется? Не больше там вендорлок чем у тебя, пыхорубимакаки, на прыщеблядикс(в остальных местах эта гнойная масса просто не работает нормально).
За прыщеблядикс тебе не нужно платить, ты можешь свободно выкидывать любые компонентыи настраивать под свой проект
>При этом, я, как выше писал, прыщеблядство вполне себе знаю
Ага, убунта в путти, тут вас много таких)
*
>Отвечу рубиблядку-анимешнику(вот почему эти две вещи так связаны часто? какой-то сдвиг в голове), потому что МИНЯАЖТРИСЕТ с этого школьника.
Это же как так получилось что на анимешном форуме да водятся анимешники, тайна сия великая есть!
Проггеры на других языках конечно же смотрят только картины в третьяковке.
Олсо, если тебе так хорошо в своём дотнете, то чего тебя сюда занесло? Сидел бы в своём закончике для вендомакак, ходил бы к друзьям 1Сникам в тред и радовался жизни, но нет ведь решил сюда зайти)))
>>А ну то есть просто программисты 1С, понятно-понятно. Вы дотнетчики с ними за руку ходите.
Ты на своем руби думаешь больше прикладнухи делаешь чем обычный говно разработчик на 1с? Я сомневаюсь. Они все те же задачи рещают. Такчто у тебя, мой друг, тоже платформа, хоть обосрись.
>За прыщеблядикс тебе не нужно платить, ты можешь свободно выкидывать любые компонентыи настраивать под свой проект
Ага, блядь, тут настроим RVM, которая с текущим либц несовместима, там - в /usr/local намейкинсталлим. В продашкне все наебнется - но зато ведь НАСТРАИВАТЬМОЖНА
>Ага, убунта в путти, тут вас много таких)
Я для пыхомакак однажды обновил бабуин с 4го до 7го, что стоило много усилий и знаний.
Анимешный форум это в /a, свали туда.
А зашел потому что мне продакшн сломали рубибляди тупые, выше писал.
По моему ты бака.
Ну так и говорил про это сразу, всем понятно что в россии сейчас есть только пыха, 1с, шарп.
Но это не значит, что нужно остановиться в развитии и вариться в чане с аспом.
>>770181
Ага, только редактор можно выбрать, ОС, систему сборки, разбить по файлам, использовать систему контроля версий, любую базу данных.
>>770182
>Ага, блядь, тут настроим RVM, которая с текущим либц несовместима, там - в /usr/local намейкинсталлим. В продашкне все наебнется - но зато ведь НАСТРАИВАТЬМОЖНА
При установке rvm ничего не мейкинсталлится) Конечно если ты не делаешь системвайд установку, но так никто не делает.
>Я для пыхомакак однажды обновил бабуин с 4го до 7го, что стоило много усилий и знаний.
Воу, да ты герой, пошевелил аж двумя извилинами!
>Анимешный форум это в /a, свали туда.
И туда тоже))))
>А зашел потому что мне продакшн сломали рубибляди тупые, выше писал.
Сам виноват, если пускаешь в продакшен кого попала, всё таки люди из экосистемы МС необучаемые бараны, спасибо за очередное подтверждение.
>>>За прыщеблядикс тебе не нужно платить, ты можешь свободно выкидывать любые компонентыи настраивать под свой проект
На крупных проектах это доступно богам типа амазона, они имеют ресурсы это сделать, ты со своим хэлоуворлдом пока помолчи. И остальной энтерпрайхи пока тоже помолчат, и будут юзать готовые платформы от сраных вендоров, потомучто инчае не могут.
>>Ага, только редактор можно выбрать, ОС, систему сборки, разбить по файлам, использовать систему контроля версий, любую базу данных.
какую конкретно прикладную задачу решает твое говно с выбором ОС разбить по файлам, гит или свн, любая база?
Какая экосистема МС? Экосистема МС у нас отлично и стабильно работает(это ядро системы вообще), и деплоится причем вообще без проблем, и горизонтально масштабируется в auto-scaling группе AWS.
А сломали свое говно патентованные прыщеблядки как раз, линупс иксперты в третьем поколении, с протекшим рубироидным шифером. Им одну коробку дали, огороженную, так они ее умудрились нахуй сломать.
>>770188
Я сначала хотел ответить и расписать.
>>770192
Но теперь пожалуй не буду. Пошёл ты в жопу, лол
Я завтра гляну тред, аермя есть, надеюсь на твой конструктив, спокойной ночи.
>для пыхомакак однажды обновил бабуин с 4го до 7го, что стоило много усилий и знаний
Ничосе, вот это мэдскиллз! Небось еще и соседу шиндошс переустанавливал?
>уж не говорю про документацию - от MSDN до SO
>MSDN
>буквы, написанные депрессивными роботами-аутистами из майкрософт, отдаленно напоминающие документацию
Ты попробуй обнови, на живом продакшне который держит тыщи реквестов в секунду, это говно, и не сломай. Потом пизди, кукаретик лендингостроительства
>Небось еще и соседу шиндошс переустанавливал
>ты попробуй обнови, когда сосед ВДВшник с тыщей игр, это говно, и не сломай
Я не хочу поддерживать спор "RoR vs ASP.NET" или "фреймфорк А против фреймворка Б", но я однозначно за открытые технологии по озвученной мной причине.
А по поводу качества хипстерокода (упоминалось где-то в обсуждении) - ну нехуй подключать хипстерогемы. Я, например, сравнивая гемы, иногда отдаю предпочтение менее удобному на первый взгляд, но обладающему более высоким качеством кода и лучше развивающемуся.
Лол. Рубимакакинг это как раз про стандарт на знания.
Рельсы, ActiveSupport, пердолики.
А про невозможные задачи - ну например такая задача - не использовать ActiveRecord вообще, и с базой работать самостоятельно. Всякий там PostGIS использовать, сложные запросы и прочее. Вперед.
BTW: .NET - Открытая технология, как рантайм дотнета, так и стандартная библиотека, так и ASP.NET весь. Пруфы на гитхабе - коммить не хочу.
>А про невозможные задачи - ну например такая задача - не использовать ActiveRecord вообще, и с базой работать самостоятельно. Всякий там PostGIS использовать, сложные запросы и прочее. Вперед.
Есть sequel и он охуенен. Хотя интеграция с postgis есть и для AR, писать сложные запросы на чистом sql тоже в AR никто не запрещает.
> утверждает, что шарпоблядь и вообще белый человек
> на работе обновляет шубунту и поддерживает чужой быдлокод на похапе и руби
Пшел вон отсюда, свитерок вонючий.
Но блять оказалось, что не работает хот релоад. То есть сервер не видит изменений в коде, его нужно перезапускать. Проверил - директории моунтятся, изменения в докере видны, время обновления файлов актуальное, но блять хот релоада нет.
Я не могу понять в чем дело, как так, ведь полноценная среда в контейнерах запускается. Грешу на докер-машину (ибо на маке все это), но какая блять разница, если все синхронизировано.
Помогайте, что это за хрень. Очень классная идея херится - кросплатформенный запуск всего окружения одной командой.
Что тебе мешает использовать, например DB2 или MQ без консультантов? Red book не можешь осилить? У IBM всегда была и есть одна из самых лучших документаций во всей индустрии.
Консультанты нужны по одной причине - типичный макако-штат разработчиков, имеющийся в типичной организации обладает крайне низкой квалификацией и нулевой способностью осваивать новые знания. И нежеланием это делать.
Но опытные консультанты даже таких макак умеют за короткое время надрессировать так, что те не только смогут поддерживать внедренное решение, но и даже принять участие в его разработке. На уровне "сходи в бытовку, принеси лопату", но без консультантов для них и это недостижимый уровень.
Нету пока, иначе сразу нашёл бы сорцы. Я тоже пять минут посидел в гугле, все ссылки ведут на оригинальную новость, и всё. Не факт, что вообще собираются что-то открывать, на этом же деньги можно зарабатывать. Может вообще использовать и открывать не будут. Если новостей больше не будет, попробуй написать письмо кому-нибудь (хз кому).
Как сделать в этом шаблоне http://bootstrap-3.ru/examples/blog/ блог Archives. В yii2 я бы сделал через widget. Как правильнее делается в rails? Через yield(:archives) и в каждой вьюхе засовывать туда переменные , не очень хочется
Простейший вариант - partial view и before_action в контроллерах.
>в каждой вьюхе засовывать туда переменные
Ты о чём? Шаблоны не должны содержать логику.
Мне нужен вывод этих архивов на всем сайте.
В главном контроллере всегда получать этот архив ?
вчера дали тес на 4 таска,успел сделать 1,спустя 10 минут после истечения таймера сделал еще 2.
непонял вопроса
но наверное
@archives.each do |archive|
<li><%= link_to archive.name, archive</li>
end
С выводом проблем нет.
Проблема в дубле кода.
Этот блок может быть , а может и не быть на странице.
Допустим этот кусок может появиться на выводе всех статей и на статической странице типа about. А когда провалишься в саму статью его не должно быть
> Допустим этот кусок может появиться на выводе всех статей и на статической странице типа about. А когда провалишься в саму статью его не должно быть
Партиал ебни. Поток к нему обращайся через рендер, где надо.
>Партиал ебни. Поток к нему обращайся через рендер, где надо.
Ты же понимаешь, что у чувака типичная рельсопроблема, связанная с тем, что в рельсах не совсем MVC - как таковых вьюх, которые подготавливали бы среду для рендеринга партиала (в данном случае @archives). в рельсах нет.
Сколько раз уже вижу этот trailblazer (в основном в ру-комьюнити), с одной стороны и хочется попробовать (и еще захотеть), но блять, чуть больше чем нихуя коммитов и контрибьюторов, им кто-то вообще пользуется? И не так, круд и бложик, а нормальный продакшен?
Cells и reform вполне годные и популярные, operation тоже выглядит неплохо, но по-моему проще свой велосипед вместо него запилить, остальные части trailbalzer не нужны.
Ну, щас такая мода. Вроде удобно
http://dry-rb.org/gems/dry-types/
Библиотеки от охуевших от удобства функциональных языков и языков со статической типизацией ребят
undefined method `хуита' for Methods:Class (NoMethodError)
авторизация
Я там недавно видел перлошизика с 80 баксами. Ставка в профиле - это не реальная ставка, а желаемая, обычно в несколько раз выше реальной. Суть проста - ставишь 15, предлагаешь заказчику 10, соглашаешься на 8.
https://www.upwork.com/o/profiles/users/_~0173d5a5c3bb0c0464/
Вот парень реально работавший за 30 баксов, чую ты пиздишь или не в теме.
Да, на питон, си и обжси тоже всё.
Это уже мемес по-моему здесь.
Ну так пропатчи оригинальные исходники и собери по виндой, делов-то.
Вот например я :
Знаю html+css, bootstrap.
Умею ненмого в RoR и нормально в sinatra
по алгоритмам слабо подкован,но везде говорят,что это нахуй уже никому не нужно
есть профиль на гитхабе,даже не пустой.
естественно heroku+git, linux(mint)
с JS знаком на уровне JQuery
Что меня спросят на собеседовании? На что мне нужно сделать упор в плане обучения(списываюсь с анонами уже полгода,я тот чел,который хочет уехать в мае 2017 в мск или дс2)
Не слушай долбоебов, алгоритмы нужны, но пока не тебе - тебе надо фреймворки додрочить и уметь круды шлепать сейчас. Пройди тест на апворке (правда хуита устарелая), проходи все подряд интервью, смотри вон публичные собеседования с хекслета, и что-нибудь получится.
Синатра норм. В разы лучше рельсодерьма.
Не надоело? Шизик здесь только ты. Ты можешь перевести стрелки, но это ничего не изменит. Ты можешь сказать что мой пост сочится бугуртом, но это тоже ничего не изменит. Потому что все мы знаем, что это есть почерк тупорылого хуесоса-шизика. Ты не можешь в спор, не можешь в аргументы, не можешь в мэдскилзы, не можешь в пасты. Все твое оружие это мелкобуквенные йоба-высеры вроде: ололо у тебя баттхерт, карочи все кто против миня шизики. Ты уныл как Дима Билан в период беременности. Непрошибаемый тупой пидор, который даже не может толком обозначить свою позицию. Чего ты хочешь? Тебе нравится внимание? Нравится когда тебя кормят говном? Шизоид. Тебе никогда не избавиться от этого клейма. Кинул кирпичом в дегенерата.
Две корки сыра этому охотнику.
Годно расписал. Заебали такие говноеды однобуквенные.
>перлошизика с 80 баксами
Ты знаешь людей, с большим опытом перла, способных разобраться, поддерживать, дописывать и менйтейнить перловый легаси-код любой степени уебищности - которые будут работать за миску риса?
Можно ли каким-то образом установить это ограничие вроде "таблица только для чтения"?
Ограничения на уровне кода в руби - это защита от детей. Тебе не нужна модель, просто делай запросы в таблицу.
В рельсотреде нельзя такое советовать.
Иначе будет слишком просто, он еще и про CREATE VIEW может узнать.
Да, ты прав. В декораторы захуярю sql запросов.
Та и с activeadmin повеселюсь, не буду делать через .register
Сделаю register_page и сам всё кастомизирую. А то все слишком изично, рельсы слишком легкие, посоны засмеют же.
Mr. umnica
Посоветуй ещё зарегаться на github student pack. Они дают +100 баксов на DO.
Есть линк_то, надо подвесить джаба-кофе-скрит, но чёт нехочет. Во всяких гайдах рекомендуют вешать в респонд_ту обработчик на джаву, и бахать каллбеки на евенты в filename.js.erb, но это для контроллеров. Вопрос, как без котроллера заставить скрипт завестись по клику на линк-ту ссылочку. Есть стаковерфлоу, но ихний код не работает, да и вообще там много говна, научат еще бездуховно программировать, а мне так не надо.
Спасибо анон.
p.s. Есть рабочий вариант, вставлять джава скрипты прямо в агрументы линк_ту (т.е. через хеш параметров с обработчиком онклик и кодом на него), но, говорят, это плохо.
Ты сам-то понял, что ты хочешь? Нормально сформулируй, мы тут не экстрасенсы.
У меня приложение простое, и я делаю просто - Paloma вызывает JS-код при загрузке страницы, а там я уже с помощью jQuery вешаю все коллбеки. link_to просто имеют html id и ссылаются на '#'
Любую читай, но код не пиши.
Я так понял, тебе нужна теория? Так почитай что-нибудь общее, не по конкретному ЯП. На Руби многие концепции ООП переносятся очень хорошо, разве что зачастую упрощаются за счёт динамичности и метапрограммирования.
Полна шапка книг. Попробуй 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)какие еще скиллы подятнуть?
1. 80%, что их никто даже не посмотрит, зато получишь опыт.
2. Надо
3. Это элементарные вещи, учатся за пару вечеров в бою.
4. Учись правильно программировать, а не задрачивай технология_неймы.
а вот что именно для боевого опыта прикрутить на блог из ангуляра или реакта?
И я видел конвертеры из html to haml, насколько реально перенести проект на haml с помощью этого и от этого дальше разбираться?
Почему-то не работает $routeParams, видимо из-за кривого роутинга или ng-view.
http://pastebin.com/BKBn6pWR
Рубаны, подскажите вот что по автолодингу
ModuleOneName::ModuleTwoName::Constant
доступно автоматически, только если я не подгружаю через require_dependency 'module_one_name/module_two_name/module_tree_name'
Это особенность третьей рельсы или я что-то не так делаю?
>Uploaded
Лучше MessageAttachment
>Как мне сделать так, чтоб загружалось несколько файлов в соответствии айди какому-то сообщению.
Это не задача аплоалера, а бизнес-логика. Советую вынести её в сервисный объект, который, например, будет принимать текст сообщения и форму с файлами и реализовывать всю логику. Не советую делать это в коллбеке модели или в модели вообще (толстые модели в больших приложениях почти так же плохо, как толстые контроллеры).
>>781060
>а вот что именно для боевого опыта прикрутить на блог из ангуляра или реакта?
Первый ангуляр - это 90% заказов по фронту на апворке и. думаю, 90% работы по фронту в офлайне (в офисе). Бизнес не любит новое, бизнес любит проверенные временем решения.
>И я видел конвертеры из html to haml, насколько реально перенести проект на haml с помощью этого и от этого дальше разбираться?
HAML знать надо бы, но не думаю, что есть смысл переносить существующий код ERB в HAML. Просто на новом проекте сразу бери HAML. Кстати, это вкусовщина на самом деле, многим не нравится такой сахар, предпочитают ERB.
>>781093
>Это особенность третьей рельсы или я что-то не так делаю?
Хз, у меня в рельсе 4.2 вообще всё из папки app/ автоматически грузится.
Скажите, легко ли вкатиться в руби после 2х лет разработки на джаве?
Джава сейчас потиху проседает, а на след курсе в уни у меня будет спецкурс "Программирование на Ruby", вот я подумываю начать задрачивать их чтобы на работе, если джава просядет, перепрыгнуть туда.
Куда проседает? У жабанов самые большие зарплаты, еще и андроид бонусом. Нахер эти руби, у них непонятное будущее.
>Нахер эти руби, у них непонятное будущее
Будущее у руби очень понятное. Уголки где нужно быстро на коленке склепать небольшую вебню. Конкурирует с пистоно-джангой и пэхапе, все трое быстро вытесняются из этой ниши джаваскриптерами с NodeJS.
>Куда проседает?
В моей компании мой проект - один из последних проектов на джаве. Большинство джавистов пересаживаютс на JS. Я JS выучил, но считаю его как запасным аэродромом и не очень его люблю.. А руби будут в универе преподавать. Хотелось бы попробовать.
Ой, не смеши нода из говна и палок уже ничего не вытеснит. А будущее непонятное, потому что некоторые другие уже наступают на пятки в деле быстрого прототипирования, но с куда большей производительностью, а руби находятся в неопределенном состоянии, где с одной стороны запиливают сапрессы, а с другой недосранные фреймворки торчат с туманным будущим. Вот почему.
Твоя компания - жертва хайпа, но скорее всего просто экономит деньги, а в принципе ей все равно на чем там будет написано. Язык выучить не проблема, когда уже работаешь, не знаю зачем тут спрашивать. И если есть курс - ты разве можешь его избежать?
>Твоя компания - жертва хайпа,
Моя компания - обычный аутсорс. На чём заказчики хотят - на том и пишем.
>скорее всего просто экономит деньги
Ты издеваешься? Кастомеры платят.
>Язык выучить не проблема, когда уже работаешь, не знаю зачем тут спрашивать.
Да хз. Делать нечего.
>И если есть курс - ты разве можешь его избежать?
Нет, не могу. Просто поинтересовался, быстро ли его можно выучить.
>На чём заказчики хотят - на том и пишем.
Ну подавно хайп и экономия. Жс в тренде, рабочих за миску риса - как собак. Всё логично.
Ну не сказал бы. Платят хорошо.
>Жс в тренде
На UI. На бэкенде сейчас хз что у нас юзается. Но точно не нода.
Российские цены. Да, хорошо, но это стоимость уборщика туалетов в первом мире.
>>781684
Не знаю кто хейтит.
>Российские цены.
Беларусь.
>но это стоимость уборщика туалетов в первом мире.
Ты читаешь? 2 года опыта работы. Я ещё даже универ не закончил.
>Не знаю кто хейтит.
Ты?
>Беларусь.
Без разницы, СНГ.
>Ты читаешь? 2 года опыта работы. Я ещё даже универ не закончил.
Я просто хочу сказать, что для заказчиков это не деньги вообще, и да, они экономят таким образом.
>Я просто хочу сказать, что для заказчиков это не деньги вообще, и да, они экономят таким образом.
Как что-то плохое.
Для нас это очень большие деньги. В месяц получается отложить 1к баксов на будущую жизнь (переезд и т.п.), если затянуть пояс - получается отложить 1.2к. Года 3-4 и можно уже валить.
Средняя по стране 300 баксов.
>только вскрыл причины перехода на жс
Хм.. мне вообще казалось мы про опенсорс беседуем.
Да и вообще я спрашивал про руби.
Только ложи блять в банк. Я так 6к отложил, а потом их спиздили.
has_attached_file :file,
styles: lambda { |file| file.instance.photo? ? { thumb: '100x100>' } : {} }
validates_attachment :file,
presence: true,
strict: true,
if: :validate_file?
validates_attachment :file,
presence: true,
content_type: { content_type: /\Aimage\/.*\Z/ },
strict: true,
if: :validate_photo?
Вот кусок кода из модели, работает только валидации по картинке (я менял местами их). При попытке загрузить файл, отличный от картинки всегда срабатывает защита от content spoofing, блять(
Я такой тоже блять хз. А потом хуяк, и уже нет надобности никуда ничего сдавать.
Выбили замки.
Зачем дигитал оушен? Есть же полно рашко-парашкинских альтернатив которые куда дешевле:
http://simplecloud.ru/
https://vscale.io/
Понимаю, что надо сделать модель КАТЕГОРИЯ, контроллер КАТЕГОРИИ_КОНТРОЛЛЕР, сделать вьюхи для них или не вьюхи, а партиалами сделать. А потом уже встраивать эти партиалы на сами страницы сайта. Это будет работать? Прост я на работе сейчас, разные реализации и на гуглеж времени мало
А как этот партиал данными загрузить?
Не срабатывает рут роут. Не попадаю в контроллер. Вместо этого в роутах каким-то макаром меня перехватывает такая ебола match "*url", to: "application#render_not_found", via: [:get, :post, :path, :put, :update, :delete]
которая в роутах ниже рута.
Пытаюсь зайти на рут а кидает херню. В чем фишка?
По ходу понял, там вначале ищет в ассетах страницы, если есть - берет их и не идет в контроллер
>Как с помощью paperclip сделать условную валидацию?
Хз, пацаны давно на CarrierWave перешли
А серьёзно - открывай сорцы Paperclip, изучай, делай кастомную валидацию в модели обычным методом и туда пиши Paperclip'овские методы.
Ага, вложил в биток на 1к, а он пизданулся до 600, потом поднялся до 800, потом опять упал. Охуеть штабильность. Для накоплений самое оно.
да лень расписывать, уже делаю делегатор.
Но если коротко, то нужен класс который будет оспособен отзываться на методы массива, т.е. при обращении к таким методам делегировать их к своей локальной переменной типа массив. Естественно сам класс будет больше чем просто оболочкой.
думал использовать такую штуку http://ruby-doc.org/stdlib-2.0.0/libdoc/forwardable/rdoc/Forwardable.html
да чет хз, перечислять все методы — ниочень.
http://ruby-doc.org/stdlib-2.1.0/libdoc/delegate/rdoc/Delegator.html
Всяко лучше, чем российский рубль. Биток хотя бы растёт быстро и внезапно, а падает постепенно.
>Но если коротко, то нужен класс который будет оспособен отзываться на методы массива
Ну если коротко, то
def [](index)
do_something_with index
end
Представляю, как ты будешь накопленное годами откуда выводить, наркоман.
Рубль и биток - сорта нестабильного говна. Зачем жрать говно, если есть няшные баксы и евры?
Сижу на 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?
> HOME и HOMEPATH у меня на кириллице
This.
Если не можешь на Linux перейти, то используй vagrant.
В общем, обошёл проблему, создав второй администраторский аккаунт с английскими буквами.
Потом будут проблемы с работой с изображениями, бд, и прочими нативными гемами, не еби мозги.
http://nashbridges.me/ruby-windows-bootstrap
Вот есть обычный проект rails. В нём создать директорию /chef и /capistrano например, и там хранить все нужные файлы, да?
Только она не нужна никому...
Reliably deploying rails applications почитай. В сhef замучаешься вкатываться, у меня неделя ушла на написание первого работающего рецепта.
Вот типа как на пике. Мне кажется было бы удобно использовать что-то типа карт.
Нужно это вот для чего. Есть ебанутейшие xml-ные апишки, которые отдают шлак в совершенно нерабочем формате. Чтобы работать с их данным мне приходится сначала их сильно обрабатывать. И происходит это тупым поэлементным присвоением, типа:
data = {}
data[:my_field] = src[:blah_blah_response][:blah_blah_params][:blah_blah_output][:blah_blah_list][:blah][:blah][:blah]
Это ужасно. Хочется какой-нибудь более удобный и правильный способ конвертировать одно в другое.
Анз`ибль
> Там 5ю рельсу зарезили...
Собираюсь переходить, пока приложение маленькое. 11 тысяч строк. Надеюсь управиться часов за 10. Благо тесты есть почти на всё, кроме контроллеров (надо написать).
Думаю, это имеет смысл. Это гарантия лёгкого перехода на новые минорные версии на несколько лет вперёд, а значит - новые фичи рельс, новые крутые гемы, которые могут понадобиться.
Задай себе вопрос - стоит ли оно того? Тупое присвоение легко тестировать, легко писать (но сложно читать и поддерживать, да). А так тебе придётся придумывать декларативный формат на все случаи жизни, тестировать его, переписывать весь существующий код, потом проверить, что переписал правильно (значит тесты на существующий код всё равно придётся написать).
У меня еще нет существующего кода, там не много переписывать. Читать это мудатень тоже невозможно.
Вообще мне кажется для этого уже должно быть какое-то решение. Вопрос конвертации одного в другое ведь много где встречается. У меня сначала в голове все время крутились ActiveModelSerializers, которые в пятую рельсу добавили. Но я так и не придумал, как их можно использовать для этой задачи. Хотя по сути они ведь похожую задачу решают.
require 'json'
…
…
hash = JSON.parse(json_string)
hash[a][aaa1] #=> value
Как видишь все в одну строчку делается, может придется немного с кодировками повозится, в таком случае полагаю догадаешься где надо гуглить.
вообще анон прости, плохо прочитал.
хз, что тут посоветовать, рекурсивно ищем конечные ноды, перестраиваем их в массив или одноуровневый хеш, в зависимости от пожеланий.
Использует кто? Почему у этого инструмента столько зависимостей и столько еботни с ним?
TDD/BDD - чего только не придумают, чтобы выжать бабло с заказчика.
это для заказчиков, чтобы экономить на тестерах, а все дело делал программист.
В Эрефии до сих пор не знают как работает айти. ПМ приходит к заказчику и говорит, что тут надо BDD. Иначе ад и погибель. Поэтому плоти, чтоб покрыли тестами. А если это бодишоп, то ПМ напаривает заказчику, что нужна орава тестировщиков, иначе качество никак не обеспечить. В итоге за каждую голову бодишоп срубает бабло.
Заказчику глубоко похуй что ты там будешь делать лишь бы сделОл. Эти баззворды именно для развода заказчиков. Не подумай только что я против тестирования... это полезно, когда продукт разрастается. И не боишься что-то поломать, когда рефакторишь. TDD неплохой подход и в некоторых случаях таки помогает.
http://www.opennet.ru/opennews/art.shtml?num=44713
Ага, ну я так, вот типа рельса, новость.((((
Потом сделаю блог, чатик (ждал релиза 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
Потом сделаю блог, чатик (ждал релиза 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
А комиссия там ебануться снимать с Payoneer в банкоматах. Или можно на карту/банковский счёт себе переводить?
Какой-то параллельный мир у вас там. Нафига тебе отдельный впс для разработки и винда?
Да это он какой-то особенный, пхпшторм умеет локально всё кодить.
У меня есть эта книжка, но я все равно в ахуе, даже хз с чего начать.
На карту как обычно вроде можно переводить. Хз, ко мне пионер еще едет.
Ну, например, Stripe webhooks привязываются к конкретному адресу. К локалке привязывать через ngrok это костыли какие-то, да и не нужно в продакшене. Клиенту я сразу показываю сделанную работу, вернее, он может мониторить меня часами, пока я делаю апдейты каждые минут 20-40. Сделал модальное окно - вот, посмотри, проверь - может чего не хватает. Добавил новый плагин - посмотри, нормально ли работает на iphone/safari. Он так то тоже на PHP немного кодит, но в основном Android. За год отношений я многому научился сам и его тоже учил, как надо разрабатывать приложения. К примеру, когда я только взялся за проект, не было даже Git, отсутствовал менеджер js-пакетов, не было миграций (при том, что в CodeIgniter они есть), сейчас вот BDD-тесты пытаюсь освоить.
С винды не пересел ещё, потому что имеется только один ноут на гейминг, Reaper, погромирование. Скоро возьму нормальный пека для игор, а ноут переделаю в линух, потому что заебался с костыльными решениями в PHPStorm типа поиска и установки руби бинарников под венду, мучения с PATH, все гайды даже на официальном сайте PHPStorm написаны под разработку на линуксе.. Всё, что мне нужно - возможность поставить необходимые пакеты и использовать, например, препроцессоры CSS, Babel, Grunt, прочие штуки без изъёбств. Винда к этому не располагает совершенно.
По-сути - да. Но я на него загружаю файлы постоянно, чтобы получать feedback, когда исправляю какой-то мелкий косяк, типа неработающей ссылки. Иметь Vagrant локально это хорошо (не приходится ждать целую секунду-две, пока соединится по SSH и загрузит один файл, рендер быстрее), но каждый раз делать отдельно upload на удалённый сервер, после того, как изменил пару-тройку файлов и хочу показать работу очень заёбно. Может, конечно, есть какой-то удобный способ это контролировать? Проект очень большой, 60 контроллеров, примерно столько же моделей, 75+ таблиц. Когда я открываю на своём i5-3610QM javascript-файл с проверкой синтаксиса/ошибок, он начинает люто тупить и лагать (секунд по 3-5) после каждого ввода символа.
Про CI и deployment что-нибудь слышал? Как насчет того, чтобы не делать файлы больше 100 строк?
CI работает в случае, когда происходит коммит. Я тоже думал про это, но поскольку я работаю по сути один, то смысла в нём особого не вижу.
Сталкивался с группой погромистов, которые использовали этот CI в проекте на Yii. Неразбериха была та ещё, как они работали - не представляю. По 20 коммитов от одного программиста, исправляющего какой-то простой баг. А каждый деплой занимает время, минуты по 3-5, пока все тесты пройдут. Если бы я так работал, ни о какой продуктивности речи бы не было.
Возможно, они просто неправильно использовали его, но для себя я решил, что CI нужен, только когда проект слишком сложный, чтобы использовать один stage-сервер, код покрыт тестами, имеется несколько разработчиков, нет проблем с наполнением базы тестовыми данными и так далее.
По поводу файлов. Проект, как я говорил, достался мне "в наследство" от другого погромиста, папка assets (js процентов так 70) занимает 200 мегабайт. 6 (sic!) версий jQuery в разных папках. Переписать с нуля это невозможно даже за месяца два, миграции я прикручивал в свободное от работы время (к слову о том, хочет ли заказчик выделять деньги на рефакторинг).
>Сapybara
>Блжад, попробовал. Как говна пожрал.
Ты что-то не так делаешь. Я использую для парсинга Фейсбука (вместе с PhantomJS), и совершенно доволен. Раньше парсеры были написаны на чистом JS под PhantomJS, это был кусок нечитаемого неподдерживаемого асинхронного говна.
>Почему у этого инструмента столько зависимостей?
А ты как хотел, это же интерфейс к целому ебучему браузеру.
>TDD/BDD - чего только не придумают, чтобы выжать бабло с заказчика.
Ты хотел сказать сэкономить бабло заказчику?
>>785654
>это для заказчиков, чтобы экономить на тестерах, а все дело делал программист.
Это для программиста, чтобы всё не отваливалось нахуй после очередного изменения.
>>785657
>Не подумай только что я против тестирования... это полезно, когда продукт разрастается. И не боишься что-то поломать, когда рефакторишь. TDD неплохой подход и в некоторых случаях таки помогает.
Бля, ну я не знаю, насколько маленьким должен быть продукт, чтобы не бояться что-то сломать в нём при добавлении новых фич. У меня - 11 тысяч строк кода (HTML и прочее считая), 18 моделей. Это большой проект? Вроде считается небольшим. Но знал бы ты, сколько мне тесты моделей и политик времени сэкономили. И контроллеры скоро тестировать буду, потому что надоело, что некоторые страницы периодически отваливаются.
Правильно. Это уже давно считается плохой практикой- тестировать контроллеры.
Интеграционные тесты ещё и тем хороши что проверяют вообще ВЕСЬ стак. Как без них?
Как его тестировать в вагранте?
>Правильно. Это уже давно считается плохой практикой- тестировать контроллеры.
>Интеграционные тесты ещё и тем хороши что проверяют вообще ВЕСЬ стак. Как без них?
Ну смотри. У меня фронтенд почти отсутствует. Так что в моём случае что тесты контроллеров, что интеграционные будут тестировать весь стек. Но тесты контроллеров намного проще и логичней с точки зрения программиста - сделал запрос, увидел, что action и view (тесты контроллеров умеют рендерить view) не отвалились, что произошли нужные изменения в БД, что нужные задачи были поставлены в очередь. Атрибуты заполняются исходя из логики контроллера, которая обычно if @page.save then ... else ... end. Всё.
А чтобы поддерживать интеграционные тесты нужна уйма времени - на каждой странице прокликать каждую кнопку, попробовать все варианты заполнения форм и т.д.
Ты неправильно юзаешь интеграционные тесты. Как понять мало фронтенда? Апи?
Когда ты пишешь тесты контроллеров, ты им создатель уютный такой пузырь. Далеко не факт, что все будет так же в продакшене, а капибара поможет отловить эти баги
>но все эти гайды меня знатно поднапрягли
Здесь это основная проблема. Заебешься настраивать окружение. Разруливать зависимости и так далее. Мимо-вкатился-в-руби
EXPLAIN
В общем, вкратце, как я понял, нужно понять следующие тулзы:
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? Или есть ещё вещи, на которые нужно обратить внимание?
В общем, вкратце, как я понял, нужно понять следующие тулзы:
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? Или есть ещё вещи, на которые нужно обратить внимание?
>Как понять мало фронтенда? Апи?
HTML генерируется на сервере, JavaScript - 1300 строк всего.
>Когда ты пишешь тесты контроллеров, ты им создатель уютный такой пузырь. Далеко не факт, что все будет так же в продакшене, а капибара поможет отловить эти баги
Я не совсем понимаю, что такого она может отловить, чего не отловят етсты контроллеров. Как я уже сказал, тесты контроллеров могут рендерить вьюхи, так что я могу быть уверен, что ошибок, выкидывающих исключения, не возникло. А что ещё нужно?
>>786194
>Женщину найди уже.
Бля, ну я в том числе для этого и работаю.
>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".
>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".
>bundle update coffee-rails activemodel jquery-rails
Надеюсь, обновиться с 4.2 до 5.0 будет не намного сложнее
О, анон, очень похоже на то, что я хотел. Спасибо.
Но видимо уже не смогу его использовать. Мне действительно это нужно для работы с SOAP и я использую библиотеку savon, она всем хороша, но у нее собственный парсер xml to hash. В принципе может быть костылями можно было впихнуть happymapper, но проект уже начался, боюсь проваливаться в рефакторинг.
Рефакторинг уменьшает технический долг. Считай, что потом тебе будет в несколько раз сложнее, дольше и дороже разбираться с накопленнвм беспорядком.
У меня есть модели Team, Member, User.
Team has_many Users
Team has_many Members
Также при регистрации User может выбрать несколько Member'ов, которые будут ему соответствовать. Хотелось бы, во-первых, избежать дублирования, во-вторых, избежать сложных валидаций (типа что Member соответствует либо User'у, либо Team'е), в-третьих, после регистрации достижения прикреплённых к пользователю Member'ов должны восприниматься как достижения самого User'а
Пока думал, как это поможет, понял, что сообщил недостаточно информации.
Я работаю с Facebook API. Оно не возвращает "реальный" ID пользователя. Это значит, что в БД у меня могут быть несколько Member'ов (эта модель как раз представляет пользователя Facebook) с разными fb_id, но относящихся к одному пользователю Facebook.
Когда пользователь авторизуется у меня на сайте с помощью Facebook OAuth, я погу получить его token_for_business. Если потом я запрошу у какого-нибудь Member'а этот же токен, то он будет таким же для того же пользователя (Member'ов у меня уже больше двухсот тысяч, так что, видимо, придётся фильтровать по имени). Я пока не решил, что делать дальше - объединять модели, или вводить дополнительную модель OAuth has_many Members.
Есть некоторый функционал, который должен работать одинаково и для аутентифицированных через OAuth пользователей, и для сторонних пользователей Facebook (вкратце - я парсю события и смотрю, кто сколько пригласил в это событие).
Как-то всё это очень сложно, я даже не знаю, с какой стороны начать думать, чтобы додумать, как это реализовать красиво.
Если я правильно понял, тебе нужно просто сделать две таблицы.
User
id, first, last, middle, age, ...
ExternalAuth
id, user_id, provider (facebook, twitter, ...), token, auth_id, ...
Когда пользователь регистрируется по почте или через OAuth/FB/Twitter/..., на него заводится запись в таблице User. После этого он может добавлять привязки из других социальных сетей если нужно с помощью простого интерфейса - серые кнопки с логотипами провайдеров - неактивные привязки, цветные - активные. Дубликаты исключить, либо придётся усложнять ещё больше (а стоит ли оно того?).
>>786393-кун
>Дубликаты исключить, либо придётся усложнять ещё больше (а стоит ли оно того?).
Собственно, в этом и вопрос - удалять ли записи Member, про которые мы выяснили, что они представляют того же самого пользователя Facebook? Да, это многое упростит, я смогу исходить из предположения, что один Member - один пользователь Facebook. Но это сама по себе непростая операция - придётся заменять member_id во всех отношениях. Впрочем, стоит сказать, что благодаря foreign keys у меня не останется ссылок на несуществующие записи. Но сам факт того, что придётся ожидать завершения какой-то фоновой задачи чтобы информация в БД соответствовала действительности, меня напрягает. Решение с помощью грамотно построенных отношений кажется мне более красивым и логичным.
Пользователи с реальными id в базе есть? Или приложение создано после ввода API 2.0?
Не понятно, каким образом может возникнуть дубликат. Пользователь удалил привязку к приложению через FB, а потом опять зарегистрировался? %Не шарю в FB, полистал Changelog и Stack Overflow на эту тему только%
Посмотрел Tesseract-ocr но его надо тренить на шрифты вручную ,по этому я не думаю что он подойдет. что подскажите? какие инструменты есть?
На двачах слишком любят все идеализировать. Живут в и идеальном мире и делают абстрактные проекты. Я некоторое время назад наконец понял, что нужно перестать пытаться писать идеальный код и искать разумное соотношение усилий и результата. И тестирование далеко не всегда нужно и рефакторинг не обязателен и лучшие практики лишь рекомендация.
А почему? Из-за скорости? Или из-за монолитности?
>Или приложение создано после ввода API 2.0?
Вроде до
>Пользователи с реальными id в базе есть?
Вроде есть
>Не понятно, каким образом может возникнуть дубликат.
Элементарно. В списке гостей события у пользователя ID1, а когда он авторизуется через OAuth, возвращается ID2.
>Сап рубаны. Есть ли у кого опыт в OCR те машиное зрение?
Хотел послать тебя в тред машинного обучения, но он пропал с доски.
>Мне кажется, что это как-то неправильно, и что относительный путь там не случайно указан (может, в дальнейшем, сервер с картинками уедет, или я хз чё).
Правильно думаешь.
>Но они имеют вид "images/2016/06/15/t-magazine/15tmag-duro-slide-6B0A/15tmag-duro-slide-6B0A-thumbWide.jpg", то есть напрямую вставить в "<a href" для отображения нельзя, а надо добавить остальной путь. Вопрос - где его брать?
Изучи документацию API. Если этого СОВСЕМ нигде нет, то в базе всё равно сохраняй относительный путь, а для получения абсолютного добавь модели метод, в котором начало пути будет добавляться к записи в базе, и этим методом пользуйся.
>Все равно руби и рельсы для стартапов. А если проект выстрелит, то его потихоньку переписывают на чем-то ещё.
Как же вы заебали. Покаже мне проект, кроме твиттера, который что-то переписал? Гитхаб - на рельсах. Soundcloud - на рельсах. Basecamp - на рельсах. Да, иногда некоторые части проекта переписывают на чём-то другом. У Soundcloud, например, есть сервисы на Go, Haskell. Это всякая обработка данных, события, воркеры. А рельсам остаётся то, что они должны делать - веб.
Не нужен ты-максималист. За 3 года ни один проект не был на что-то переписан, но тем не менее они работают. И без рефакторинга мы бы охуели там. Его даже закладывают в сроки. Случай с переписыванием - это вообще 1 твиттер на миллион. В большинстве случаев ботлнеки устраняются как раз рефакторингом, выносом микросервисов, увеличением кол-ва серверей. Только в случае, если и это не поможет - встанет вопрос о переписывании.
>В большинстве случаев ботлнеки устраняются как раз рефакторингом, выносом микросервисов, увеличением кол-ва серверей.
>Только в случае, если и это не поможет - встанет вопрос о переписывании.
Никакого вопроса о переписывании не встаёт. Дела обстоят так:
Изначально решение использует реляционную БД. Первое время производительность упирается в веб-фреймворк. Тут в дело идёт рефакторинг. Потом увеличение количества веб-серверов, потому что рельсы очень легко горизонтально масштабируются. Далее производительность упирается в БД. Начинается шардинг. Через какое-то время БД уже становится невозможно масштабировать. Приходится менять модель данных. Часть данных переносится в нереляционную БД. Жертвуем консистентностью данных ради скорости доступа.
Кроме самого первого времени, производительность веб-фреймворка не имеет никакого значения. Его код выполняется 5% времени запроса, остальное - доступ к БД.
Остаются различные сервисы, которые, как правило, переписываются с Руби на быстрый компилируемый статически типизированный ЯП, если производительности Руби не хватает в конкретном случае. Но вот вам пример - по словам разработчиков яндекса, значительная часть их поискового движка до сих пор написана на Perl.
Насчет 5 процентов спорно. Конкретно в рельсах большую часть времени на один запрос отжирает рендеринг вьюх, тут нужно кэширование, где возможно. И да, твиттер же почему-то переписали, значит встал у них вопрос.
Такая нагрузка как у твиттера 99% никогда не светит. И да, у них код рельсовый был говно. Да блять, у них и сейчас фронтенд твиттера лагает так , как будто я 3 крайзис пытаюсь играть.
>у них и сейчас фронтенд твиттера лагает так , как будто я 3 крайзис пытаюсь играть
Рассматривал их веб-фронтенд в деталях.
Говнище неописуемое.
У Фейсбука та же история, им даже Sencha на спор сделали нормальный фронтенд на HTML5, который не тормозил совсем и имел такую же функциональность, после того как Цук рассказывал что эти веб-технологии, это из-за них у нас все тормозит.
у фейсбука архиуебищный дизайн, я даже не знаю как можно быть такой огромной корпорацией и в шары ебаться.
Обычно, когда меняешь дизайн - все начинают ныть и исходить говном.
А на старый никто не жалуется, к старому все привыкли.
Зачем им создавать себе лишние проблемы, и ещё и платить за них?
This. Дуров пидорашек просто на хую вертел, а Цукерберг заботится о своих пользователях.
>Дуров пидорашек просто на хую вертел, а Цукерберг заботится о своих пользователях.
То-то Вконтач намного удобней. Но вот с приватностью у Фейсбука получше, да.
Кому как. Не раз слышал от старшего поколения (за 40), привыкшего к одноклассникам, что вк сложный и непонятный.
ВК хотя бы быстрый.
>с приватностью
Это у Паши фирменный стиль
https://tjournal.ru/30675-iz-za-baga-v-telegram-moskvichka-poluchila-vozmozhnost-nezametno-chitat-perepisku-redakcii-dozhdya
спасибо анон
Я недавно наткнулся на QueueClassic, там в описании есть
>Leverage of PostgreSQL's listen/notify
Если это то, о чем я думаю, то это круто - DJ опрашивает базу на предмет новых задач каждые 5 сек. Создает нагрузку, срет логи и при этом добавляет лаг в 5 сек. Если QC использует механим pub/sub, то это охуенно. Только не понятно, действительно ли он его использует как надо, и вообще, насколько QC функционален.
Еще, пользуясь случаем, хочу спросить, кто работал с ELK (эластик, логстеш, кибана) для логирования. Чет я попробовал прикрутить при помощи гемов lograge и logstash-logger и получается какая-то хуйня. Эктив-рекорд не пишется, эксепшены по прежнему идут в несколько строк (читай несколько записей), как прикрутить логирование других компонентов (типа того же воркера) тоже смутно. Гайдов особо не нашел.
Пробовал разные запросы ни один не возвращает что надо, приходит масив включая левые даты
.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 и сверяю с полями модели, пока что не смог получить нужный результат. Выручай анонас.
Редис давно уже научился при правильной настройке данные не проебывать не хуже реляционок.
Не научился и никогда не научится. если автора не сменить. Aphyr его в его говно тыкал, кто только не тыкал уже - спорит как двачер, нихуя не понимает даже что ему говорят. Типичный ноэсккуэльщик.
Шо за тип данных то, DATE или INT (unixtime)?
Для DATE всё просто: http://stackoverflow.com/questions/9232122/select-data-between-two-dates?rq=1
Если unixtime, то даже гуглить стыдно должно быть.
>Не сайдкик и рескуе, нужно на реляционке.
Что за глупость
>Нельзя потерять задачи
С чего ты решил, что можешь потерять задачи в редисе?
>нужны транзакции.
Ну так используй транзакции при работе с БД. Задачи-то зачем в ней хранить?
>Параметры приходят типа таких { start_time: 'mon', end_time: 'thu' }
Ну пиздец проблемы у людей...
Даже сохранение в базу не гарантирует, что задачи не будут потеряны. Все равно может возникнуть ситуация, когда какое-то событие произошло, а записаться или уничтожиться не успело. Тем более когда есть одноразовые таски типа отправки имейлов, их вообще нельзя повторять.
Ситуация:
20 лвл, учусь на юрфаке госа города Сибирские Залупки. К концу первого курса начал проклинать день, когда перед поступлением послушал отцовское "ты гуманитарий чистейший, только пиздеть и умеешь, так что пиздуй на юриста", хотя и испытывал тягу к программированию и почти всему, что охватывается аббревиатурой IT. К середине второго, осознав, насколько всё уёбищно в этой стране, посмотрев на всё с точки зрения юриста, решил уёбывать, благо английский знаю почти как родной. Т.к. юрики не выездные и вообще не особо в почёте, решил вернуться к старым интересам. Благополучно съел подкинутого другом Криса Пайна (руби для самых маленьких). Сейчас, как освободился от зловонючей сетки, сел работать над собой. Определился, что изучать буду именно руби, т.к. для англоговорящих есть перспективы, работа, да и уйти в другую сферу не составит труда. В вашем храме рубей увидел список литературы, сел читать по порядку. Проблема в том, что, читая прагматик руби, я чувствую себя примерно как морская свинка. Многие вещи непонятны, хотя и улавливаю суть в целом.
Вопрос следующий, это нормально и нужно продолжать, или стоит начать с какой-то общей теории, ООП и т.д.?
>С чего ты решил, что можешь потерять задачи в редисе?
> In this post, we demonstrate Redis losing 56% of writes during a partition
Поиск идет между двумя полями, запрос ('? >= start AND ? <= end_time') не возвращает что надо, будто end_time не обрабатывается, хотя в sql запросе есть
Мы не знаем, всё зависит от тебя. Общая методика такова: читаешь всякие книжки, ебошишь блог/твитор/чят, фиксишь это всё, пытаешься устроиться куда-нибудь за жрат. Дальше по обстоятельствам.
это нормально, дальше будешь непонимать еще больше. Учись, тогда однажды, ты проснешься и поймешь что знаешь руби.
>В вашем храме рубей увидел список литературы, сел читать по порядку. Проблема в том, что, читая прагматик руби, я чувствую себя примерно как морская свинка. Многие вещи непонятны, хотя и улавливаю суть в целом. Вопрос следующий, это нормально и нужно продолжать, или стоит начать с какой-то общей теории, ООП и т.д.?
Насколько я помню, ВСЕ книги из шапки предназначены для тех, кто уже знаком с программированием. Как и большинство книг по руби, с него редко начинают изучать. Попробуй http://railstutorial.org, по ходу дела познакомишься с самим руби более-менее. Но после обязательно почитай книги по Руби, иначе многие вещи потом будешь делать очень неэффективно.
Тип данных какой у поля? DATE, STRING, INT, UNIXTIME?
Приведи пример, как выглядит SELECT * FROM table LIMIT 3;
после хартла хуй кто читает про руби, сразу идут ебошить гавнокруд и смотреть макензи, хотя вроде хартл для 5 рельс более подробный гайд сделал.
Может и что-то годное, но очень старое и безызвестное.
>>788193
>Редис давно уже научился при правильной настройке данные не проебывать не хуже реляционок.
Я могу ошибаться, поскольку с редисом практически не знаком. Но вся его суть и возможности в том, что он хранит данные ОЗУ? При аварийном завершении он не успеет флашнуть на диск. Если это HA-клсатер, то репликация опять же не синхронная, то есть на других нодах могут быть устаревшие данные.
>Ну так используй транзакции при работе с БД. Задачи-то зачем в ней хранить?
В транакцию оборачивается группа операций. Они выполнятся все или ни одна. В том числе в транзакции идет постановка задачи в очередь. Если где-то что-то пойдет не так, я могу быть уверен, что задача не поставилась, как и остальные изменения.
>>788335
Не знаю, что ты имеешь в виду. Реляционки обеспечивают ACID. Транзакции обрабатываются очень аккуратно, вплоть до подтверждения физической записи на диск (у постгреса по крайней мере настраивается). Какие-то там нюансы и ограничения в граничных ситуациях существуют но они на уровне того, что транзакция ПРОЙДЕТ, просто ты перед крашем не успеешь получить подтверждения, но это уже не то о чем стоит задумываться.
Я вот тоже не всосал про маккензи. Кто такой, чем знаменит?
Алсо что там хартл интересного про 5-е написал? И когда он успел-то?
А ннет, bundle install спас мою жопу от пригорания.
Вот этот сайт >>789167
>railstutorial.org
А анона этого не слушай, это лучший гайд эвар. Но читать нужно последовательно и честно.
Попробую. Там по-русски, а потом уже можно на что-то в оригинале перекатываться.
Как задеплоить с хероку на дигиталоушен?
На хероку нужная база лежит, ее обязательно забрать.
>На хероку нужная база лежит, ее обязательно забрать.
Облачные сервисы баз данных обычно не любят легко отдавать дампы БД. Погугли. Я столкнулся с тем, что на Amazon RDS очень сложно получить дамп БД.
>>789152
>Если где-то что-то пойдет не так, я могу быть уверен, что задача не поставилась, как и остальные изменения.
Здесь не нужны транзакции. Достаточно после постановки задачи проверять, поставилась ли она в очередь, и если нет, то выбрасывать исключение. Можешь написать своё небольшое дополнение к Сайдкику или погуглить, есть ли готовые.
>При аварийном завершении он не успеет флашнуть на диск.
>Транзакции обрабатываются очень аккуратно, вплоть до подтверждения физической записи на диск (у постгреса по крайней мере настраивается).
У Редиса настраивается частота записи на диск. Я согласен, есть вероятность, что в случае отключения питания или немедленного убийства процесса данные будут потеряны. Но скажи, какова вероятность этого? Если тебе недостаточно записи на диск раз в несколько секунд, то что же за приложение такое ты пишешь, что ему нужна такая надежность? Я просто хочу понять, что за задача такая, где это действительно нужно.
>после хартла хуй кто читает про руби, сразу идут ебошить гавнокруд
Согласен, сам так сделал. Но быстро осознал ошибку и сидел, задрачивал руби. Надо лишь донести, что тому же хуже будет, кто проигнорирует это замечание. А так railstutorial хорошая штука.
>railstutorial хорошая штука.
Только там много ненужной хуеты описано. Guard, Spork, ещё какой-то малафьи с десяток.
Разве он нужен, когда есть spring?
Cuckold
Решение должно быть максимально прозрачным для рельс и стороннего кода. Шаблоны не должны знать, что рендерятся не в контексте контроллера.
В дополнение к этому, хотелось бы узнать "правильный" способ делать партиалы, чтобы не мучаться с вспоминанием того, от каких переменных и методов шаблон зависит.
А также хелперы перенести бы в вьюхи.
>Здесь не нужны транзакции. Достаточно после постановки задачи проверять
Не понял тебя. Я говорю про то, что постановку задачи удобно запихивать в транзакцию вместе с другими операциями, которые неразрывно с ней связаны. Например, сделали рассчеты по платежам, обновили кучу записей, поставили тут же задачу. Где-то случился роллбек - он отроллбечит и задачу.
Речь о том, что это просто удобно. Конечно это не тру-необходимость, потому что планировщики это отдельный сервис (всякие там очереди сообщений). Но там и другие уровни сложности.
>в случае отключения питания или немедленного убийства процесса данные будут потеряны. Но скажи, какова вероятность этого?
По закону Мерфи, она крайне высока. У меня в приложении есть логика связанная с платежами. При этом они не разовые point-to-point, это целый процесс, серия задач many-to-many, и у процесса есть промежуточные состояния. Это делает логику сложной и проеб задачи чреват.
Тут правда у меня есть недостатки архитектуры, но в целом, проеб любой маломальски важной задчи (кроме какой-нибудь генерации документа или отсылки письма) всегда чреват.
>Если тебе недостаточно записи на диск раз в несколько секунд, то что же за приложение такое ты пишешь, что ему нужна такая надежность?
Но ведь любое приложение? Абстрагируемся от планировщика - речь же идет о возможности потери данных за несколько секунд. Иногда это допустимо, но это отдельно планируется и прописывается. По умолчанию мы ведь не держим в голове мысль о том, что данные за n времени могут быть утеряны. И вообще в этих случаях нужен механизм, который даст понимание, что данные были потеряны, чтобы это можно было учесть. Важно в любой бизнес-задаче, е-комерс и т.п.
А что делает настоящий контроллер тогда?
>>789993
Никогда в рельсах не испытывал дискомфорта от принятой архитектуры. В том числе и от хелперов. Разок вместо хелперов юзал декораторы.
Зачем тебе, анон, расскажи.
Раз тебе не нравится рейлс-вей, может тогда убрать фронт из монолита, вынести его весь в отдельный сервис на реакте с нодой и общаться через АПИ.
>>789996
>trailblazer
Ой, там все сложно. По-моему ребята нахуевертили.
Запросы на чтение все равно остаются быстрыми, плюс писать я думаю он будет по-меньше, чем реляционка.
>trailblazer
Я знаю про него, но не могу себе позволить такой отход от рельс в существующем проекте.
>>790136
>А что делает настоящий контроллер тогда?
Настройку вьюхи, вызов операций над моделями, постановка задач в очередь, проверка политик, HTTP-редиректы и т.д.
>>790138
>ну можно как дхх советует хуячить на каждый экшен по контроллеру с 1 экшеном, все контроллеры по директориям раскидать, и типа здоровая архитектура рельс возникает лул
Видел эту статью. Не понял, как при этом организовывать маршруты - кажется, при этом теряется вся сила ресурсов роутера. Ну и непозволителен мне такой сильный рефакторинг в существующем приложении, опять же.
Просто хочу нормальные вьюхи в рельсах.
>Но ведь любое приложение? Абстрагируемся от планировщика - речь же идет о возможности потери данных за несколько секунд. Иногда это допустимо, но это отдельно планируется и прописывается. По умолчанию мы ведь не держим в голове мысль о том, что данные за n времени могут быть утеряны.
Не знаю, как у других тут, но у меня в редисе сейчас только те данные, которые можно спокойно терять. Не могу себе представить ситуации, чтобы я занёс в редис что-то, что никак нельзя терять.
>У меня в приложении есть логика связанная с платежами. При этом они не разовые point-to-point, это целый процесс, серия задач many-to-many, и у процесса есть промежуточные состояния. Это делает логику сложной и проеб задачи чреват.
Понял. Согласен, в этом можно положиться только на реляционку. Но это не значит, что Сайдкик тебе не подойдёт. Ты в любом случае должен хранить в реляционке информацию о состоянии. Пусть воркер меняет эту информацию только когда операция гарантированно завершена. Также воркер должен быть идемпотентен (актуально для Сайдкика в целом). Сделай периодическую задачу, которая ставит в очередь те задачи изменения БД, которые там ещё не стоят. Уникальные задачи - это не базовая возможность Сайдкика, но я видел дополнение.
Не уверен, что это лучшее решение. Возможно, тебе не нужен Сайдкик. Я просто привык, что в каждом приложении у меня он используется почти с самого старта.
Спасибо за видео. Это не совсем то, что нужно, но теперь я знаю, как сделать то, что хочу.
>Draper не юзай, говно.
Это немного другой паттерн - view model. Draper уже начал использовать в некоторых вьюхах, но мне не понравилось.
>но теперь я знаю, как сделать то, что хочу
Вру. Я хотел переопределить метод view_context контроллера, чтобы предоставлять вьюхе свой собственный контекст, в котором переменные экземпляра и методы будут принадлежать не контроллеру, а моему объекту. Но как построить такой контекст, чтобы он по-умолчанию вёл себя как рельсовый контроллер, т.е. включал хелперы и всё прочее, есть есть в обычном view_context?
Вот этот код более-менее проясняет ситуацию:
https://github.com/rails/rails/blob/98076af2ef1774863635191b3d4ea19575b5f832/actionview/lib/action_view/rendering.rb#L71-L73
https://github.com/rails/rails/blob/98076af2ef1774863635191b3d4ea19575b5f832/actionview/lib/action_view/rendering.rb#L36-L53
Короче, мне надо унаследоваться от ActionView::Base и переопределить ApplicationController#view_context
Нужно задеплоить проект на ДО.
Там до меня настроили капистрано.
Все подкрутил, когда бандлер отрабатывает во в ремя cap deploy, сыпется когда доходит до нокогири.
И пиздос, уже часов восемь топчусь на месте.
На ремоуте поставил и рвмовский и системный нокогири нужной версии.
Враждую на то что через gem install оно не встает прав не хватает, встает только через rvmsudo.
Что делать выручите пожалуйста.
Вангую, что всё проще.
>nokogiri
Он же собирает native extension. Может у тебя не стоит что-то нужно для сборки.
Эти методы не помечены как private api
Охуенчик, сработало. Куда тебе 15 рублей скинуть?
>>790849
Так и оказалось, ИЧСХ обычный либиксэмель я накатил еще вчера.
>Куда тебе 15 рублей скинуть?
Мне вот интересно, к чему это. Я понимаю, двач, все дела. Но это же явно не риторический вопрос.
>>>Вьюхами в рельсах называются шаблоны на самом деле. А реальным view для них является контроллер - они берут его переменные экземпляра и методы.
>>А что делает настоящий контроллер тогда?
>Настройку вьюхи, вызов операций над моделями, постановка задач в очередь, проверка политик, HTTP-редиректы и т.д.
Ничерта не понял. Ровно это делают контроллеры в рельсах. Не?
Да, согласен с тобой. Воркер он как бы априори нечто внешнее. Поэтому нормальная архитектура должна подразумевать его отказ и не должно быть такого ограничения, что очередь воркера становится источником истины.
Просто на небольшом монолитном проекте это удобно - пользоваться реляционкой.
да, по докам можно в тмп заливать, но толку-то, все данные в фс живут до первой перезагрузки. ( пошел переделывать под амазон-хранилище)
Че, правда?
Наверное специально сделали. Потому что облом наступает тогда, когда узнаешь, что вольюмы не персистентны.
У них вроде бы можно отдельный дата-вольюм монтировать и хранить там что нужно. Или ошибаюсь?
Даже в доках рекомендуют, использовать S3
https://devcenter.heroku.com/tags/file-upload
Да и если можно, то ятп только за деньги, но тогда другой вопрос — а зачем этот хероку нужен, когда можно деплоить на амазон и т.п сервисы.
puts a
undefined variable or methods test
>Ничерта не понял. Ровно это делают контроллеры в рельсах. Не?
Вот нафига было так формулировать вопрос тогда?
>А что делает настоящий контроллер тогда?
У меня одна претензия к рельсам - какого черта они рендерят шаблоны в контексте контроллера? Должен быть промежуточный объект - view - который настраивается из контроллера и в контексте которого рендерятся шаблоны. Это нужно, чтобы если мне надо отрендерить шаблон в контексте ДРУГОГО контроллера, мне не приходилось вспоминать, от каких методов и переменных экземпляра контроллера шаблон зависит. Если при создании этого объекта я забуду передать какую-то переменную, то будет исключение ArgumentError. Также мне не придётся дублировать код в контроллерах.
>Воркер он как бы априори нечто внешнее. Поэтому нормальная архитектура должна подразумевать его отказ и не должно быть такого ограничения, что очередь воркера становится источником истины.
Так он и остаётся опциональным компонентом в предложенной мной архитектуре. Данные в реляционной БД по прежнему самодостаточны. Они не будут неверны, если очередь задач вдруг перестанет работать - они будут хранить информацию, что нужная операция ещё не проведена и информацию о том, как её провести. Работает ли воркер на основе Sidekiq, DelayedJob или самописного решения - не важно для твоих данных. Просто Sidekiq крутая штука, и если тебе нужна очередь задач, то стоит взять его. А без очереди задач в любом случае некому будет сделать операцию над данными.
>У них вроде бы можно отдельный дата-вольюм монтировать и хранить там что нужно.
Ты представляешь, насколько это будет дороже Амазона?
>>790970
>Даже в доках рекомендуют, использовать S3
>а зачем этот хероку нужен, когда можно деплоить на амазон и т.п сервисы.
На мой взгляд, хероку нужен только если ты не умеешь настраивать деплой нормально. И переплачиваешь ты за это очень большие деньги. Лучше один раз разобраться с Docker и Chef. Когда вся платформа на амазоне - это очень удобно.
>Cells далеко не везде нужны и хуево дружат с другими гемами, которые например свои хелперы примешивают.
Судя по его описанию того, что он хочет, именно они ему и нужны. А у всех нормальных гемов хелперы лежат в отдельном модуле, который можно заинклюдить.
>render locals: {}
И что, мне имена переменных по всей вьюхе искать? В тому же, логику по прежнему некуда запихнуть (не в шаблон же)
>>791798
Читал я про них, что-то не очень похоже. Cells - это view models, а меня интересуют views
По-моему как раз наоборот: cell - это просто view с кучкой хелперов, а view model - декоратор или презентер.
Locals хотя бы будет ругаться, если забыл чего-то передать, для этого. Да и в контроллере видно сразу, что именно явно попало во вьюху и никем не изменилось "где-то там, где ещё видны инстанс переменные контроллера".
>Да и в контроллере видно сразу, что именно явно попало во вьюху
Так я не хочу на каждый action явно вызываеть render.
>что именно явно попало во вьюху и никем не изменилось "где-то там, где ещё видны инстанс переменные контроллера"
Вообще-то контекст контроллера по-прежнему будет доступен
И от дублирования кода это никак не спасает. В каждом контроллере придётся создавать, например, query-объект Ransack на коллекции, хотя это можно было бы делать во view, если туда передаётся коллекция.
Также я хочу сделать вьюхи настраиваемыми. Например, у меня page has many events. На странице /events я хочу отображать ссылку на page каждого event'а, а на странице /pages/1/events это не имеет смысла.
Как-то странно ты хочешь чтоб где-то всё явно было, а где-то render не писать - хоти лучше одно. И я точно говорю - cells решают все эти проблемы.
>Как-то странно ты хочешь чтоб где-то всё явно было, а где-то render не писать - хоти лучше одно.
Я хочу детерминировать зависимости, но не писать шаблонный код. Вьюха это и делает - определяет зависимости явно, но свой шаблон она рендерит автоматически.
>И я точно говорю - cells решают все эти проблемы.
Ладно, попробую повнимательней почитать документацию.
>По-моему как раз наоборот: cell - это просто view с кучкой хелперов, а view model - декоратор или презентер.
https://github.com/trailblazer/cells-rails#cellsrails
Cells is a generic view model implementation for Ruby.
2.3.0 :149 > Employer.where('status = ? and salary <= ?', 1, 50000).first.skills.map(&:name)
=> ["git", "ruby"]
2.3.0 :150 > Employer.where('status = ? and salary <= ?', 1, 50000).second.skills.map(&:name)
=> ["ruby", "rails", "linux"]
Теперь нужно составить один запрос, чтобы получить ответ вида
=> [ ["git", "ruby"], ["ruby", "rails", "linux"] ]
Как это сделать? Можно конечно тупо через итератор пройтись, это будет решением моей задачи, но это означает что будет много запросов к постгресу, а значит это неудачное решение. Собсвтенно, какой метод я упускаю?
Вроде так:
>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)
Коротко:
>Employer.includes(:skills).where('...').map { |employer| emploer.skills.map(&:name) }
Благодарствую, анон. Ты сильно помог. Спасибо!
Я себе прикинул небольшой план, выполнив который я, в идеале, получу возможность без особого гемора на домашнем компе поднимать полноценное окружение для работы с различными рельсо-проектами.
И так:
1. Вагрант-бокс с убунтой, гитом и менеджером руби-версий. (Какой? За этим я сюда и пришёл)
2. Виндовая папка в которую с помощью вагрантовой синхронизации менеджер руби-версий будет складывать собственно руби и его гемы.
3. Виндовая папка в которую с помощью вагрантовой синхронизации и гита будут заливаться проекты с ремоут реп.
4. Докер с контейнерами, на видне, со всякими маст-хев технологиями (СУБД-шки, всякие эластики, воркеры, редисы и по мелочам), которые можно спокойно выносить в отдельные виртуалки.
5. Собственно утилита разработки изпадвинды, которая спокойно роется в папке с проектами.
7. .....?
8. PROFIT!
Посему вопросы.
Кто-нибудь с такой ебалой (ну хотябы под управлением линупса) сталкивался? Какой менеджер руби-версий можно взять, чтобы перенастроить ему папку, в которую он закидывает гемы и руби так чтобы их можно было спокойно использовать внутри вагрант-бокса? Докер, докер изпадвинды работает? Лучше чем изпадмака?
Какие вообще подводные камни?
inb4: купи мак, поставь линкус, забей.
RVM. Синхронизацию VM не юзай, медленная пиздец. Ну или у меня способ синхронизации такой, хз. Теперь тупо по sftp скидываю файлы, благо RubyMine сам деплоит файлы при сейве.
Докер тут нахуй не нужон.
Поищи готовые конфиги vagrantfile, для рельсов должны быстро найтись
>Синхронизацию VM не юзай, медленная пиздец.
Которая из тех, что "искаробки" (помимо NFS)?
>по sftp скидываю файлы, благо RubyMine сам деплоит
Это конечно заебись, но я не планирую использовать рубимайн, и уж точно не планирую хранить файлы проекта внутри виртулбокса, меня интересует именно возможность хранить гемы/проекты/настроечки вне бокса, чтобы при каждом его запуске не скачивать/устанавливать их, а тупо дёргать из синхронизированной папки.
По sftp то можно было и в офисе комп оставить включённым со всем нужным окружением, но это не вариант.
RVM нормально работает с не дефолтными папками для гемов? Не будет проблем потом с ручной правкой PATH-ей?
Двачую.
>>792322
Олсо если хчоешь скорости можно либо поднять гитлаб/гитхаб/битбакет и в конце рабочего дня туда всё заливать и дома дёргать.
Либо есть такая штука как rsync daemon, но подходит только для юниксобогов, на винду уже несколько лет никто не компилирует rsync (хотя может кто-то реализовал протокол в другом какой-нибудь проекте?).
Какая разница? Запрос уже сделан, он не вызовет SELECT только определённых полей.
перечитай вопрос. Задача была в том чтобы для каждого объекта сформировать _его_ множество nested атрибутов. Плак же все переформатирует в одноуровневый массив, т.е. потом нужно будет разбираться кому какой принадлежит.
Наверное он имел ввиду skills.pluck(:name)
Начинай. Я сам недавно перекатился в сабж, мне интересно - чем он от ActiveRecord отличается? Откуда такие восторги, вообще?
Как я понял тут больше ООП и он быстрее.
Было бы заебись, если бы кто-то подсказал ссылку на гайд как безболезненно засунуть его в рельсы.
Нет.
Какого хайпа, болезный? Руби твой хайпали с 2006 по 2010 примерно. С тех пор хайп прошел (подхватила нода эликсиры и прочие расты) и язык хиреет.
Перекатился - потому что контора основные проекты пишет (брали меня в другой проект под другую технологию).
>язык хиреет
Ещё один кукаретик. При чём тут язык вообще? Ты про рельсы что ли? Так настолько богатую и стабильную экосистему ещё поискать надо.
Да, поправлюсь - платформа хиреет.
Они говорят про восторги от сиквела, дубина. При этом пытаются его использовать, начитавшись этих восторгов, но так и не поняв в чём его реальное преимущество. Это не хайп?
> пора перекатываться на linux
Прыщеблядок, плес. Когда твоя параша сможет в драйвера и софт, тогда и поговорим, а сейчас строго нахуй.
Ты ещё не достиг нужного уровня, чтобы понять, но я попытаюсь: ActiveRecord как паттерн - не самая гибкая вещь, и в огромных проектах модели начинают тащить на себе несколько ответственностей, усложняя код, замедляя поддержку, увеличивая затраты. Sequel позволяет этого избежать не привязываясь к конкретному хранилищу.
Ну это всё итак понятно. Ты бы поведал, как именно это достигается. Я вот смотрел ROM, там паттерн репозиторий, модель не привязана к таблице БД, действия также вынесены в отдельные объекты, т.е. данные, логика и хранение разделены.
Вот так и достигается, почему тебе непонятно?
Дык Sequel тот же паттерн реализует. Я ничего не понял из твоего ответа (хотя бы потому что ты смешал ActiveRecord как ORM и паттерн в сравнении с Sequel) и полез читать других просветлённых. https://twin.github.io/activerecord-is-reinventing-sequel/
Там, впрочем, тоже ничего внятного не нашёл.
>Дык Sequel тот же паттерн реализует.
Дак не надо им пользоваться. В этом и понимание. Мало ли че он там реализует, нужно пользоваться тем, что он не навязывает тебе ActiveRecord.
Ебать, хайп вокруг библиотеки, которой почти никто не пользуется, вот это хайп так хайп.
По умолчанию рендерится вьюха с названием экшна. Можно и вручную указать render :new например
Есть какой годный простой гем для отображения на сайте города посетителя или его выбора города из селекта? Или советы мудрые как это сделать?
Чет не могу найти, geocoder вроде комбайн на все случаи жизни, а мне чего попроще надо. Да и сайт не сайт, а лендинг для портфолио типа "во как могу".
Демонстрационка же.
Просто возьми GeoIP и делай че хочешь.
Нужно:
- Работать с Rails 5
- Иметь представление что такое Postgresql
- Уметь работать с git
- Уметь в heroku
- Должен работать в linux\macos (windows юзеры де-факто не подходят, сорян)
Если нет реального опыта работы с чем либо выше или вообще никогда не работал как рор дев, то смело пиши, придумаем что-нибудь.
С меня зп, менторство до стабильного миддла. Сразу указывай опыт, аккаунт на GH, месседжеры для связи и зарплатные ожидания.
Почта alex6DK.doz.ltdANUSgZ$|mailPUNCTUMcj*2om
Есть апп на хероку, в нем в админке нету вьюхи которая есть на локали, хз мб апп надо рестартнуть, не подскажете как?
Вы видите копию треда, сохраненную 31 июля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.