Этого треда уже нет.
Это копия, сохраненная 19 декабря 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий: https://arhivach.org/thread/256121/ Принимаются #1029529 В конец треда | Веб
Предыдущий: https://arhivach.org/thread/256121/

Принимаются изменения в шапку треда в виде пулл-реквестов:
https://github.com/meoweg/2ch-pr-ruby

Как показывать код:
Быстро - https://pastebin.com
С исполнением - https://ideone.com
Требуется аккаунт GitHub - https://gist.github.com

Конференция
https://2chpr.slack.com/messages/ruby/
Получить приглашение: https://invite-me-to-2chpr.herokuapp.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. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - rubEQfyANUScon6`{ference.jabberPUNCTUMrm4Pu
А еще есть русская слак конфа - 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.
#2 #1029531
Анон, вот почему я, залетный аутист перекатываю? А?
Покушать принес вам.
https://github.com/arbox/ruby-style-guide
#3 #1029535
А ещё я обосрался с ОПом.
#4 #1029601
На оп-картинки можно было поставить и другие, надоели эти унылые мемасики.
#5 #1030059
как относитесь к trailblazer?
#6 #1030125
>>1030059
I heard you laek OOP, so we put OOP in your OOP, so you can OOP while you OOP.
#7 #1030135

>ВНИМАНИЕ ВАЖНЫЙ ВОПРОС:



Друзья, заясните зачем вы в 2к17 году до сих пор изучаете Ruby? Это же мертвый язык. Эту нишу заполнил Python. В руби есть только руби он рельс, у которого уже давно спал хайп и сейчас только идет поддержка легаси стартапов.
Не разумнее ли сразу нырять в Питон?
#8 #1030167
>>1030135
Удваиваю вопрос.
#9 #1030194
>>1030059

Ненужное, прибитое гвоздями говно.
#10 #1030206
>>1030135
Если не перекатываться из разработки в МЛ, то менять руби на питон, это как шило на мыло. Если уж менять стек, то на что-нибудь по-лучше scala, elixir/erlang, в крайнем случае на java, если хочется стабильности.
#11 #1030214
>>1030206

> на java, если хочется стабильности


Ага, у delphi'стов тоже когда-то была стабильность.
#12 #1030217
>>1030214
Думаю java скорее ждет судьба cobol, а не delphi.
#13 #1030772
Дайте хоть шуму немного, или уже все рубисты вымерли?
#14 #1030835
>>1030214
ващет джаве до сих пор нет вменяемой альтернативы, это передовой промышленный язык.
Полная настоящая мультиплатформенность, скорость как у плюсов, простота и логичность, огромное количество инструментария и библиотек, обратная совместимость.
Менять всё это на немного синтаксического сахарка? Пффф
#15 #1031933
Аноны, как автозапуск сервиса сделать в рубях? Запускаю через консоль и то девелоперскую версию, т.к. production не настроил.
nohup rails s &
#16 #1031966
>>1031933
Делай глобальную исталяцию rvm.
Накатывай bundler, пиши для systemd юнит-файл, ну и там типа:
bundle exec rails s
#17 #1032039
>>1031966
бля, чет я уже приуныл(
cap00001The Vidya Hoedown - v The Musical IV00:00:56
87 Кб, 1280x720
#18 #1032044
>>1032039
Да не знаю я чё те надо бака-гайдзин урусайный!!!!11
#19 #1032085
Стоит ли добавить такой блог в список ссылок?
http://blog.topolyan.com/tag/ruby/

Отличие в том, что статьи на русском, а на русском языке довольно мало качественного контента по Ruby или RoR.
#20 #1032386
Есть какой-нибудь гайд как врубить hot reload в webpacker в новой рельсе?
какой пиздец
#21 #1032441
Аноны, у меня проблема такая с Rails, есть выборка из БД с пагинатором will_paginate. Задача, есть записи о координатах объекта. Есть связанная таблица координат. Когда выбираю записи, идет подзапрос подсчета координат для каждой записи(это так я по отладчику вижу, когда вручную запускаю rails)
select count(*) from coords where message_id=123
Все запросы по 200, 300 ms
затем хуяки и сразу 1200 ms.
С ЧЕГО НАЧИНАТЬ КОПАТЬ???
#22 #1032443
>>1032441
не могу понять в чем дело, вручную у меня подзапросы идут в 10ms, rails это делает за 200-500, че бля за хуйня, че за хуйня то, батюшки!!!! Естественно когда там 40 сообщений на странице, для каждого надо подсчитать сколько в нем координатным записей, все это занимает 10 секунд при рендеринге, а то и больше.
#23 #1032444
>>1031966
с systemd я и приуныл, там что-то навороченное, но видно буду разбираться, я использую rbenv, разобрался с конфигурирование бд(поправил в файле настроек) а еще что-то надо делать с зависимостями всякими js
cap0000248d9944ae7567172ccafcb93c6fb4ef300:00:03
99 Кб, 720x1280
#24 #1032461
>>1032444
Ну или системд или докер-шмокер: и там и там надо по локоть лезть в чащи у гущи манов десу.
Ты мужик нау — итс таим ту конфигурять.
Если ты ещё и деньги этим зарабатываешь, так и вообще везунчик.
#25 #1032464
>>1032461
так-то да, но у меня слишком дохуя разных задач, что бы можно было спокойно разбираться, я делаю надежные системы с высоким риском опиздюлиться если что не так, раньше сидел на системе сервисов, конфигурировал все через services, уровни запуска и т.д., а тут как поднавалали docker systemd. Пока пускаю первое руби приложение в продакшн, уже опиздюливаясь каждый день, но таков путь, что-то новое можно изучить только через боль и слезы.
#26 #1032482
>>1032441
попробуй подгружать лениво
cap00001A.Cure.for.Wellness.2016.1080p.BluRay.Rus.Ukr.Eng.H[...]
337 Кб, 1920x1080
#27 #1032515
>>1032464
Я бы тебе помог, но я просто бака-гайдзин любитель потеребить чинко на сочную манко, который только сейчас проходит туториал хартла и параллельно читает совершенный код (но не всерьёз, просто читаю, без претензий на ¨это¨ самое).
#28 #1032674
send_file отправляет текст вместо файла, чяднт?
#29 #1032707
>>1032674
всё, решил target: "_blank"
cap000101501064398710000:02:16
165 Кб, 1280x720
#31 #1033358
>>1033340
Ничё так спич, мне нравится. Не ожидал такое от рамблера.
#32 #1033613
Правда ли, что в Ruby приведение к булевому типу - это два восклицательных знака?

Блять, серьёзно?
$bar = (bool) $foo;
#33 #1033624
>>1033613
Нет, это просто ебланский workaround.
3sQoR8d
169 Кб, 768x1024
#34 #1033666
>>1033613
>>1033624
Что за хуйню несёт этот уёбок и причём тут глобальные переменные?
#35 #1033689
>>1033666
Он про эту хуйню
!!foo
хз кто эти пользуется на практике
#36 #1033695
>>1033613

В руби нет булева типа.
#37 #1034765
Вот есть условный класс Hyu, в котором есть метод который через три пизды создает объекты другого класса Pizda. Как вызвать инстансную переменную класса Hyu в классе Pizda. Передать через аргументы не могу, слишком дохуя там методов и классов через которые передать ногу сломаешь.
e73f1c02-76d3-11e7-a047-3b628d45a217
1,5 Мб, 1920x1080
#38 #1035642
>>1034765
Блин из-за твоих аллюзий к хую и пизде не могу думать о программировании, похоже это не моё.
А ведь в случае Foo и Bar у меня могло что-то получиться(((((
#39 #1035647
>>1035642
Давно интересуюсь, а что такое бар? Меню-бар, тул-бар, скролл-бар, фу-бар.
#41 #1035668
ВАЖНАЯ НОВОСТЬ:

ТУТ поткатились сведения, что руби на рельсах стремительно хуячит в безну. Быстрее выпрыгивайте с этого рубинового поезда пока не поздно и пересаживайтесь на другой!

https://thenextweb.com/dd/2017/07/26/ruby-rails-major-coding-bootcamp-ditches-due-waning-interest/#.tnw_DbzSMt3r
#42 #1035674
>>1035668
Радио-Т послушал?
#43 #1035677
>>1035674
Да:-)
#44 #1035678
>>1035668
С самого начала было понятно, что вся эта ажиотация вокруг руби и рельсов - нездоровая хуйня, типа продукции эппл.
#45 #1035679
>>1035674
Да:-)
#46 #1035681
>>1035679
Значит ты примерно такой же гей-пидор как я, поздравляю.
#47 #1035684
>>1035681
Не, я нормальный, я же Golang программист.
#48 #1035685
>>1035684
Да, ты нормальный гей.
Есть тут Рубиняши работавшие с Django? #49 #1035747
Поясните, пожалуйста, за Рельсы. В чем отличие от Джанги?
Сам пайтон програмист с 5ю годами опыта, знакомый предложил перекатиться в его фирму и вдохнуть вторую жизнь в их проект на РоР.
Проект - интернет-магазин с CRM и сорт оф 1С-торговля. По зп дает столько же сколько и сейчас платят, но офис в 3х минутах ходьбы в огромном частном доме(Ростов. хуле). Ну и текущая работа достала и до нее 40мин и перспектив никаких.
Просто хочется понять, понравится мне писать на Рельсах или нет. Пока посмотрел доки, глянул пару несложных проектов на гитхабе, впечатление что документация хуже, а сам РоР смесь Питона с ПХП(что не есть плохо, как будто взяли Питон и заточили как пхп под веб).
Есть ли как в ПХП библиотеки под каждый пук или как в Джанге, т.е. похуже.
Как с документацией? Как общее впечатление? Не появляется ли со временем чувства, что делаешь одно и то же?
#50 #1035758
>>1035747
Иди на rubygems.org, вбивай в поиск любое слово и смотри.
#51 #1037146
у классов есть статическая перменная. она не менялась, но нужно сделать так, что бы менялась.

class Model
.. @db = MySql.new

образцы Model, с разными @db, должны быть разными объектами.

делаю:

def new_Model(db)
.. klass = Class.new(Model)
.. klass.db = db
.. klass

A1 = new_Model(MySql.new)
A2 = new_Model(Postgresql.new)

A1.db == A2.db
=> false

как бы ты это сделал?
[ENE-FAST] Neon Genesis Evangelion - Episode 24 (Directors [...]
233 Кб, 1440x1080
#52 #1037403
>>1037146
Что ты понимаешь под статической переменной и почему не используешь сеттеры и геттеры (у тебя код по сути ошибку выдавать должен).
Мужик, давай серьёзнее подходи к кодингу.
#53 #1037445
>>1037403
https://repl.it/JwOO/0
вот.

статическая переменная, это class variable.
2017-08-04-010941718x888scrot
21 Кб, 718x888
#54 #1037451
>>1037445
по ссылке, это как jsbin, можно запускать ruby программы из веб косноли.

ну или вот пик.
[UTW-THORA] Evangelion 2.22 - You Can (Not) Advance [BD][10[...]
238 Кб, 1920x1080
#55 #1037483
>>1037445
Ты нигде не используешь class variable (@@), у тебя там только instance variable (@).
Зачем ты аксессор в методы класса пихаешь, если у тебя нет переменных класса (чего ты видимо не понимаешь).
Зачем ты создаёшь объекты из классов в которых только методы класса и переменные недоступные через аксессоры.
Вообще непонятно, что ты там делаешь, омич.
[HorribleSubs] Re-Creators - 13 [720p]00:12:57
237 Кб, 1280x720
#56 #1037505
>>1037451
Блин, персматриваю, что ты делаешь и вот этот Class.new, но всё равно с трудом вдупляю, что именно ты делаешь. Разберись с @ и @@ как минимум.
#57 #1037514
>>1037483
ошибся, это не class variable.

но попробуй в примере добавить:
p Model.db

разве что, @db в объявлении класса не наследуются и пример не показывает что я хочу. но можно сделать что бы наследовался: https://stackoverflow.com/a/13629724/2560309

пример с class variable:

class Model
.. @@db = MyDb.new
.. def self.find(id) # использует @@db

class User < Model

user = User.find(id) # использует db = MyDb
# нужно не на совсем, переключить db
User.db = MyNewDb.new
user2 = User.find(id2) # использует db = MyNewDb
теперь я хочу вернуться к MyDb.
но я же затер ссылку на MyDb. нужно сохранить ссылку на MyDb, потом ее восстановить.
как это сделать без такой возни?

что-то такое:
_User = User.with_db(MyNewDb.new) # но способ с Class.new не будет работать с @@db
do_something(_User)
_User.find(id)
#57 #1037514
>>1037483
ошибся, это не class variable.

но попробуй в примере добавить:
p Model.db

разве что, @db в объявлении класса не наследуются и пример не показывает что я хочу. но можно сделать что бы наследовался: https://stackoverflow.com/a/13629724/2560309

пример с class variable:

class Model
.. @@db = MyDb.new
.. def self.find(id) # использует @@db

class User < Model

user = User.find(id) # использует db = MyDb
# нужно не на совсем, переключить db
User.db = MyNewDb.new
user2 = User.find(id2) # использует db = MyNewDb
теперь я хочу вернуться к MyDb.
но я же затер ссылку на MyDb. нужно сохранить ссылку на MyDb, потом ее восстановить.
как это сделать без такой возни?

что-то такое:
_User = User.with_db(MyNewDb.new) # но способ с Class.new не будет работать с @@db
do_something(_User)
_User.find(id)
#58 #1037518
>>1037514

>нужно сохранить ссылку на


Воу, вот тут даже не знаю как. может тебе дополнительную переменную использовать, вручную написать акссессоры и геттеры, как рекомендуют на стеке.

Если реализуешь свою задумку кинь сюда код, интересно будет посмотреть.
#59 #1037543
По активности ваших тредов создаётся ощущение, что руби умирает (рейтинги языков тоже создают такое ощущение), хайп прошел что ли? Количество вакансий не уменьшилось?
One-Punch Man - 1000:06:45
184 Кб, 1920x1080
#60 #1037546
>>1037543
Блин я тут года три наверное вижу тебя)))
А руби конечно умирает, чем ему ещё заняться-то?
#61 #1037547
>>1037543
Зайчик, элита по определению не может быть многочисленной, а элитные треды не могут быть быстрочятиками.
#62 #1037550
>>1037547

>Руби


>Илита


Чем вы отличаетесь от пхпшников?
#63 #1037551
>>1037543

> активности ваших тредов



ОП прошлых тредов куда-то пропал, а остальным немножко похуй, вот и весь секрет.
#64 #1037557
>>1037550
Тем, что на пхп крутится 80% интернета, а на руби три сайта запилено двумя с половиной калеками. При этом все эти сайты о рельсах.
#65 #1038830
Вангую чувака который опять придёт говорить, что руби умер, после того как послушает последний Радио-Т)))
#66 #1038846
>>1038830

Это рельсам вашим лопату вручили, чтоб могилу себе копали, а руби - нужна.

мимо jruby-господин
#67 #1039135
Сэр Юмпутун из Чикаго , прекрасная леди из фейсбуг, бубук из яндекс еще какой-то фраер, сегодня жестко в течении 1 часа имели Руби он рельсника, когда он пришел на подкаст пояснить, что рубя еще жива и имеет спрос в 2к17 году. Хоть он и отмахивался трусами от мух как мог, но никого не убидил в нужности рельс.

Так что , все пришли к выводу, что Жанга , спринг бут , и Golang это гуд.
А руби он рельсник отправился дальше к себе в картофельную страну , делать стартапы на RoR
https://radio-t.com/p/2017/08/05/podcast-557/Y
#68 #1039136
#69 #1039147
>>1039135

>Спонсоры этого выпуска DigitalOcean, Vscale и Тинькофф


>критикуют рельсы

#70 #1039162
>>1039135
Не слушал, но в целом согласен с тем что нинужно.

>Жанга


Жава и голанг - ок за счет типизации, скорости исполнения, многопоточности, но жанга еще более нинужна чем рельсы, как это аргументировали?
#71 #1039166
>>1039135

Тема холиварная, но интервьюеры хуевые - не смогли раскрыть гостя. От повторения тезисов с их стороны кровь из ушей. Закрыл через пять минут, после очередного 'руби не нужно'.
#72 #1039210
>>1039166
Ну все правильно, если уж пришел Рельсы свои защищать, ту нужно как то хорошо подготовится и выписать на листок список из киллер фич, чтобы можно было нормально отбиваться. Ясный пень, что Юмпутун и Бубук будут всячески подъябывать гостя и троллить.

Ты послушай выпуск подкаста, который шел где-то год назад. До этого Юмпутун сильно дристал на Golang и говорил , что не нужен этот яп.

После, какой-то Ильюша гофер ворвался на программу и пояснил за Golang.
С тех пор у юмпутуна голанг намба ван язык
#73 #1039211
>>1039162

>голанг


>типизация


Ну это вообще interface!
#74 #1039213
>>1039162
Потому что жанга это по сути низкоуровневый кмс, на которой ты можешь очень быстро сделать что нибудь годное
#75 #1039219
>>1039166
>>1039210
На самом деле забавно, потом себя повёл так: типа приходи ещё гость и вообще ты молодец ему говорит.
Мне кажется умпутун просто хотел похайпить немного (и ему удалось, этот хитрый лис знает своё дело).

А слова Вовика про перл на самом деле можно считать справедливыми. Ну поддерживает же перловые регулярки? Поддерживает.
Можно писать запутанный код? Легко.

С чем можно всерьёз поспорить так это, выводы ксюши и вовика на счёт стайлгайдов — мол сначала дают и потом отбирают выразительные средства, хотя в том же питоне практически сначала существует и дзен и пеп, который по сути стайлгайд.
#76 #1039243
>>1039210

> Ясный пень, что Юмпутун и Бубук будут всячески подъябывать гостя и троллить.



Я понял, поэтому и выключил. Возможно, конкретно эта часть программы получилась столь радикальной, а в остальном ребята - охуенные спецы, которые рассказывают клевые штуки, тут не знаю.

Но вот так уж получилось, интересную мне часть выпуска они провалили. Поэтому на это

> Ты послушай выпуск подкаста, который шел где-то год назад.



отвечу отказом. Слушать их не интересно. Ну ненужен раби, так ненужен.
#77 #1039260
>>1039213
Так же как и рельсы, которые в целом всегда были (и остаются) более развитым и популярным решением по сравнению с жангой.

Проблема вообще не в рельсах или джанге. Столько скриптовых язычков в принципе нинужно. Они особо друг от друга ничем не отличаются, при этом вынуждают хранить в голове кучу бесполезной информации, потому что то там, то сям, приходится сталкиваться с каждым из них.

Это говно на раби, это на пхп, тут на питоне, здесь 100500 диалектов лиспа. У каждого языка свои библиотеки, свои особенности, свое окружение - все это надо помнить (а потому использовать, чтобы не забыть), а окружение поддерживать.

Каким бы не был плохим джаваскрипт (а он начиная с ES6 не такой и ужасный) - лучше пусть все интерпритируемое говно пердолят на нем, к чему мы в итоге и идем. Даже со всеми транспайлерами сегрегация все равно не такая огромная получается.
#78 #1039650
>>1039135
раньше DSLи были популярны.
поэтому rails может казаться магическим.

вот dsl который имитирует комманду linux, route:

ssh '192.168.0.123' do
.. route add default gw '192.168.0.24'
.. route del default gw
end

на js:
ssh('192.168.0.123', (cmd) => {
.. cmd.route(add(default(gw('...'))))
})
#79 #1040584
Сап рубибоги, написал небольшой api на синатре для своей прилаги на андройд. Просто отдает некоторые json файлы по urlам. Могу ли я где-нибудь захостить такую штуку за бесплатно?
#80 #1040616
>>1040584
Heroku
#81 #1040631
>>1040584
OpenShift
#82 #1041088
Сап!
Подскажите, как можно на рубях запилить docx? С табличками и картинками.
#83 #1041159
>>1041088
на rubygems.org искать по ключевому слову docx не пробовал?
#84 #1041205
>>1041159
Искал, но у каждого гема есть фатальный недостаток, увы.
#85 #1041235
>>1041205

>фатальный недостаток


Лол, ну так напиши сам.
А вообще я посмотрел, и там похоже один гем который создавался для полного цикла работы и позволял создавать docx.
Имхо, хорошая возможность запилить такой гем.
#86 #1041251

>>>>1041235


>Лол, ну так напиши сам.



Щас бы ради время тратить на опен-сорс.
#87 #1041254
>>1041251

комьюнити*
#88 #1041419
>>1041235
С радостью бы запилил, но знаний маловато, а времени ещё меньше.
#89 #1041454
>>1041419
Эх, писечка, у меня та же фигня.
#90 #1042962
Здарова, посоны и посонессы. На связи прошлый ОП руби-тредов, который с головой погряз с работе и заходит к вам раз в полгода ридонли. Что уныло-то так?
#91 #1043257
>>1042962
Все, похоронили руби. Мы тут всем тредом бреем бороды и перекатываемся java, писать некогда, еще весь core изучать.
#92 #1043272
>>1043257

>Сначала руби


>Потом java


Может хватить учить вечно умирающие продукты?
#93 #1043288
>>1043272
И что же порекомендует изучить благородный дон? Может быть вечно молодой хаскель или вечно живой кобол? Или может быть стоит стать ближе к народу и перейти на js?
#94 #1043304
>>1043288
Сярп и асп.нет к вашим услугам
Или если хотите ещё словить хайпа, то питон, он на западе как раз разгоняется
#95 #1043320
#96 #1043327
>>1043304
Ну это толсто, сударь. Вы бы ещё сказали, что go набирает обороты. Язык топ-10, а работы на нём как не было, так и нет! Вот незадача!
#97 #1043503
>>1043327
Ну в России и в iot работы нет, а в белых странах она есть
#98 #1043572
Народ, поясните, почему рубисты такие пидоры и считают что те, кто пользуется IDE, графической оболочкой для гита, нормальными текстовыми редакторами(а не vim) - инвалиды и не настоящие программисты?
#99 #1043576
>>1043572
Потому что хипсторы на хайпе а сейчас они активно укатываются в жс
#100 #1043583
>>1043576
Я сам кодирую на JS и учу ноду, вроде не хипстор. Даже под виндой девелопю, а сервер на виртуалке.
#101 #1043588
>>1043576
Даже думал вкатиться в рубин
#102 #1043594
>>1043583
Если сервером управляешь через консольку через ssh, то норм.
#103 #1043595
>>1043576
Эликсир, не?
Насчет жс - то тут уже всем приходится, на рынку труда фуллстек подороже будет.
#104 #1043795
>>1042962
Потому что нет работы. Не понимаю, зачем я несколько лет назад послушал долбоёбов, которые говорили ДА РАБОТЫ ДОХУЯ БАБЛО ДОЛЛАРЫ КАТИСЬ БЫСТРЕЙ!!!1
Эй, бойцы! Вас опять наебали!
#105 #1043803
>>1043594
Да так вообще-то белые люди и делают.
#106 #1044452
Так я не понял.
Месяц вкатывался в руби, щас начал в рейлс. Мне ничего не светит с работой?
#107 #1044458
>>1044452
Твой рубиновый хайп трейн сошел с рельс
#109 #1044568
>>1044452
Можешь оставить его в качестве хобби. Вкатывайся в более реальные вещи.

Я недавно тоже был молодой и шутливый. В итоге устраиваюсь джавистом. Руби это здорово, но жрать хочется уже сегодня.
#110 #1045441
Мой рубиновый поезд пошел под откос
Ржа времен сожрала ваши рельсы
Гем судьбы паутиной и пылью порос
Вот и кончились красные пьесы
#111 #1045442
>>1045441
А сами тайно изучаем руби, чтобы вкатывальшики не узнали. Им лишь бы хайп, а то что в питухоне невозможно dsl делать, им безразлично - они до такого не допрут.
#112 #1045444
>>1045442

>питухоне невозможно dsl делать


https://habrahabr.ru/company/pt/blog/319320/
#113 #1045445
>>1045444
Ну ты понял - в самом питонокоде - имелось в виду.
#114 #1045667
>>1043795
Рубя конечно не питон, за два дня не учится, но несколько лет... Я за четыре года в рубях научился писать расширения на Сях, создавать из обычных модулей shared-контексты rspec, специфичные для тестирования каждого уровня абстракции от моделей до интеграции, написал под один проект библиотеку для создания форм-обьектов, интеракторов, туеву хучу рельсовых валидаторов, перехуячил традиционную схему использования pundit в контроллерах, набросал гору примитивов ФП и модели акторов. Сегодня вот захуячил map-reduce чтоб файлы на s3 переименовать под новую схему путей. Выучил es7 и реакт, чтоб не переписывать огромный фронтенд сделал либу для интеграции реактовых компонентов в существующий генерируемый рельсой html. При этом я даже не претендую на какие-то глубокие познания в CS. Парсеров не пишу, о сложности алгоритмов думал в последний раз в школе на олимпиадах, ибо в sql/redis все реализовано, берешь и используешь. Я бы сказал, обычная работа обычного веб-разработчика на непятистраничном проекте. Когда представляю, как бы такой проект писался на js или go с их простынями шаблонного кода вместо средств языковой выразительности, метапрограммирования и нормальной системы типизации, похуй, статической или динамической, начинаю понимать, почему кроме микросервисов на них нихуя не пишут. Кстати у нас есть сервисы на питоне и го, написал и забыл, удобно. Поддерживается все это, и код, и devops тремя людьми всего, при более чем 30 серверах на проекте.

Как-то так работаем, а начинал 4 года назад с raillsturorial. Чё ты там несколько лет в руби учишь непонятно, даже с четвертью этих знаний работа за пару недель находится. Впрочем, типичный /pr, захожу уже чтоб душу отвести и поплакаться, что до сих пор не в Калифорнии живу.
#115 #1045687
>>1043595

>Эликсир


Был бы хорош, если бы не слабоватая (в сравнение с рубишной) типизация, доставшаяся от эрланговой вм. Под слабой типизацией я имею ввиду, конечно, неявные преобразования типов. А так вроде даже работа есть, на rubyjobs регулярно видел вакансии, когда мониторил.

>Фулстек


Давно уже сказано:
1. либо ты охуенный бекендер и каждый день делаешь нелегкий выбор между консистентностью и масштабируемостью, или, держа в голове десятки узлов sql, mongo, redis, memcached, rabbitmq, микросервисов и туеву хучу бизнес логики, пытаешься понять где нужные данные уже посчитаны и как их извлечь, чтобы хотя бы приблизиться к удовлетворяющему клиентов времени реакции одной части системы на изменение в другой её части в условиях eventual consistency
2. либо пилишь формочки на реакте и однообразные апишки для них на рельсе
3. Либо ноешь на двачах что нет работы
#116 #1045693
>>1043572
Потому что в условиях стартапа, где 3 человека поддерживают помимо рельсового приложения несколько микросервисов на 3 других языках в совершенно разных средах, 2 персистентных хранилища данных, 3 редис сервера, rabbitmq, кучу балансеров, несколько кеширующих серверов, шеф-конфигурацию для деплоя всего этого дерьма на 30+ серверов с 4 тысячами строк рецептов, при полном отсутствии спецификации на всю эту инфраструктуру, даже переключение с ide на консоль чтобы посмотреть как там называется ключ конфигурации третьего бакета на aws s3 в другом репозитории:

>grep -ne "s3:" ../backend/config/secrets.yml


137:s3:

>sed -n '137,170p' config/secrets.yml


.....
Занимает так много времени, что тебя будет раздражать и ты сам придёшь к этому.

Хотя для формошлепов мб IDE норм.
#117 #1045729
>>1045693
А вот и успешные стараперы подтянулись, которые работу за 10 человек делают и жалуются
#118 #1045742
>>1045687

>Под слабой типизацией я имею ввиду, конечно, неявные преобразования типов.


Единственное неявное преобразование в эликсире, это Integer -> Float.
#119 #1045764
>>1045693
Звучит как работа сисадмина.
#120 #1045765
Я совсем ещё зелёный, поэтому прошу помощи.
В общем пишу плагин для Redmine на рельсах. Суть его в создании дерева задач. В контроллере объявил переменную для поиска проекта с параметром его id. Во вьюшке загружаю массив всех задач (без подзадач) этого проекта. И для каждой задачи с помощью итератора each ищу все подзадачи с помощью root_id. Сортируются они по времени создания, а надо чтобы выглядело: Отец 1
Сын 1
Сын сына )
Сын 2
Отец 2
Сын
....
Как реализовать подобную сортировку, если есть массив с отцами у которых (root_id = id отца, parent_id = nil) и массив детей у которых (root_id = id отца самого первого, parent_id = id задачи от которой наследуется, например для сын сына это сын 1, для сын 1 это отец 1).
#121 #1045768
>>1045693

вим все равно не нужен.
#122 #1045771
>>1045768
А чем плох вим, очередной неосилятор режимов и/или консольки?
#123 #1045774
>>1045771

Конкретно в твоем случае

>grep -ne "s3:" ../backend/config/secrets.yml



Речь идет о выборе шелла и навыках в смежной профессии devOps'a.

А вим не нужен, потому что я хочу писать код, но не возится месяц с настройкой текстового редактора.
#124 #1045775
>>1045774

>А вим не нужен, потому что я хочу писать код, но не возится месяц с настройкой текстового редактора.


Понятно, очередной неосилятор. А мне-то показалось, что ты про реальные минусы (конекретно вима) хотел что-то сказать.
А если бы ты хотел код писать, то не вымораживался тут на доске.
#125 #1045777
>>1045775

> мне-то показалось, что ты про реальные минусы (конекретно вима)



Некогда с очередным дурачком в спецолимпиде участвовать, сорри. Ты подебил!
#126 #1045779
>>1045777
Слушай ну круто ты психологию применил, типа и согласился со мной и пассивно-агрессивно укусил — аки течная сучка.
#127 #1045780
>>1045775

>Реальные минусы вима


Приходится пердолится, что бы начать писать код, сказали же
Про неосиляторство можешь не продолжать даже, ещё спроси почему все генту с арчем не устанавливают, каштомизация же. Нужно использовать инструмент, а не бороться с ним

>Если бы хотел писать код, то не сидел бы тут


Я че, должен это все время делать без права заходить в программач?
#128 #1045783
>>1045780
Я и без конфига и плагинов писал, ничего сложного.
А плагины поставил и конфиг написал, вместо того чтобы на бордах сидеть.
Неосилятор.
#129 #1045786
>>1045783
Ну мне то не надо ничего писать, что бы ide работало, и все удобства есть, пока ты пердолишься, люди код пишут
#130 #1045803
>>1045786

>и все удобства есть, пока ты пердолишься, люди код пишут


Нет, как раз таки написал один раз конфиг и больше не возвращаюсь к нему. Всё работает абсолютно предсказуемо.
Наверное ты сразу пишешь код конечно, ну как сразу после того как система отвиснет после очередного индексирования проекта, ой вот уже и ноут заряжать надо или просто остудить в морозилке)))
#131 #1045808
>>1045803

>очередного индексирования проекта


Использование вим ускоряет работу файловой системы?

>ноут


Нормальные люди работает за десктопом с полноценным процессоров, а не мобильной затычкой с урезанными частотами и за 2-3 мониторами 24+ дюймов, а не 15 дюймовой щелью.
#132 #1045809
>>1045808

>Нормальные люди


Они как раз используют ноутбуки, чтобы всегда иметь возможность кодить.
Будто блин что-то мешает подключить ноут к двум мониторам — ты к нам из 15 века пишешь, крестьянин? Все уже давно используют либо доки либо usb-c на макбуках для организации работы. Приходишь на работу и подключаешь одним кабелем (или ставишь синкпад на док) и работаешь.

На самом деле я не против десктопов, но IDE и на десктопе будет тормозиьт пока проект возюкает.

>Использование вим ускоряет работу файловой системы?


Вот и прорезались программистские знания — проблема тут не в ФС совсем.
А так конечно ускоряет, ещё волосы шелковистые становятся, а борода более окладистой.
#133 #1045810
>>1045780
А это традиция такая. Вот в C менеджмент с памятью - это не удобно и пердолинг. Надо динамически и dick'лоративно.
Только пердолинг с памятью ускоряет работу программы, а пердолинг с текстовым редактором нет.
#134 #1045812
>>1045810
Смешал в кучу системное программирование с прикладным и dsl'ным.
#135 #1045814
>>1045809

>Нормальные люди


> всегда иметь возможность кодить.



https://www.youtube.com/watch?v=bP0ktrxdHUw
#136 #1045817
>>1045814
Точно также можно было ответить и на твоё «Нормальные люди», так что не надо тут.
#137 #1045818
>>1045817

Надо-надо, как же нормальный человек в толчке, без возможности кодить, жить будет!
#138 #1045819
>>1045818
Ну началось, в ход пошло всё: глупенькие видюшки с тытрубы для 12-летних детей, и унылые гротески.

Я тоже так могу:
Ну как же это кодить без 30-ядерного зиона!? У меня в атоме просто курсор не будет нормально двигаться без высаженных под 100% минимиум 6 ядер, и 8 гигабайт слитой оперативки ещё на этапе загрузки редактора. Нормальный человек и в текст-то не сможет вникнуть без массива из 12 мониторов (хотя это для слабаков, нужна парочка другая IMAX-проекторов).
#139 #1045823
>>1045819

Атом, кстати, говно, хотя и красивое. Мне vscode внезапно нравится, эдакий опенсорсный клон сублайма.

По сабжу. В 2017 не уметь в синхронизацию настроек для редакторов (ide) для рабочих компов - ну не знаю, зашквар какой-то. Ты хоть папочку в дропбоксе создай, мань. Не таскать же железо с собой постоянно.
#140 #1045826
>>1045823
Спасибо, у меня уже есть папочка на гитхабе.
А таскать ноут с собой дико удобно, можно быстро перемещаться и по своему зданию и по рабочим делам. Не знаю чё ты так вцепился в десктопы, я понимаю если ты был бы 3D-моделлер, фотошопер или видеомейкер — вот где реально нужно постоянно обсчитывать дофига всего и действительно по делу (меши генерить, трансформировать, текстуры ресайзить, эффекты накладывать), а не копошиться в коде проекта как свинья в грязи каждые пять минут да ещё и оправдывать этим покупку дорого хардвера (ты же не компилируешь там даже, а тупо код пишешь, а компилиция вообще на билд-серверах).
#141 #1045832

>ноутбук, что бы кодить везде


>пердолинг с vim


>илитарность


>называет неосилятором всех, кто хочет работать, а не пердолится


Еще одно подтверждение, что руби используют высокомерные хипсторы
#142 #1045833
>>1045742
Вот как минимум:

The reason we can compare different data types is pragmatism. Sorting algorithms don’t need to worry about different data types in order to sort. The overall sorting order is defined below:

number < atom < reference < function < port < pid < tuple < map < list < bitstring
#143 #1045836
>>1045832

>илитарность


Нечего, сказать — обвини оппонента в элитизме, при этом рассуждая про нормальных людей и тех кто может себе позволить очень дорогой десктоп, а кто нет (при этом забывая о ценах на лаптопы).
#144 #1045843
>>1045832

> руби используют высокомерные хипсторы



Я бы не был столь категоричен, он же признался в шкомпилировании; попахивает залетным растаманом, но это не точно.
#145 #1045844
>>1045836
Ты студентик что ли? Хороший пк можно купить через пол года, после начала работы
Стаж какой у тебя?
#146 #1045845
>>1045844

>(при этом забывая о ценах на лаптопы)

#147 #1045847
>>1045843
Руби и раст? Ну это как то слишком прогрессивно
#148 #1045855
>>1045774

>Конкретно в твоем случае


Ты другому человеку ответил, ну да ладно.

>>1045764

>Звучит как работа сисадмина.


>>1045774

>grep -ne "s3:" ../backend/config/secrets.yml


>Речь идет о выборе шелла и навыках в смежной профессии devOps'a.


Другие члены моей команды, пожалуй, девопсы, да. Я иногда правлю шеф-конфигурацию, мб пару строк в шаблоне конфига, не более. В остальном я с девопс не имею ничего общего.

Вообще, мб мой пример не очень удачный был. Вим крут не тем, что в консольке работает, а механизмами работы с текстом офк. Всякие Vim-mode в IDE и текстовых редакторах обычно сильно уступают ему в возможностях. Руби-среда хороша автоматизацией. Многие функции IDE берут на себя консольные тулзы. Можно подключить к ним графический вывод. Весь рабочий стол становится IDE. Короче, ощущение нехватки функции в редакторе проходит после написания rake-задачи, ее заменяющей. А вот ощущение от нехватки фич Вима не проходит, пока не вернёшься к виму.
#149 #1045859
>>1045855

>Всякие Vim-mode в IDE и текстовых редакторах обычно сильно уступают ему в возможностях


В каких например? vim-mode в Idea вполне неплох.

Функции IDE, впрочем, действительно нинужны по большей части. Пользовался исключительно из-за навигации (find symbol, go to definition) и автокомплита, качественной реализации которых нет ни в одном редакторе.
#150 #1045874
>>1045765

>Как реализовать подобную сортировку, если есть массив с отцами у которых (root_id = id отца, parent_id = nil) и массив детей у которых (root_id = id отца самого первого, parent_id = id задачи от которой наследуется, например для сын сына это сын 1, для сын 1 это отец 1).


Обьединяй в один массив, и делай

>tasks.sort do |a, b|


> if a.parent_id || b.parent_id


> next -1 if a.parent_id.nil?


> next 1 if b.parent_id.nil?


> end


> a.name <=> b.name


>end


Замени последнюю строку, если сравниваешь не по имени, а как-то иначе
#151 #1045876
>>1045765
А, у тебя вложенность больше одного бывает? Почему бы тебе тогда не пройтись по дереву рекурсивно, на каждом шаге итерации добавляя задачу в конец массива? Создай класс, в инициализаторе создай пустой массив, объяви в нем функцию рекурсивного обхода, принимающую корень дерева как аргумент.
#152 #1045890
>>1045833
Согласен, два неявных преобразования, но второе объясняется тем, что в эрланге все иммутабельно, а для иммутабульных мапов тебе нужна возможность сравнивать элементы в ней (элементы в дереве).
#153 #1045896
Господа ниндзи, а подскажите пожалуйста следующую штуку:

Есть app на rails 4.2 и mountable engine. В основной апликухе поднят action cable, всё прекрасно работает - каналы регаются, бродкасты летают.
Вот в упор не пойму, как зарегать новый канал из engine. Подскажите пожалуйста, c меня как обычно.
#154 #1045898
>>1045826

>можно быстро перемещаться и по своему зданию и по рабочим делам


Можно, конечно, но ты уверен, что разработчиком работаешь, если тебе постоянно приходится куда-то перемещаться?

>ты же не компилируешь там даже, а тупо код пишешь, а компилиция вообще на билд-серверах


Нет, я запускаю/компилирую код у себя на машине в большинстве случаев.

>оправдывать этим покупку дорого хардвера


Хороший десктоп стоит не дороже макбука.

Я не отрицаю нужность ноутбуков, я говорю, что работать (не бегать по зданию или еще куда-то) за десктопом удобнее.
#155 #1045930
>>1045898

>Нет, я запускаю/компилирую код у себя на машине в большинстве случаев.


Ты там хеллоу-ворлд девелопишь?

>Я не отрицаю нужность ноутбуков, я говорю, что работать (не бегать по зданию или еще куда-то) за десктопом удобнее.


Удобнее работать так как лично человеку удобнее. Тем более если есть возможность ходить по зданию, а не сидеть на привязи в офисе/опенспейсе. Только не говори про нормальные компании пожалуйста где у каждого разработчика свой кабинет, в котором кроме него только шлюшка которая ему болт под столом полирует.
#156 #1045937
>>1045930

>ходить по зданию


У вас там модное большое здание как у Яндекса? Можно прилечь в гамаке, посидеть на здоровенных больших подушках (забыл как называется), пойти в кафетерий? Тогда не совсем понятно, почему вам рабочие ноуты не выдают, деньги-то есть. Если денег нет, то ходить можно разве что в соседний кубикл, как правило.
#157 #1046008
>>1045890
Ну так стоило для этого отдельный метод выделить, как #hash и #eql? в руби
#158 #1046032
#159 #1046082
>>1045937

>Можно прилечь в гамаке, посидеть на здоровенных больших подушках


Вообще охренеть. А у нас начальник даст пизды, если заснешь на рабочем месте в опенспейсе.
Москали совсем зажрались, я погляжу.
#160 #1046123
>>1046082
Я фрилансер-нищук, просто предположил на основе случайных постов в интернете. Впрочем, последние два киевских бодишопа, в которых работали знакомые, 5 лет назад выглядили примерно так, как я описал.

>начальник даст пизды, если заснешь на рабочем месте в опенспейсе


Очень зря, короткий дневной сон сильно повышает продуктивность.
#161 #1046266
Помогите протестировать метод. Выглядит он так:

>def method


> method1


> method2


> method3


> method4


>end



То есть, просто ряд других методов. Внутри каждого из них может быть либо вызов стороннего API, либо where, либо update_attribute(), либо ещё какая шняга, часто "деструктивная".

Сейчас спека такая:
https://gist.github.com/anonymous/b7a96016e31d5674cf43dffcf15ca35b

Но сеньер сказал, что это хуйня, надо переделывать. Вопрос - каким образом?
#162 #1046349
>>1046266
method1,.., для них есть спеки? если нет, то зачем ты проверяешь вызываются другие методы или нет?

если этот метод ничего больше не делает, кроме вызова публичных методов, то что еще тестировать? можешь порядок вызовов еще проверить.
#163 #1046486
>>1046266
Ну метод у тебя типичный контроллер - вызывает много сложной, но разной логики, друг с другом мало связанной. Про allow to receive забудь сразу, нечего к реализации привязываться. Пиши обычные интеграционные тесты.
#164 #1047728

> Six confusing features in Ruby


> ... Just use == 0, it is TOTALLY readable, and NOT ugly at all. ...



на rubyflow учат как код писать
#165 #1047818
>>1047728
там любой мимохуй может написать новость
#166 #1047890
>>1047818

Вся статья такой перл; жаль там комментов нету, я б оставил пару токсичных.
#167 #1048572
Ну что, рубаны? Как там с работой? Так и воюете с мистером Камалем из Индии за 15 долларов в час?
А в офис чего не пойдёте? Ааа, так некуда идти. Я и забыл.

Сегодня увидел вакансию рубиста в своей мухосрани. На радостях побежал откликаться, а там всё прозаично оказалось. Очередной веб-раб за еду, БРАТАНАМИ и командным духом. Вы как вообще рубями зарабатываете то? Для меня это уже сродни маструбации. Толку нету, выбросить жалко.
#168 #1049114
>>1048572
Мимохейтер мимикрировал? Я джва года ищу в этом треде людей на пет-проджект, а тут все кто более-менее че-то научился делать указываются работать, в итоге тут одни новички сидят.
#169 #1049116
>>1049114
укатываются
#170 #1049160
>>1049114
Что за pet-project у тебя? Что-то интересное?
Никогда не слышал, чтобы домашнего любимца делили на несколько человек
#171 #1049200
>>1049114

>Я джва года ищу в этом треде людей на пет-проджект


А я год работу. В моей мухосрани о рубях не знают в принципе. А если и знают, то платят 40-50к с тестовыми вроде "написать гем для платёжной системы".
Я не знаю, где вы тут все работу находите. Это нереально блядь просто, я уже заебался нахуй.
#172 #1049243
>>1049200
А чем ты руководствовался при выборе языка? Просто понравился? А BrainFuck не пробовал изучать и работу искать?
#173 #1049279
>>1049243
Не, я на чикен пишу в свободное время.

Чем руководствовался? Ну понравился, очевидно же. Есть гемы, всё в языке является объектами. Плюс есть рельсы. Но, по сути, из-за безработности так и остаётся языком для пет-проджектов. На работу всем нужны миддлы и помидоры. Просился джуном, не взяли нигде ПОК ПОК ПОК КАДРОВЫЙ ГОЛОД, РАБОТАТЬ НЕКОМУ, КАДРЫ НУЖНЫ ГОТОВЫ БЕСПЛАТНО УЧИТЬ КУКАКРЕЕЕЕЕЕКУУУУУ!
#174 #1049312
>>1049200

>мухосрани


Я думаю ты и сам догадываешься что нужно делать.
image
82 Кб, 300x300
#175 #1049321
>>1049312
Выпилиться, чтобы потом родиться в мегаполисе?
#176 #1049323
>>1049279
Можешь попробовать потеребить питуна, похож на руби, есть работа в разных сферах и больше 1 фреймворка
#177 #1049332
>>1049323
Гвидобейсик тоже не нужен: >>1049301
Только PHP на 1С Битриксе
#178 #1049349
>>1049332
Ну если ты собираешься гнить в россиюшке, то да, это хороший выбор
#179 #1049364
>>1049312
Ну как обычно, все аргументы свелись к ДС. Рубисты по дефолту в ДС рождаются что ли? А то у вас тут я смотрю на третий день работу находят после вката все, один я как лох сижу.
#180 #1049365
>>1049323
Ты серьёзно? Он тоже труп. Джанга никому не нужна. Даже рельсы выигрышней смотрятся. Максимум, что я видел в продакшене — всякие костыли по типу jython.
#181 #1049390
>>1049365
А теперь сравниваешь вакансии на питоне и рельсах (ведь для другого руби и не нужен) и понимаешь кто на самом деле умер
#182 #1049400
>>1049160
Я так и думал, что никого он не ищет на самом деле
StackOverflowRails[1]
28 Кб, 636x410
#183 #1049405
>>1049365

>эти проекции будущего бомжа

#184 #1049584
Вот что за советики:

> Reduce boilerplate as much as possible



которые призывают дополнительные зависимости тянуть, ради красивых однострочников. Это так не работает, особенно когда пишешь гем.

Или

> For example, predicate methods (smth?) should return true/false and not something else (e.g., 0/1).



Это вкусовщина. В руби вообще нету булева типа, между прочим. А код из другого примера

> if response =~ /Couldn\'t find series/



возвращает не то, что вы думаете.

Слабенько, evilmartians. http://gemcheck.evilmartians.io/
#185 #1049613
>>1049390
Оба?
image
38 Кб, 558x469
#187 #1049624
>>1049623
Фикс
#188 #1049643
>>1049623
И что? У руби судя по твоим графикам всё нормально. Работа с переменным успехом прибавляется.

Ну и ты обосрался, указав британию. Всё рубийное смуззи в штатах, на американских проектах. Европа довольно старпёрная. У дойч банка вон джава 6 до сих пор.
#189 #1049649
>>1049623
А чего это питон с начала 15-ого года так резко попер? Неужели чисто из-за asyncio?
#191 #1049712
>>1049665
Ну ладно, убедил! Пошёл за своими миллионами и кучей работы в петухон!
#192 #1049714
>>1049712
Лучше в пхп.
#193 #1049716
>>1049714
Точно! Там денег ещё больше!
image
55 Кб, 639x562
#194 #1049734
>>1049714
Ты удивишься, лол
#195 #1049949
Бабка на 1 канале, жестко опустила рубистов

> старшие поколение выбирают Golang!


https://youtube.com/watch?v=_Z_k5G73ttk
#196 #1050128
>>1049949
Променяла хайповое говно на хайповую мочу. Молодец. В говне хайп умер, в моче — лишь вопрос времени.
#197 #1050178
Безработные 2 года заходят в тред самого популярного (на считая пэхопэ) и высокооплачиваемого языка для веб-разработки и кукарекают, что руби умер. 2 года не меняются аргументы, опровергнутые ещё в шапке треда.
#198 #1050180
>>1049200

>А я год работу. В моей мухосрани о рубях не знают в принципе. А если и знают, то платят 40-50к с тестовыми вроде "написать гем для платёжной системы".


Я не знаю, где вы тут все работу находите. Это нереально блядь просто, я уже заебался нахуй.
Внезапно, в твоей мухосрани и на питоне работы нет, а на JS будет что-то вроде клепать анимации на jQuery для говно-cms на битриксе.

Ты за год не догадался пойти на удалёнку, где изи можно устроиться на 1к баксов в месяц. Я работу на 2к баксов нашёл за неделю. Палю годноту, только тссс, никому не показывай: http://rubyjobs.ru/
#199 #1050185
>>1049584

>Это вкусовщина. В руби вообще нету булева типа, между прочим.


Вкусовщина, что разве это не вкусовщина, которая ничего не стоит (написать !!result), но даёт приятный опыт работы в консоли, когда foo.bar? не возвращает огромный массив на полэкрана. В руби любят самодокументирующийся код, если ты вызвал foo.bar? и получил true, то тебе не надо лезть в документацию и вспоминать, что этот метод значит, ты знаешь, он говорит тебе, что foo - это гарантированно bar.
#200 #1050187
>>1050178
>>1050180
Как определить жив ли язык?
Посмотреть количество джун-вакансий, а у руби с этим все очень плохо
#201 #1050188
>>1050187
Видимо, это правило не работает. У Руби никогда, даже в 2011, не было много джун вакансий.
#202 #1050190
>>1050188

>У Руби никогда, даже в 2011, не было много джун вакансий.


Это как вообще? Все сразу РоР-программистами с двухлетним стажем стали? До 2011 он не нужен был
#203 #1050192
>>1050190
Внезапно, если ты сеньёр веб-разработчик и изучаешь новую технологию, то ты идёшь на свою первую работу с этой технологией как сеньёр, а не как джун.
image
124 Кб, 1330x648
#204 #1050196
Все равно все сосут у лучшего фреймворка
#205 #1050198
>>1050185

defined? так не работает, а вкусовщину выдавать за постулат - моветон.
#206 #1050255
>>1050180

>Внезапно, в твоей мухосрани и на питоне работы нет, а на JS будет что-то вроде клепать анимации на jQuery для говно-cms на битриксе.


Да, только ты забыл добавить туда php 4-5 версии с index.php на 10к строк от Васяна, вёрстку, ещё опционально деплой всего этого говна и знание какого-нибудь C#/Java. Разумеется, всё это за 20-30к в месяц.

>Ты за год не догадался пойти на удалёнку, где изи можно устроиться на 1к баксов в месяц. Я работу на 2к баксов нашёл за неделю. Палю годноту, только тссс, никому не показывай: http://rubyjobs.ru/



А сколько ты там раз видел джунов/миддлов на удалёнку? Я вот года полтора уже периодически мониторю. Джунов за это время я видел ровно ноль, миддлов — иногда. Всем нужны помидоры/лиды.
И потом эти люди ходят и орут РЕБЯТ, КАДРОВЫЙ ГОЛОД, РАБОТАТЬ НЕКОМУ, ОТ БЕЗЫСХОДНОСТИ ТЕХНОПАРК ЗАПУСКАЕМ! ДАЁШЬ СИНЬОРА ЗА 2 ГОДА!
#207 #1050568
>>1050178
А чего ж они безработные, непонятно...
Это как с Delphi
#208 #1050569
>>1050192
То есть Руби новичкам никак нельзя советовать, получается?
Потому что работу они не найдут. И тогда надо советовать... с чего там на Руби сеньоры перекатываются?
15033229885601
71 Кб, 523x604
#209 #1050614
>>1050569
Добро пожаловать в пхп тред, через два-три года можешь сюда вернуться
why20you[1]
15 Кб, 297x174
#210 #1050704
Мне сегодня перезвонили 3 раз за год на рубиста , ибо нужен миддл. Ну, КАДРОВЫЙ ГОЛОД, РАБОТАТЬ НЕКОМУ, сами понимаете.

Отчего в моей голове возникла мысль о создании описания сферического рубиста в вакууме. Господа выше заметили, что джунов-рубистов не бывает, сразу учат минимум на миддлов. Отчего в голове всплывает определённый образ.

Итак, рубист. Какой же он? Давайте попробуем рассмотреть его поближе:
— Родился и вырос в Москве, либо переехал туда недавно.
— Далеко не беден, может позволить себе довольно дорогие инструменты разработки — macBook, jira, heroku.
— Пришёл в руби сразу как минимум на миддла, демонстрируя высокий уровень мастерства правда, тесты только недавно научился писать, но неважно
— Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью. Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком.
— Знает только один фреймоврк. Опционально кодит на js, создавая велосипеды для своего приложения. ES6 он поробовал, ему понравилось, но в проектах пока не использовал.

Господа, а какие черты рубистов заметили вы? Прошу дополнить.
#211 #1050768
>>1050704

>Господа, а какие черты рубистов заметили вы? Прошу дополнить.


Замени макось на маздай95 и руби на ц++ начала девяностых.
«Я знаю, как написать графическую оболочку для всего!»
#212 #1050984
>>1050255

>А сколько ты там раз видел джунов/миддлов на удалёнку? Я вот года полтора уже периодически мониторю. Джунов за это время я видел ровно ноль, миддлов — иногда.


Ок, тут мой опыт для тебя бесполезен. Свои первые полтора года я работал на Upwork, только потом уже нашёл работу на rubyjobs как миддл (за 2к баксов, я хз, это миддл наверное).

Так может повторишь мой путь и попробуешь Upwork? Я первый заказ за 4 дня нашёл (фикс на 90 баксов, сделал за 5 дней, это была вообще моя первая работа в области программирования), хотя в гайдах пишут что до месяца может уйти с пустым профилем. Гайды посмотри, там всё подробно расписано. Английского достаточно письменного, у меня разговорный считай никакой, за полтора года на Upwork устно общался только с одним заказчиком раза 2-3 всего.
#213 #1050998
>>1050704

>Родился и вырос в Москве, либо переехал туда недавно.


Милионник, региональный центр. Работаю в офисе сейчас, но до этого 2 года удалённо.

>Пришёл в руби сразу как минимум на миддла, демонстрируя высокий уровень мастерства


4 года олимпиадного программирования и проектов "для себя" на питоне и Си, поэтому мб сейчас, после 3 лет что занимаюсь разработкой профессионально, буду претендовать на senior, если буду менять работу.

>правда, тесты только недавно научился писать, но неважно


Уж не помню, по-моему почти сразу, как начал работать, но они уже были на моём первом проекте, их надо было поддерживать, и было на что ориентироваться.

>Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью.


>Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком.


Принципиально FOSS, сейчас Debian. К тому же это и моя серверная ОС основная, наряду с Ubuntu.

>Знает только один фреймоврк.


Знаю рельсы, синатру, джангу, фласк, react (inb4 это библиотека), redux.

>Опционально кодит на js, создавая велосипеды для своего приложения. ES6 он поробовал, ему понравилось, но в проектах пока не использовал.


Не могу писать на JS без Babel. Язык знаю хорошо, просто воротит от синтаксиса. Собираю webpack'ом на рельсовом проекте.

>Господа, а какие черты рубистов заметили вы? Прошу дополнить.


Любят Руби, недолюблювают другие языки. Сужу по себе. Впрочем, с Babel на фронте вполне можно жить.
#214 #1051080
>>1050614
А чем Руби лучше ПХП, чтобы с него на Руби перекатываться?
#215 #1051081
>>1050704

>Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью.



А что в 10 винде полноценная линукс консоль?
#216 #1051083
>>1050704

>ES6 он поробовал, ему понравилось, но в проектах пока не использовал.



Кстати, а какие хорошие учебники есть именно по ES6?
#217 #1051091
>>1051083
Учишь JS, потом изучаешь это:
https://babeljs.io/learn-es2015/
https://babeljs.io/docs/plugins/
Зачем отдельный учебник? ES2015 это просто препроцессор и набор полифиллов. Язык не меняется, поскольку сохраняет полную обратную совместимость.
#218 #1051092
>>1051080
Это классика
https://m.habrahabr.ru/post/142140/
Я слышал, правда, что язык сильно изменился нынче. Но верится мало, что описанное в статье более не актуально. JS тоже сильно изменился, но не избавился от ключевых проблем. Но на нём, по крайней мере, можно писать хороший код, обвешавшись доп. инструментами вроде Babe, Flow. Сомневаюсь, что PHP совершил больший прогресс, нежели JS.

Для Руби нужен единственный инструмент - RuboCop. Несмотря на то, что статический анализ кода на Руби в теории сложнее, чем в Python или JS, в Руби эта задача решена лучше (но статической типизации пока не подвезли, да).
#219 #1051120
>>1051092
Когда я начинал усить Руби, у меня тоже был баттхерт от нестандартных и криво реализованных фич. Так что я разочаровался уже с первых шагов (ожидания были разрушены - язык не идеален), как впрочем и с другими языками (Питон, Java и др.) - раньше или позже.

Так что говном в других бросаться не стоит.
#220 #1051121
>>1051091
Ну как сказать... многие вещи в JS уже стали как бы "deprecated".
#221 #1051150
>>1051120
Статья недаром называется "фрактал плохого дизайна", эта выразительная фраза выбрана чтобы уже заголовком дать понять - статья не о недостатках PHP, она о том, что PHP - это один большой недостаток, и в отличие от языков с нестандартными и криво реализованными фичами, на которых при желании можно писать качественный код (пример - путь развития современного JS), PHP просто пора выкинуть на помойку. Опять же, повторюсь, если его недостатки не умудрились чудом устранить в новой версии. В принципе, в отличие от JS ему не надо сохранять обратную совместимость, поэтому шансы есть, но вникать в это я не хочу. Мы в Руби-треде, хочу напомнить.
#222 #1051151
>>1050984

>Так может повторишь мой путь и попробуешь Upwork?



Ну а какой уровень у тебя был? У тебя был подтверждённый тестом скилл? Я вот сдавал и получил 2.75. Такой себе, сам понимаешь.
#223 #1051152
>>1051121
Создатели ES2015, наверное, хотели бы, чтобы эти вещи из движков убрали, или хотя бы полностью поддерживали новый стандарт. Однако разработчики браузеров пока не спешат вводить фичи, а уж тем более что-то убирать. Если сейчас эти "как бы deprecated" штуки отключить, пол-интернета сломается.
#224 #1051153
>>1051151
Во-первых, тесты есть в паблике, я прошёл руби и питон самостоятельно на 4.1 и 4.5 вроде, через три недели перепрошёл, глядя в ответы, на 5. Во-вторых, 2.75 за 1.5 года изучения технологии - это стыдно должно быть.
#225 #1051157
>>1051153
Стыдно, да. Но мне хочется жрать, поэтому я вынужден работать, а рубями заниматься в свободное время.
#226 #1051158
>>1051157
Я так и не понял, чем ты год там занимаешься. Покажи гитхаб. Я тебе код ревью сделаю, скажу, что стоит подучить.
#227 #1051165
>>1051158
Ну покажу я свои бложики-боты для телеграм. Толку? Знакомые джуны после тудушек вкатываются на js в Москве. Чем я хуже?
#228 #1051257
>>1051165

>тудушек


Что за тудушки - это название каких-то посиделок?
#229 #1051273
>>1051165

>Ну покажу я свои бложики-боты для телеграм. Толку?


Знакомые джуны после тудушек вкатываются на js в Москве. Чем я хуже?

Может быть твои знакомые джуны не выделывались когда им предлагали код ревью провести?

У тебя слишком много самомнения, хз.
#230 #1051712
>>1051257
Это когда делают голландский штурвал в опенспейсе.
#231 #1051713
>>1051165

>Ну покажу я свои бложики-боты для телеграм. Толку? Знакомые джуны после тудушек вкатываются на js в Москве. Чем я хуже?


Видимо, тупее. Если ты за год не сделал тудушку на JS и не пошёл джуном, то дело не в Руби, а в том, что ты ни на Руби, ни на JS, ни на чём другом программировать не можешь.
#232 #1051715
>>1051712
Обязательное условие при приёме на работу JS-джуна?
#233 #1051796
>>1051165

>Знакомые джуны после тудушек вкатываются на js в Москве.


Подробнее можно?
#234 #1051797
>>1051713

>Если ты за год не сделал тудушку на JS и не пошёл джуном


???
#235 #1051806
https://pastebin.com/rSJ8RZ4e

Котаны, для чего в модуль из кода выше вложены переменные класса, или что вообще происходит при использовании "class << self", что-то я запутался совсем.

И на самом деле из этой же оперы у меня ещё есть вопрос, зачем иногда в классах делают кучу подклассов (типа "class Foo ; class Bar ; nil; end; end"). Это нормально? Я видел приём где это делается чтобы выплюнуть объект, но почему нельзя сделать не вкладываю классы один в другой.
#236 #1051859
>>1051806

> что вообще происходит при использовании "class << self"



https://stackoverflow.com/questions/2505067/class-self-idiom-in-ruby

> Это нормально?



Это допустимо.

> но почему нельзя сделать не вкладываю классы один в другой



https://stackoverflow.com/questions/6195661/when-to-use-nested-classes-and-classes-nested-in-modules

И это, иди в телеграмм, найдешь 5-6 активных каналов, в т.ч. обучающий.
#237 #1051919
>>1051859

>телеграмм


Чем IRC людей не устраивало? Или Jabber?
Нет надо свой велосипед.
#238 #1051922
>>1051919

Тихо-тихо, не ворчи.
#239 #1052105
>>1051806
у руби есть singleton classes, не Singleton патерн.
https://ruby-doc.org/core-1.9.3/Object.html#method-i-singleton_class

пусть есть
module A
. def self.x
. end
end

как происходит поиск метода при вызове: A.x

метод x, будет искаться в методах singleton_class. A.singleton_methods.

я думаю, class << self, как и def self.x, эквивалентно:
PayRoll.instance_eval {
. def your_method...
}

instance_eval
https://ruby-doc.org/core-2.2.0/BasicObject.html#method-i-instance_eval
см. View source:
VALUE klass = singleton_class_for_eval(self); // вернуть singleton class
return specific_eval(argc, argv, klass, self); // передать singleton class в specific_eval.

сравнить с class_eval:
https://ruby-doc.org/core-2.2.0/Module.html#method-i-class_eval
return specific_eval(argc, argv, mod, mod); // тот же specific_eval, но передается mod.

т.е. instance_eval добавляет к singleton классу, а class_eval к тому классу, в котром он вызван.

"attr_accessor :x", это тоже самое, что написать:

module A
. def x=(v); @x = v; end
. def x; @x; env
end

A.x не будет работать так-как методы не добавляются к singleton классу класса А.
A.singleton_methods
=> []

нам же нужно добавить к singleton классу:
A.instance_eval { attr_accessor :x }
A.singleton_methods
=> [:x]

ну или
class A
. class << self
...
end

только что нашел, но еще не читал книгу Ruby under microscope. там есть секции про классы и объекты и поиск.
#239 #1052105
>>1051806
у руби есть singleton classes, не Singleton патерн.
https://ruby-doc.org/core-1.9.3/Object.html#method-i-singleton_class

пусть есть
module A
. def self.x
. end
end

как происходит поиск метода при вызове: A.x

метод x, будет искаться в методах singleton_class. A.singleton_methods.

я думаю, class << self, как и def self.x, эквивалентно:
PayRoll.instance_eval {
. def your_method...
}

instance_eval
https://ruby-doc.org/core-2.2.0/BasicObject.html#method-i-instance_eval
см. View source:
VALUE klass = singleton_class_for_eval(self); // вернуть singleton class
return specific_eval(argc, argv, klass, self); // передать singleton class в specific_eval.

сравнить с class_eval:
https://ruby-doc.org/core-2.2.0/Module.html#method-i-class_eval
return specific_eval(argc, argv, mod, mod); // тот же specific_eval, но передается mod.

т.е. instance_eval добавляет к singleton классу, а class_eval к тому классу, в котром он вызван.

"attr_accessor :x", это тоже самое, что написать:

module A
. def x=(v); @x = v; end
. def x; @x; env
end

A.x не будет работать так-как методы не добавляются к singleton классу класса А.
A.singleton_methods
=> []

нам же нужно добавить к singleton классу:
A.instance_eval { attr_accessor :x }
A.singleton_methods
=> [:x]

ну или
class A
. class << self
...
end

только что нашел, но еще не читал книгу Ruby under microscope. там есть секции про классы и объекты и поиск.
#240 #1052413
>>1051806

>зачем иногда в классах делают кучу подклассов (типа "class Foo ; class Bar ; nil; end; end")


Внешний класс служит лишь пространством имён в этом случае. В его методах к вложенному классу можно обращаться по имени его константы (Bar), а не по полному имени (Foo::Bar).

>Это нормально?


Короткий ответ: да.

Длиный ответ:

Если вложенный класс - это небольшой утилитарный класс, используемый внешним, то да. Если вложенный класс становится большим, то его стоит вынести в отдельный файл:

># lib/foo.rb


>class Foo


>end



># lib/foo/bar.rb


>class Foo


> class Bar


> end


>end



Но тут есть нюанс при использовании RuboCop. Он по умолчанию требует комментарий к каждому непустому классу, но не модулю. Логично написать к классу Foo в файле lib/foo.rb, но RuboCop будет ругаться, что такого комментария нет в lib/foo/bar.rb, ведь он анализирует файлы независимо друг от друга. Отсюда следует, что его создатель, он же создатель известного стайлгайда Руби, не одобряет использование классов как неймспейсов, если содержимое слишком велико для одного файла, и предлагает переделать Foo в модуль, а класс Foo поместить внутрь этого модуля, например, Foo::Car. В моей практике это оправданно в 50% случаев. Советую смотреть по ситуации и если это не оправдано отключать RuboCop для этой строки:

># lib/foo/bar.rb


>class Foo # rubocop:disable Style/Documentation


> class Bar


> end


>end

#240 #1052413
>>1051806

>зачем иногда в классах делают кучу подклассов (типа "class Foo ; class Bar ; nil; end; end")


Внешний класс служит лишь пространством имён в этом случае. В его методах к вложенному классу можно обращаться по имени его константы (Bar), а не по полному имени (Foo::Bar).

>Это нормально?


Короткий ответ: да.

Длиный ответ:

Если вложенный класс - это небольшой утилитарный класс, используемый внешним, то да. Если вложенный класс становится большим, то его стоит вынести в отдельный файл:

># lib/foo.rb


>class Foo


>end



># lib/foo/bar.rb


>class Foo


> class Bar


> end


>end



Но тут есть нюанс при использовании RuboCop. Он по умолчанию требует комментарий к каждому непустому классу, но не модулю. Логично написать к классу Foo в файле lib/foo.rb, но RuboCop будет ругаться, что такого комментария нет в lib/foo/bar.rb, ведь он анализирует файлы независимо друг от друга. Отсюда следует, что его создатель, он же создатель известного стайлгайда Руби, не одобряет использование классов как неймспейсов, если содержимое слишком велико для одного файла, и предлагает переделать Foo в модуль, а класс Foo поместить внутрь этого модуля, например, Foo::Car. В моей практике это оправданно в 50% случаев. Советую смотреть по ситуации и если это не оправдано отключать RuboCop для этой строки:

># lib/foo/bar.rb


>class Foo # rubocop:disable Style/Documentation


> class Bar


> end


>end

#241 #1052620
Кто там ныл что джуниоров не берут на удаленку?

http://rubyjobs.ru/vacancies/4991

Вкатывайтесь, за дошираки.
#242 #1052696
я прошел ruby on rails куда дальше ?
#243 #1052702
>>1052696
В пхп тред
#244 #1052705
>>1052702
Это я еще в универе прошел. А дальше ? какой путь ?
#245 #1053075
>>1052620
Стоит им написать или нет? Я вчера изучил немного связные списки — чувствую себя очень умным.
#246 #1053076
>>1052620
Меньше 2 долларов в час - достойная плата для скриптомартышки.
81 Кб, 761x1000
#247 #1053348
Руби тред не на нулевой? Пора это исправить неофитским вопросом!

В приложении GET запрос вида «локалхост:порт/контроллер?параметр1&параметр2» отдает json с данными, которые я хочу вывести в одной из вьюх. Как правильно обратиться из хелпера вьюхи? Я же не должен используя URL обращаться, ведь так? Это же не внешний сайт какой-то.

Пускай, данные получены и даже отображаются в нужной форме (в моем случае это простая таблица). Хочу на странице отображать поля «параметр1» и «параметр2» куда вводятся желаемые параметры, а при нажатии на кнопку неподалеку, страница бы подгружала обновленные данные в соответствии с запросом. Как это сделать? А используя ajax как это будет выглядеть?

Заранее спасибо за ответы.
#250 #1053406
>>1053402
Я читал уже, мне бы обратиться из другого контроллера/вьюхи. Как именно это сделать-то в моем случае, с параметрами?
#251 #1054914
Предложили работу на руби он рейлс, у самого неполный c# стак (главу по asp только прочитать успел) + весь троелсен без асп, html, css. Хрюше я озвучил, что руби в глаза не видел. Но сказал, что видел питон (ненавижу эту тварь). Спросил, что почитать, говорит, ознакомьтесь как то, чтоб в ступор не впадать. Но разговор был вообще мутный, вроде как собеседование я прошел по телефону (ниче такого у меня не спрашивали, пост, гет и те я сам озвучил). Зовут вроде как уже на работу, но я хз, что это будет из себя представлять. Собственно, вопрос, что мне почитать(посмотреть) за выходные?
#252 #1054985
>>1054914
Туториал М. Хартла.

Еще ни разу не отвечал никому ничего другого независимо от предыстории.
#253 #1055035
>>1054914
Как предложили, если не секрет?
#254 #1055052
>>1055035
Валяюсь я такой в кровати, вдруг звонок от hr. Номер нашли в резюме, которое висит уже больше месяца и там чистый шарп стек. Контора до этого несколько раз резюме смотрела. Привлечь мог разве что мехмат в резюме (коственно hr это показала).
#255 #1055080
>>1055052
Ебашишь такой матан по хардкору, а потом формочки клепаешь, красота...
#256 #1055112
>>1055080
Формочки такое. Но нормальных вакансий на матане, почти-что, не сущесвтует.
#257 #1055126
>>1055112
Машобчик, не матан, но что то около того
#258 #1055171
>>1055126
Это просто унылый дроч, такой же как и формочки.
Вообще местная студентота такая наивная, мол если мотематика или там что-то околонаучное то автоматически не унылый дроч, а дохуя интересно, ага щяс.
#259 #1055195
>>1055171
но хоть нужное. хотя с машоб, это не всегда нужно. ну и быть в курсе что происходит в мире, а не что происходит в руби или около этого.
ну и если можешь матан, то и электронику можно самому уже правда, и физику и немного химии с биологией, просто так.
а с руби ты только руби и можешь, не интересно.
#260 #1055197
>>1055195
с руби ты можешь любой современный язык и технологию
#261 #1055439
>>1055197
Это реальный мир.
#262 #1055639
>>1054985

>Хартла


Вот это?
Hartl M., Donahoe L. - Learn Enough HTML to Be Dangerous. A tutorial introduction to HTML. (2017)
#264 #1055719
>>1055648
Меня гугл забанил серьёзно
#265 #1055908
Аноны выручайте. Нужен инсайд по ruby/ror-проектам в EPAM. Есть ли они? На каком этапе? Их долгосрочность? Ищутся ли новые?

Спрашиваю потому что их официальные представители говорят одно, знакомые другое, я потерялся уже и не знаю кому верить.
#266 #1055920
>>1035747
на Нансена, мань?
#267 #1056864
Заинтересовался Ruby через приложение SoloLearn для мобильного. Они его внезапно русифицировали, поэтому я потыкав Python, Java, C++, остановился на Ruby. Есть в нем что-то от простоты. А я люблю простое.
Сейчас воткнув на древнем ноутбуке Atom+GitHub, вооружившись справочником по математике, учусь решать уравнения.
Приветствую всех, возможно я с вами надолго.
#268 #1057019
Аноны, подскажите, вот есть у меня дев приложение на рельсах, там вроде веб сервер пума, а если я хочу продакшн версию, мне нужно дополнительно сервер ставить апач или нжинкс и в чем преимущество продакшн версии?
#269 #1057053
>>1057019
rails server -e production

Пума - полноценный веб-сервер, ничего лишнего не надо.
#270 #1057106
>>1056864
Попробуй шарпач. Зависимость есть, брат- жив.
#271 #1057168
>>1057106
Вряд ли его ноут потянет шарпоIDE.
#272 #1057380
>>1057053
вроде ЗОРОБОТОЛО но теперь другая хуйня
- сервер падает, как сделать автозапуск?
На сервере убунтец 16, скачал руководство по системд
#273 #1057442
#274 #1057474
>>1057380
так и сделал. Посмотрим что сегодня ночью будет, а то меня уже анально поебывают, хули дескать твое ПО не работает.
#275 #1059099
>>1057380
Кури systemd. Писать юниты очень просто. Вот как сделать сервис для сервера Puma: https://github.com/puma/puma/blob/master/docs/systemd.md
#276 #1059408
>>1050704

>— Родился и вырос в Москве, либо переехал туда недавно.


Дс3 вот и гадай что это

>— Далеко не беден, может позволить себе довольно дорогие инструменты разработки — macBook, jira, heroku.


Около бомж с бюджетом 1к на неделю.

>— Пришёл в руби сразу как минимум на миддла, демонстрируя высокий уровень мастерства


Хз на кого я пришел, туплю как сука, после шарпа, с вашей утиной типизации, мне мозг клинит.

>— Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью. Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком.


Шинда мое все, в кармане винфон, сам хотел учить uwp, когда позвали.

>— Знает только один фреймоврк. Опционально кодит на js, создавая велосипеды для своего приложения. ES6 он поробовал, ему понравилось, но в проектах пока не использовал.


И этот фреймворк не знаю. И Js не знаю.
Мимо >>1054914 кун

>

#277 #1059474
>>1059408

>винфон


Блин это система червь-пидор, зачем ты купил его вообще?
#278 #1059514
>>1059474
Покупал его маман, она не стала его осваивать, оставшись на кнопочном. Когда мое ведро сдохло, вместо покупки нового, я достал с полки этот винфон.
#279 #1061711
>>1029529 (OP)
Руби походу всё посоны.

Популярность на StackOverflow достигла уровня 2009 года

Developer interest is waning, and now Coding Dojo, one of the largest programming bootcamps in the United States, has ejected it from its curriculum. This, it explains, is due to lower employer demand for the technology.
#280 #1061731
>>1061711
В этой статье речь идет не о Ruby, а o Rails. В качестве альтернативы рельсам предлагается “There’s plenty of really great web development alternatives,” Shaw said, mentioning React, Vue.js, and “the rise of JavaScript not sucking so bad.” . В качестве замены MVC-фреймворку предлагают фронтенд-библиотеки. Найс. А тот самый Coding Dojo, который отказался от Rails, заменил его на Javовский Spring. Если что, про Java тоже постоянно говорят, что она умирает и т.д.
#281 #1061733
>>1061731
Про Delphi тоже говорят что умирает. Врут собаки. Жив, жив Курилка!
#282 #1061744
>>1061731
Вот только на джаве хоть что-то периодически выходит. А на рубях выходят только в основном никому неизвестные исходники на гитхаб.
#283 #1061746
>>1061731
Ваш тред даже на двачах был нихже хаскеля, пока я его не бампанул.
#284 #1061760
>>1061744
Даже не знаю, на кого этот траллинг рассчитан. На каких-то залетных новичков? Тред конечно живее не становится, это да.
#285 #1061799
Я на руби свои скриптики пишу и мне норм. не такой фашистский синтаксис как в питухоне, и при этом не такой адовый синтаксис как в перле.
У меня не много опыта в кодинге, но при взгляде на на код на трёх этих языках руби выглядит лучше.
#286 #1061806
>>1061799

>не такой фашистский синтаксис как в питухоне


Это пока ты в команде не начал работать, жёсткая стандартизация лучше, чем когда каждый пишет как хочет
#287 #1061807
>>1061806
И в чём проблема придерживаться стайлгайда?
#288 #1061814
>>1061807
В пифоне просто стайлгайд один, а не множество, и это прекрасно
#289 #1061815
>>1061814
Везде где смотрел на руби код прямо указывается один стайлгайд на гитхабе.
В командах ещё и рубокопы всякие применяются, чтобы палить тех кто от стайлгайда отходит.
#290 #1061842
>>1061815
В таком случае аргумент о фашистском синтаксисе пифона не принимается
#291 #1061855
>>1061815

>Везде где смотрел на руби код прямо указывается один стайлгайд на гитхабе.



Везде — это полтора гема? Открой хотя бы рельсу, включи рубокоп и наблюдай как стайл-гайд соблюдается.
#292 #1061867
>>1061855
У них свой конфиг для рубокопа, это допустимо:
https://github.com/rails/rails/blob/master/.rubocop.yml

>>1061842
Если ты не в команде, то пиши как хочешь, ты просто хейтер.
#293 #1061876
>>1061867

> У них свой конфиг для рубокопа, это допустимо



который использует 3,5 правила из всего гайда, раскомментируй эту строчку в rubocop.yml

> DisabledByDefault: true



и наблюдай.
#294 #1061878
>>1061876
закомментируй
#295 #1061940
>>1061876
В рельсе свой стайлгайд (из-за рельсового dsl) и что? У них есть план и они его придерживаются.
#296 #1061958
>>1061940

> и что?



В отличии от го, никто (из нормальных людей) не обязан и не соблюдает рубиновский стайл-гайд на 100%.

Скажем, если мне нравится писать `return` в конце метода, то буду писать его везде, где это допустимо/не портит устоявшийся стиль.
Screenshot20170915003801
57 Кб, 1192x354
#297 #1061968
>>1061958
Ответственный за мерджинг пробежится рубокопом и зарулит твой коммит.
В го просто изначально прибит гвоздями гоfmt чтобы макаки нанятые гуглом не могли накосячить ну ок, в больших корпорациях так нужно.
Руби от этого хуже не становится и все инструменты для осуществления подобного контроля также есть. Если мистер которые владеет проектом решил использовать стайлгайд, значит все остальные будут либо писать по нему, любо искать другой проект.
#298 #1061976
>>1061968

> Если мистер которые владеет проектом решил использовать стайлгайд, значит все остальные будут либо писать по нему, любо искать другой проект.



Значит, нужно искать другой проект. Стайл-гайд обязан быть аргументирован, почему так не надо писать — это руководство по тому, как не наступить на грабли, читая чужой код. Чьи-то хотелки, как в случае с https://github.com/bbatsov/ruby-style-guide#no-explicit-return не несут в себе никакой практической цености.
[HorribleSubs] Owarimonogatari S2 - 01 [720p] - 00030 - 00:[...]
99 Кб, 1280x720
#299 #1061981
>>1061976
Руби это язык упирающий на читаемость и коммьюнити именно за это и любит рубишку, поэтому и гайды такие.

Рэльсовики стараются в данном случае брать и следовать этому в своём руководстве.

Хотелки это у тебя, а у них большой опыт и философия которая подкрепляет гайд.
Как и весь синтаксический сахар в руби опускание ретёрнов призвано улучшить читаемость.

«А я вот на плюсах всегда return 0 ставлю, мне так нравится!», но руби это не твой какой-то предыдущий язык, своя атмосфера, такие вещи надо просто принять.
#300 #1061990
>>1061981

А не мог бы ты аргументировать практически свои слова про коммьюнити? Давай возьмем 1000 самых популярных гемов и прогоним по ним рубокоп со всеми галочками. Сколько варнингов будет?

> опускание ретёрнов призвано улучшить читаемость



Об опускании (в контексте статического анализа) Матц говорил что это не так уж и хорошо. Моя позиция простая: опускание ретурнов в угоду читабельности делает систему менее предсказуемой.
791-OnePieceTV[Persona99](1280x720).rus.jap - 00001 - 00:13[...]
146 Кб, 1280x720
#301 #1061993
>>1061990

>Давай возьмем 1000 самых популярных гемов и прогоним по ним рубокоп со всеми галочками.


Если в проекте есть свой конфиг рубокопа, то прогонять нужно по нему. Гитлеровские штучки как в питоне и го здесь неуместны. Потому что руби это не питон или го (которые живут на поддуве гугла, руби только сейлсфорс поддувает).

>Моя позиция простая: опускание ретурнов в угоду читабельности делает систему менее предсказуемой.


Каким образом? Проявляется какое-то недокументированное поведение?
Чтобы сделать систему более предсказуемой существуют всякие ensure или можно просто nil поставить в конце функции если ты её опроцедурить хочешь.

В JS вон вообще надо извращаться с запятыми и прочими знаками пунктуации просто чтобы код нормально работал.
#302 #1062002
>>1061993

> Если в проекте есть свой конфиг рубокопа, то прогонять нужно по нему.



Я нахожу несколько двуличным когда с одной стороны, ты не даешь мне отключить конкретное правило рубокопа, а с другой ­— для тебя ок, когда третьи лица отключают едва-ли не весь рубокоп. Ещё немного и начну кидаться какашками в тебя. Братюня, не доводи.

> Каким образом? Проявляется какое-то недокументированное поведение?



Пишешь код, а через год не можешь сказать, возврат значения — запланирован, или это артефакт. Если не запланирован, то использовать его далее по коду - как минимум, не ок. В комментариях к методу еще бы и возвращаемые типы расписать, если это не 'примитивы'.
Призрак в доспехах.1080p. Ton - 00003 - 00:13:14
217 Кб, 1920x1080
#303 #1062009
>>1062002
Ещё раз повторяю, руби это не питухон и не гомого — хочешь используешь метод size, хочешь юзаешь count или даже length. Алиасы, тысячи их.

Хочешь отключить в своём проекте все фильтры и оставить только свои — ок, хочешь дефолтный стайл гайд — пожалуйста.

Просто ты, как говорят, любишь по жёстче с самого начала.

>Пишешь код, а через год не можешь сказать, возврат значения — запланирован, или это артефакт.


Тесты как раз для этого придуманы насколько я знаю, они проверят оутпут твоих функций. Также можно реализовать методы проверки типа на соответствие классу или что-нибудь такое.
#304 #1062018
>>1062009

>Просто ты, как говорят, любишь по жёстче с самого начала.



Наоборот, я люблю нежно и ласково.

> Тесты как раз для этого придуманы насколько я знаю, они проверят оутпут твоих функций. Также можно реализовать методы проверки типа на соответствие классу или что-нибудь такое.



Т.е. вместо самодокументирующегося кода предлагаешь писать миллион тестов, на те 10% редких кейсов? Да и и неудобно это: из-за каждой мелочи лезть и читать тесты.
[HorribleSubs] Kono Subarashii Sekai ni Shukufuku wo! 2 - 0[...]
203 Кб, 1920x1080
#305 #1062022
>>1062018

>Т.е. вместо самодокументирующегося кода предлагаешь писать миллион тестов, на те 10% редких кейсов? Да и и неудобно это: из-за каждой мелочи лезть и читать тесты.


10% чемоданов это уже не редкость, а на совсем экзотические случаи я предлагаю забить (иначе говоря не делать преждевременную оптимизацию или избыточное покрытие тестами) и после первого сообщения о баге переписать функцию нормально, а с опытом функции будут «сами собой» писаться нормальными.
#306 #1062028
>>1062022

Прости, но нахожу твою аргументацию недостаточно убедительной или как в случае с

> Ещё раз повторяю, руби это не питухон и не гомого — хочешь используешь метод size, хочешь юзаешь count или даже length. Алиасы, тысячи их.



вообще не понимаю каким боком алиасы связаны с вопросом о `return`.
#307 #1062030
>>1062028

>вообще не понимаю каким боком алиасы связаны с вопросом о `return`


Таким что return в большинстве случаев это (синтаксический) сахар.
А руби настолько OOP язык, что в нём постоянно идёт обмен сообщеньками вот и всё. Хочешь залочить функцию, пиши nil в конце и всё.
#308 #1062765
Нужна помощь. Пилю на рельсах имиджборду и думаю над связями между моделями. Пока что у меня получилось так: есть модель Post, вот такая вот: https://pastebin.com/j3NAdrtv
Получается такая система, что если у Post id равен thread_id, то это, собственно, сам тред, а если нет - значит, это ответ. Сделал так потому, что хочу, чтобы id были, как на всех имиджбордах. Насколько хорош такой способ? Можно сделать проще?
#310 #1063060
>>1062824
На обезьяну сверху справа надо академическую шапку.
2017-09-17 12.57.56
82 Кб, 525x700
#311 #1063142
>>1029529 (OP)
Нахуй ваш Руби, когда есть Crystal?
https://habrahabr.ru/company/ruvds/blog/337992/
#312 #1063145
Блин два часа тупил с проблемой подавления вывода stderr, подключал open3. Оказалось у меня в другом месте просто был один вызов не экранированный.
#313 #1063152
>>1063142

>Crystal


Cтатически типизированный руби?
#314 #1063164
>>1063152
Нет, он компилируемый. Типы указывать в коде не надо.
#315 #1063226
Сап гайс.
Прошу помощи с тестом контроллера на акшон oauth аутетнтификация.
на скринах соответственно тест и ошипка.

облазил все интернеты, так и не могу понять в чем проблема и что я делаю не так.
#316 #1063305
>>1063226
Судя по скринам ты используешь саблайм и убунту. Надеюсь помог.
#317 #1063399
>>1063305
Это намек на то что еще какая-то инфа нужна?
#318 #1063611
>>1063226
да хз вроде что-то пустое отправляется символы поменять на обьекты
#320 #1065235

> Почему твой доклад на RailsClub 2017 называется «Ruby is dead»?



У меня есть официальное разрешение от Матца называть Ruby мертвым языком :) Конечно, это провокация. Не новость, что я всегда критикую Ruby и Rails. Мне нравится Ruby, но я всегда сравниваю его с другими языками. В докладе я покажу примеры из Java и PHP, расскажу как они развивались и как сильно улучшились за последнее десятилетие. Но Ruby остался таким же, как 20 лет назад, и это должно быть предупреждением для нас. Я хочу остаться в Ruby, но он должен развиваться! Многие люди переходят на другой стек, потому что хотят работать с языком, который решает их проблемы. Моя проблема — как создать стабильное и надежное коммерческое приложение. Да, в Ruby процесс добавления новых фич, таких как, например, поддержка типизации, идет очень сложно, во многом из за поддержки обратной совместимости. Но ведь другим языкам удалось это сделать!

Двачую этого.
#321 #1065237

> С другой стороны, я думаю что Ruby напрасно лишён интерфейсов. Из-за этого невозможно строго определить, какое именно поведение ожидается от метода, что было бы особенно полезно для авторов библиотек. Я надеюсь когда-нибудь это починят. Также не думаю, что в будущем Ruby сыграют заметную роль библиотеки, в которых будет реализовано то, чего нет в ядре языка. Новые фичи по-настоящему заработают только тогда, когда станут частью ядра Ruby. И конечно, реализация должна быть сделана как следует.



И этого тоже
#322 #1065245
>>1065235
>>1065237
Ты петух драный, не собираешься ссылку приводить? Тебе хоть интерфейсы, хоть типы дай, один хуй будет непонятно что ты хочешь.
Ещё блядь отступы попроси.
#323 #1065247
>>1065245

Братишка, это из статей по ссылкам из >>1065232 Братишка, будь, пожалуйста, менее токсичным.

> Ещё блядь отступы попроси.



Нет отступы не надо. Я бы ещё попросил библиотек побольше, но слабая экосистема - меньшее из злободневного. Лучше аннотации на уровне языка ( костыльно они реализованы в подделке от джетбрейн).
#324 #1065248
>>1065247
Сам ты братишка, не буду я перебирать все эти статьи, а ты ещё и бака-гайдзин.
#325 #1065876
Сап, рубяги.
Есть вопрос, как лучше реализовать маршрутизацию типа двача,к примеру: /pr/t1, /b/t45 и так далее.
#326 #1066062
>>1065876
У тебя всё получится.
#327 #1067251
>>1066062
У него все получится, просто передай GEM HUIPIZDA INSTALL
01
41 Кб, 638x479
#328 #1068904
Есть кто работал с графовыми БД?
Хотел использовать neo4j, а он оказался платным. Следующая по популярности OrientDB не имеет нормальных либ для рубей.
Че посоветуете?
#329 #1069048
>>1068904
Ну напиши нормальную либу сам.
#330 #1069806
В последнее время почитываю блог Ruby-программиста.

http://blog.topolyan.com/

Просто оставлю это здесь.
#331 #1071879
Где хранятся токены для сессий на сервере? По идее при каждом запросе должны сверятся ключи из кук и на серваке, так ведь?
Хочу сделать отслеживание залогинен пользователь или нет
#332 #1071880
>>1069806
Ну мог бы для приличия бложик свой на рубях запилить, не на вордпресе
#333 #1071948
>>1071879
Как я понял сессии по дефолту хранятся в куках в зашифрованном виде, перенёс всё в редис и стало проще ими оперировать
j5IXWyjdQwE
87 Кб, 715x1000
#334 #1072640
>>1050704

>— Родился и вырос в Москве, либо переехал туда недавно.


Засранск на севере. Правда, поступил в мск на бюджет, но вылетел с 6-го или 5-го семестра, потому что не ходил на физ-ру

>Далеко не беден


Сам-то как думаешь?

>macBook


Анус пятилетней давности с докупленными ssd на 128 и оперативкой до 16.

>jira


На стажировке была, да, но я не знаю как там за нее платили.

>heroku


Заливал на фри место псевдопетпроджекты.

>Пришёл в руби сразу как минимум на миддла


Сначала стажировка я правда думал, что хоть что-то заплатят, съебал через 2 недели, последние пару недель — июнь на удаленке 30-40к, что очень круто в моей ситуации на самом деле по меркам этого города

>правда, тесты только недавно научился писать, но неважно


хех

>Презирает виндовс. Совсем. Даже 10 версию


В дуалбуте дрисня, но я туда давно не грузился. Игрушки же и все такое прочее. У меня там скайп еще.

>Даже с полноценной линупсовой консолью


Cmder я туда поставил, но, по сути, не пользовал.

>Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком


Арчиком, где есть yaourt + AUR.

>Знает только один фреймоврк


Это ты про рельсы, лол? Вообще я пытался реакт/вью учить между собеседованиями, так что не знаю, чек или не чек.

>Опционально кодит на js,


Что-то околонулевые знания.

А еще я не знаю что такое смузи, например.
Такие дела.

Со мной всё будет хорошо?
j5IXWyjdQwE
87 Кб, 715x1000
#334 #1072640
>>1050704

>— Родился и вырос в Москве, либо переехал туда недавно.


Засранск на севере. Правда, поступил в мск на бюджет, но вылетел с 6-го или 5-го семестра, потому что не ходил на физ-ру

>Далеко не беден


Сам-то как думаешь?

>macBook


Анус пятилетней давности с докупленными ssd на 128 и оперативкой до 16.

>jira


На стажировке была, да, но я не знаю как там за нее платили.

>heroku


Заливал на фри место псевдопетпроджекты.

>Пришёл в руби сразу как минимум на миддла


Сначала стажировка я правда думал, что хоть что-то заплатят, съебал через 2 недели, последние пару недель — июнь на удаленке 30-40к, что очень круто в моей ситуации на самом деле по меркам этого города

>правда, тесты только недавно научился писать, но неважно


хех

>Презирает виндовс. Совсем. Даже 10 версию


В дуалбуте дрисня, но я туда давно не грузился. Игрушки же и все такое прочее. У меня там скайп еще.

>Даже с полноценной линупсовой консолью


Cmder я туда поставил, но, по сути, не пользовал.

>Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком


Арчиком, где есть yaourt + AUR.

>Знает только один фреймоврк


Это ты про рельсы, лол? Вообще я пытался реакт/вью учить между собеседованиями, так что не знаю, чек или не чек.

>Опционально кодит на js,


Что-то околонулевые знания.

А еще я не знаю что такое смузи, например.
Такие дела.

Со мной всё будет хорошо?
#335 #1072672
Фигасе, ваш тред еще жив. Помню, год назад начинал учить руби ввиду отсутствия вакансий так и не продолжил, что-то сюда спрашивал.
Руби, не умирай!
кстати, эликсир есть смысл учить в широком смысле?
#336 #1072678
>>1072672
Нахуй нужен. Иди вон CRUDошлёпить на пыхе.
#337 #1072755
>>1072672
Смысл есть. Но если ради денег, то учи джаву.
#338 #1072957
>>1072755
И вкатывайся через пять лет. Нахуй джава не нужна.
2017-10-09 23.45.14
27 Кб, 609x133
#339 #1073152
Помогите ньюфагу, почему не детектит гем? Ставил руби на мак по гайду с сайта rvm.
#340 #1073304
Аноны, подскажите, а как эта хуетень на руби зовется, мне нужно что бы на сервере крутилось что-то вроде фонового задания, сервиса или как там его.
#341 #1073316
>>1073304
Крон?
#342 #1073395
>>1073304
сайдкик, рескью?
#343 #1074088
>>1073304
бля, сорян за тупой вопрос, в общем как в терминологии руби называется кусок кода который
работает в постоянно режиме, сейчас я вроде все так представляю, зашел пользователь на веб сервер, началась работа в контроллерах, а мне нужно то что бы запускало и работало, в моем случае загоняло данные в БД
#344 #1074381
>>1074088
в руби не знаю, но так демон
в рельсах active job
#345 #1074546
>>1074381
ок, спс, наверное действительно то, что мне нужно
a
53 Кб, 970x666
#346 #1074693
Анон, пипец как вакансий мало. Я уже больше полугода мониторю - один треш какой-то:
- легаси, "поддержка и развитие"
- не ит-конторы
- бездушные бади-шопы (которые тоже ит-конторами язык не поворачивается назвать)
- удаленщики
- просто мутные конторы с мутными командами

Мониторю хх, мойкруг и руби-джобс. Что делать, хочется работать в интересном проекте и/или здоровом коллективе, а я сижу тухну в одном болоте и просто некуда уйти даже.
Где еще поискать можно? Внезапно в Питере часто мелькают интересные вакансии, но боязно переезжать.
#347 #1074860
>>1063226
Не используй тесты контроллеров, они устарели. Ошибка в том, что параметр provider равен nil, т.е. отсутствует.
#348 #1074861
>>1062765
Я бы не стал так делать, но на двачах так, да.
#349 #1074873
>>1049160
Да что угодно. Сейчас планирую свой VPN-сервис поднимать с фичами, которых нет НИГДЕ, но, по словам знакомого, который подобными сервисами активно пользуется, крайне востребованными. Надеюсь взлетит.
#350 #1074881
>>1074693
На удалёнке иди, 2к баксов за сидение дома изи. Если претендует на большую ЗП, то ничем не помогу.
#351 #1075082
>>1074693

>ькают интересные вакансии, но боя


а на чем видишь интересные вакансии?
#352 #1077099
Что повторить перед собеседование на перекат PHP->RUBY ?
#353 #1077167
>>1077099
Отче Наш.
[HorribleSubs] Shoujo Shuumatsu Ryokou - 02 [720p] - 00002 [...]
181 Кб, 1280x720
#354 #1077203
Котаны я долго не занимался кодингом, но когда-то на руби что-то начинал учить, но из-за личных проблем оставил это, а сейчас совсем делать нечего – стоит допройти рейлс туториал или нет?
#355 #1077223
>>1077203
Стоит всегда что-то делать. А если делать - то делать заебись.
#356 #1077229
>>1077203
Стоит, рельсы сейчас очень даже котируются, т.к. стабильное, проверенное, удобное решение + версия 5.1 наконец-то въехала в современный веб с вебпаком и т.д.
#357 #1077231
Стоит въезжать в эликсир фор фан, если опыта на руби - ноль? Или там куда важнее знание ерланга? Или он вообще на 95% независим от них всех?
#358 #1077319
>>1077231
скоро выйдет кристалл и все узкие места можно будет писать на нем вместо элексира, так что нет.
#359 #1077354
>>1077231
Больше от эрланга, но вообще можно и с нуля вкатываться.
#360 #1077399
Посоны, ради фана, вкиньте сюда пару вакансий, которые считаете интересными.
Я либо не там ищу, либо в глаза долблюсь - но нет нихуя на рынке вообще.
#361 #1077400
>>1077399
PS: кроме удаленки, там что-то есть, но это не для всех
#362 #1077687
>>1077319

Я, как руби-макака, успел немного разочаровался в кристале. Язык прикольный, ruby inspired, да; но документации, стайл гайдов категорически не хватает. Вкатываться в такое можно, если есть опыт в смежных языках, иначе больно.

Вот например, вчера баловался с weak algorithms (GA) на кристале. Для переменной внутри гена объявил union typed variable. Через час выяснилось: union не умеет в многие типы, замыкания. И что тут делать? Обмазываться дженериками? Лепить тысячу классов? Всё не то. Разве что идти искать решения в чужих исходниками — тоже такое. Вот думаю теперь: отложить кристал на пару лет, да попробовать скалу или раст. По скале уже полистал документацию по ней - испытал мультиоргазм - разжевано очень подробно, как раз для таких дурачков как я.

Так что не разделяю твой оптимизм на счёт кристала.
#363 #1078032
>>1077687
Наверное ты плохо умеешь гуглить, а это очень важно. Раньше я тоже считал, что по Руби мало инфы, но с ростом опыта начал находить, и очень много.

Style guide https://github.com/bbatsov/ruby-style-guide
Даже на русский переведен https://github.com/arbox/ruby-style-guide/blob/master/README-ruRU.md
#364 #1078034
#366 #1078143
>>1078097
И что это значит?
#367 #1078180
>>1077687
Что такое дженереки?
#368 #1078238
>>1078180

Обобщенный тип данных в статических ЯП. При приведении (("type erasure") к дженерику, можно использовать один и тот же код для разных типов,
#369 #1078548
>>1078034
Сразу видно типичного программиста. Немножко не от мира сего; "идеальный" код, который делает не то что просили...
#370 #1078610
Есть класс автомобилей, с атрибутами: позиция и скорость. Я создаю массив объектов этого класса.
Затем есть второй класс - симуляция. В нем я в цикле по времени (1 сек) вычитаю расстояние текущего автомобиля из предыдущего. Как это сделать? Делаю через each но там как я понимаю счетчик только для одного объекта, как обратиться к предыдущему объекту?
код https://ideone.com/1ETRlT
#371 #1079200
>>1078238
Типа как перегрузка методов в крестинах?
14988870853171
117 Кб, 512x512
#372 #1079247
Обращаюсь к мастодонтам разработки.
Какое самое больше количество таблиц и размер БД вы встречали в своей практике в веб-приложениях?
#373 #1079264
>>1079200

Нет, в крестах аналог — templates.

https://en.wikipedia.org/wiki/Template_(C++)
#375 #1081142
>>1080385

>https://ideone.com/dogXO2


Что означают скобки в: «|(prev, nxt)|» ?
#376 #1081471
>>1081142
Очевидно присвоение массива в переменные типа `a, b = [1, 2]`. Не знал про это, где можно почитать про конструкцию?
#377 #1082069
Насколько же некоторые люди промытые, пиздец просто
https://github.com/thoughtbot/factory_bot/issues/921#issuecomment-231569572
А вообще там все issue достойно отдельной статьи
#378 #1082668
Мне, ньюфагу, сказали, что подобная строка вызовет смех у тех, кто будет проверять мое тетсовое. Не могу понять... почему? params[:status].empty? ? @item.update_attributes(is_admin?: false) : @item.update_attributes(is_admin?: true )
#379 #1082669
>>1082668
*тестовое
#380 #1082708
>>1082668
Нет, смех, конечно, не вызовет, то что джуны пишут лютое говно в тестовых привыкаешь быстро, но я бы тебе не перезвонил. Самый минимум можно переписать вот так @item.update(is_admin: params[:status].empty?). Еще в руби обычно называют булевые поля без префикса is, то есть не is_admin, а просто admin. Хотя даже после этих исправлений строчка бы попахивала: обновление поля с именем admin в зависимости от пустоты параметра, который, судя по названию, никак не относится к администрированию. Но что бы понять как конкретно ее можно переписать нужно видеть остальной код.
#381 #1082715
>>1082708
я так понял, что ко мне приебались не из-за способа обновления поля, а именно из-за синаксиса... спасибо
#382 #1082716
>>1082708
Не поверишь. Меня взяли на испытательный срок, во время которого, едиснтвенное, что я делаю- пишу тестовое. Как только напишу- испытательный срок закроют. И мне за это даже немного платят. И это при том, что у меня опыта ноль. Я в ахуе.
#383 #1082725
>>1082708

>Еще в руби обычно называют булевые поля без префикса is, то есть не is_admin, а просто admin.



Причем тут руби, если он обращается к ActiveRecord? Ты там поля в базах данных по конвенции Бацова называешь?
#384 #1082823
>>1082725
При том что названия методов генерятся из названий полей. Хочешь названия метод по конвенции -> называешь поля в базе по конвенции.
sage #385 #1082834
>>1082823

> называешь поля в базе по конвенции



Ясно, всё с тобой, называтель. Хочешь красивые названия для методов-предикаты используй http://www.chrisrolle.com/en/blog/aliasing-the-rails-way
#386 #1082857
>>1082834

>называешь поля в базе по конвенции


А собственно почему бы и нет? А alias_attribute так себе штука, особенно когда у тебя куча овердохуя сложных запросов, путаться начинаешь, когда одна и та же колонка называется по-разному в руби коде и sql.
#387 #1082860
Ну что, рубаны, в руби 2.5 (https://blog.jetbrains.com/ruby/2017/10/10-new-features-in-ruby-2-5/) вместо нормальных изменений опять завезли только сахарок. Сколько еще будем это терпеть?
#388 #1082866
>>1082857

>А собственно почему бы и нет?



Ты ведь в курсе на backend'e зачастую используется больше одного ЯП? Предлагаешь писать на го/эликсире/whatever с нотациями из руби?
#389 #1082875
>>1082866
Я прямо сейчас так пишу, какой-то конвенции в именование полей в базе в любом случае нужно придерживаться же. На беке в проекте используется руби, джава и немного эликсир, никто не жалуется (разработчиков чуть больше 30).
Тем более, что за руби-нотация? Выбор-то не очень большой или underscore или camelcase, плюс мелочи вроде постфикса _at для полей с датами.
#390 #1082888
>>1082668

>params[:status].empty? ? @item.update_attributes(is_admin?: false) : @item.update_attributes(is_admin?: true )



Потому что если хочешь тернарник использовать, то

> @item.update_attributes(is_admin?: params[:status].empty? ? false : true)



А так у тебя ни хуй, ни пизда, говно блядь
#391 #1082911
>>1082875

>Я прямо сейчас так пишу, какой-то конвенции в именование полей в базе в любом случае нужно придерживаться же.



В конвенции руби нет понятия суффикса в имени переменной. Без суффикса поля sql нормально не именуются. Так что не думаю, что вы используете конвенцию руби в чистом её виде; полагаю используете смесь стайл-гайда по sql, типа http://www.sqlstyle.guide и отдельных нотаций из рубиновского стайл-гайда. Хотите так писать - ок, однако в базах данных, на мой взгляд, допустимо использовать префиксы is_ для булева типа данных, вот и всё.
#392 #1082999
>>1082708

>Еще в руби обычно называют булевые поля без префикса is


Бля, а где это интересно написано, что в руби поля называют без префикса is_? Может быть ты хотел сказать в рельсе?
Так в рельсе дохуя чего делают, от чего цивилизованный мир уже давно отказался. Уже тошнит всех от этой магии и бесконечного синтаксического сахара.
#393 #1083029
>>1082999

>Бля, а где это интересно написано, что в руби поля называют без префикса is_?


Посмотри на стандартную библиотеку руби, например, ни одного метода с префиксом is_ ты там не найдешь.

>Уже тошнит всех от этой магии и бесконечного синтаксического сахара.


Сам с собой споришь? Я не утверждал, что тонны синтаксического сахара это хорошо, я бы и сам с удовольствием выпилил бы процентов 70 всех методов из рельс, да и вот это >>1082860 меня расстраивает. Но это не отменяет того, что многие вещи в руби сделаны вполне годно, а совсем без синтаксического сахара может получится JavaScript.
#394 #1083218
Какой дистрибутив и DE посоветуете новичку в прыщах?
#395 #1083234
#396 #1083258
>>1083029
Методы с полями не путай. Где ты видел чтобы писали `admin? = true`?
Мне нахуй не уперлось, чтобы фремворк добавлял мне говнометодов на основе типа данных. Были же раньше в рельсах find_by_zalupa_color('red'). Сейчас вот повзрослели. И эта хуйня из той же оперы.
is_ так же хорош, как _at. Охуенно удобно читается. В отличии от какого-нибудь active - чего блять эктив, лезь в базу смотри.
Снимок экрана 2017-10-28 в 16.48.07
554 Кб, 1986x1610
#397 #1083265
Анон, знаешь что-нибудь про эту контору? Годная или бадишоп?
#398 #1084224
У меня есть model1, у нее has_many model2, а у нее attached_file.Все это на mongoid. Когда файлы приходят из формы, я хочу их все записать в model1.models2 а потом все вместе сохранить, а то у меня сейчас каждый файл пишется отдельно... так можно сделать? что-то не пойму как
#399 #1084243
>>1084224
я все осознал, не бейте, просто обоссыте
Screenshot-2017-10-30 NewsApp
1 Кб, 275x95
#400 #1084399
Юзаю will_paginate-bootstrap. Все делаю по инструкции. Все работает, страницы листаются, но... кнопки "вперед" и "назад" пустые и схлопнутые, хотя рабочие. Как поправить?
#401 #1084641
>>1084399

>Как поправить?


Использовать каминари.
#402 #1084782
>>1084641
Я вынужден писать на старых рельсах, каминари с ними не пашет
#403 #1085231
>>1084782
На первых что-ли? Я помню еще в третьей версии их использовал.
Или может просто новые версии со старыми не работают, тогда можно поставить старую же версию каминарей.
#404 #1085385
Мне нужен одинаковый фильтр для двух контроллеров. Что-то мне подсказывает что должно быть решение, чтобы не дублировать код. Подскажи анон.
#405 #1085574
>>1085385
Вынеси метод в парку concerns.
#406 #1086504
>>1085574
Сдохни, тварь!

>>1085385
Точнее пиши, какой фильтр?
#407 #1086592
>>1086504
Чому ты такой злой? Почему мой ответ неверный?
#408 #1086648
У меня есть model A has many model B, model B belongs to A.
Для каждой из моделей есть контроллер. В контроллере А в встречается действие которое логичнее было бы вынести в контроллер B. Т.е. я хотел бы из контроллера А вызывать метод, который бы хранился в контроллере B. Это возможно?
#409 #1086699
>>1086648
Возможно. Контроллер инкапсулируется в класс, стало быть напиши что-то Controller1 cnt1= new Controller1;
#410 #1086720
Опять же есть model A has many model B, model B belongs to A.
У модели B есть файл прикрепленный с помощью paperclip. Теоретически у разных экземпляров модели этот файл может быть одинаковым. И тогда удалив один экзмепляр модели, в других экземплярах этот же файл становится недоступен, так как удаляется сам файл с диска. Как этого избежать?
#411 #1086726
>>1086720
вопрос снимается, я нашел
#412 #1087010
>>1086648
ActiveSupport::Concern
#413 #1087011
Правдивая статистика о зарплатах и вакансиях:
https://hype.codes/ruby-rails-developer-salary-russia-october-2017
Что бы там ни пиздели про нормальные зарплаты у рубистов, правда в том, что 40% работают за 60 тыр., и еще 27% - за 100 тыр. Т.е. 67% рубистов, работающих в РФ, живут за чертой бедности.
#414 #1087029
>>1087011
Такова участь людей, пишущих на скриптоговне.
Есть сиартап перерастает в проект, то все нахуй с рубец переписывается на божественную джаву/задротоплюсы с шарповой оберткой.
#415 #1087058
>>1086592
Извини, анон. Я сейчас работаю в такой параше, где была эпидемия концернов головного мозга и проект натурально невозможно поддерживать, потому что там такая КОНТЕКСТНАЯ ЗАВИСИМОСТЬ, что пиздец просто.

>>1086592
>>1087010
Вообще с концернами нужно работать очень аккуратно. Выделение какой-то логики в концерн - это архитектурное решение, гораздо более серьезное чем решение добавить еще один класс. Выделяемый функционал должен быть хорошо отсепарирован, не зависеть от контекста, и выделение должно быть концептуальным, исходя из предметной области (например, Enumerable в руби), а не техническим (как у анона какой-то фильтр два раза встречается или как некоторые долбоебы модели "сокращают" унося валидации в концерн).
#416 #1087090
>>1087058
приведи пример страшной контекстной зависимости.
#417 #1087358
>>1086699
Я нуб и нихуя не понял, но почитаю про это на досуге
#418 #1087509
В модели есть метод self.do_huynya
Я его вызываю из контроллера Model.do_huynya
Можно ли сделать ему доступными переменные кнтролера не передавая их в него как параметры?
#419 #1087521
>>1087509
И еще один вопрос. Опять же model A has many model B, model B belongs to A. У модели B прикрепленный файл.
Я прикрепляю невалидный файл.
Запихиваю ModelA.modelsb << невалидная хуита. И пытаюсь сохранить. Он не сохраняет. С одной стороны все логично. Но я думал, что это происходит из-за наличия строчки validates_associated :modelsB, оказалось же, что эта строчка не при чем. Что тогда делает validates_associated?
#420 #1087529
>>1079097 (OP)

Всем привет!

Хочу писать на Ruby приложения для Android
.

Есть ли для этого возможность без глючных гемов и т.п., чтобы я просто в Rubymine или другом редакторе захуярил код, а потом сделал apk и протестил на своём телефоне?

Вопросы настолько простые, потому что я нуб в программировании, просто есть идеи приложений, которые я хочу сделать.

Если ruboto не работает, то что использовать вместо него?
#421 #1087614
>>1087529
мертвая тема, на ruby только веб - 90% Rails, 10%-всякие другие веб-фреймворки и поделия. Можешь попробовать чисто по фану, но смысла в этом никакого нет.
#422 #1087626
>>1087509
Зачем такой ерундой заниматься? Контроллер и модель являются классами. Классы не должны протекать друг в друга, иначе получится нетестируемая, неподдерживаемая лапша. То, что скаффолд генерирует к модели одноименный контроллер - это просто для удобства. Они ничего не должны друг про друга знать и никак друг к другу не относятся.
#423 #1087659
>>1087626
Смотри. У меня есть модель и контроллер Article. Есть модель и контроллер Picture. У Picture есть файл. В нескольких экшенах контроллера Article у меня происходит некоторое действие, которое
1. Хотелось бы сделать каким-то отдельным методом, а не повторять несколько раз
2. Оно по сути относится к Picture. Я могу его сделать например приватным методом Articles контроллера. Все будет прекрасно работать, но меня старший разработчик уверяет, что это некошерно совсем-совсем. Ок, я взял и вынес это в модель. Но тогда, мне надо вызывать этот метод с параметрами. Этот же разработчик посмотрел и сказал, что в принципе разместить этот метод в модели возможно. Но вызывать с параметрами это тоже пищдец как некошерно. янихуянепонимаю
#424 #1087666
>>1087659
еще проще: в Articles контроллере при создании и обновлении статей должен быть код, который добавляет картинки в статью. Где ему место и почему? А то я совсем запутался.
#425 #1087834
>>1087659

>вызывать с параметрами это тоже пищдец как некошерно


Почему так решил? В экшенах контроллера не используют параметры, а в остальных местах очень даже ок. Это же галимое ruby всего лишь.
class ArticlesController
def update
@article = Article.find(params[:id])
success = PictureUploader.call(@article, params[:attachments])
if success
head 200
else
head 422
end
end

def create
@article = Article.find(params[:id])
success = PictureUploader.call(@article, params[:attachments])
if success
render json: @article.as_json, status: :ok
else
render json: @article.errors, status: :unprocessable_entity
end
end
end

А этот самый PictureUploader размещаешь в любой папке из autoload path, чаще всего кидают в app/services. Это и будет код, который будет использоваться хоть несколькими контроллерами, хоть еще как. А можно пока и не выносить в отдельный класс, а просто оставить в одной из моделей.
@article = Article.find(params[:id])
@article.add_pictures(params[:attachments])

class Article < ActiveRecord::Base
def add_pictures(attachments)
pictures.concat(attachments)
end
end
#425 #1087834
>>1087659

>вызывать с параметрами это тоже пищдец как некошерно


Почему так решил? В экшенах контроллера не используют параметры, а в остальных местах очень даже ок. Это же галимое ruby всего лишь.
class ArticlesController
def update
@article = Article.find(params[:id])
success = PictureUploader.call(@article, params[:attachments])
if success
head 200
else
head 422
end
end

def create
@article = Article.find(params[:id])
success = PictureUploader.call(@article, params[:attachments])
if success
render json: @article.as_json, status: :ok
else
render json: @article.errors, status: :unprocessable_entity
end
end
end

А этот самый PictureUploader размещаешь в любой папке из autoload path, чаще всего кидают в app/services. Это и будет код, который будет использоваться хоть несколькими контроллерами, хоть еще как. А можно пока и не выносить в отдельный класс, а просто оставить в одной из моделей.
@article = Article.find(params[:id])
@article.add_pictures(params[:attachments])

class Article < ActiveRecord::Base
def add_pictures(attachments)
pictures.concat(attachments)
end
end
#426 #1087844
>>1087834
Бро, а я могу этот пикче аплоадер тупо сделать приватным методом контроллера? В этом какого-то серьезного зашквара не будет?
#427 #1087846
>>1087844
Я изначально сделал тупо приватным методом контроллера. Мне по месту его размещения проверяющие замечания не сделали, но старший разраб сказал, что пиздец зашквар и надо вынести. Я вынес в модель, точно так как у тебя с параметрами, но тот же старший сказал мне, что это блядь зашквар не меньший. Я думаю положить на него хуй, оставить приватным методом контроллера и не ебать себе мозг
#428 #1087850
>>1087846
Пускай тогда старшак конкретно скажет, куда его воткнуть. А то туда нельзя, сюда нельзя, а как именно надо, не говорит. Он может угорает просто? Да и вообще лучше просить у него, чтобы он объяснял, почему считает то или иное зашкваром, а то так чему научишься - просто повторяя его прихоти, но не понимая смысла.
#429 #1087876
>>1087850
Он вообще какой-то странный. Он почти ничего не говорит прямо. То ли религия не позволяет, то ли еще что. Я думаю, что раз проверяющие не приебались то и не надо это править.
Он как-то упоминал, что разместить это в модели возможно. Но бляд как я без параметров буду это вызывать из модели???
#430 #1087930
Вопросы от самых маленьких: мне нужнео получить хеш, но один из ключей должен быть в наличии только при условии. Как записать? Все время ошибку выдает. Пробую что-то вроде
{a: 1, b:2, c:3 if x>y}
#431 #1087946
И последний нубский вопрос. Все тот же Articles и Pictures. Я бы хотел просто передать в update_attributes хэш, вида {text: 'sometext', title:'sometitle', pictures: 'some pictures'}. Но... нужно сделать так, чтобы существующие pictures(если есть) не перезаписывались, а добавлялись. Это возможно?
#432 #1087975
>>1087946
Кажется я совсем тупой. Не прошло и полгода, но дошло в делать в хеше не "some pictures", а "current_pictures"+"some_pictures"
#433 #1087980
Всплыл еще один вопрос. Записал что-то в @article.pictures. А теперь беру и делаю update_attributes, записывая новые пикчи вместо старых. Старые что, автоматически удаляются? Если да, то хорошо. Вроде как Picture.all.count говорит о том, что лишее удаляется, хотя мне интуитивно кажется, что не должны удаляться
#434 #1088017
Так, анон, забудь про всю хуйню, которую я спрашивал выше. Все свелось к одному вопросу. У меня есть мой хэш my_huynya. В нем три поля, в первых двух- текст, в третьем- массив. Я хочу сделать что-то типа @article.update_attributes(my_huynya), но первые два поля должны сработать как есть, просто обновиться, а третье, которое массив- должно не обновить, а добавить к уже сущсетвующему. Как это сделать наиболее коротко, четко и деркзо?
#435 #1089126
Посоны, какая-то херня с Elasticsearch, помогите. Вроде все работало, но потом по некоторым причинам пришлось сгенерировать новое приложение и в него переносить код из существующего. Пустая база. Создаю три объекта. Начинаю искать. По любым полям корректно находит любой объект. Добавляю четвертый. Начинаю искать и бац, один объект(не тот, что попал в базу последним) по одному полю не находится, хотя по другому- без проблем. С добавлением новых объектов все больше и больше тех, которые не находятся. Что это может быть?
#436 #1089134
>>1089126
Кажется нашел. Надо было новое имя индекса задать.
#437 #1089253
>>1089126

> Elasticsearch


А че эластик на руби переписали? Офигеть
#438 #1089616
Такой вопрос: мне сказали, что мое тестовое говноприложение не соответсвует CRUD. Посмотрел, понял, что для одной из моделе вместо стандартного update я использую свой экшн. Если по нажатию кнопки у меня управление пойдет в экшн update, минуя экшен edit(судя по всему он мне тут нах не нужен, мне не нужно редактировать текстовые поля, мне надо поле boolean менять с одного занчения на другое) не будет ли это опять несоответствием CRUD?
#439 #1089770
>>1089616
не будет. Но про нарушение CRUD смешно конечно - им надо проверить, что соискатель умеет в команду rails g scaffold?
#440 #1090017
>>1089770
Я скаффолдом не пользовался. Я вручную сгенерировал нужные мне файлы с нудными экшенами. А этот экшн, который не вписался в CRUD, я создавал сам, руками. И я его сделал не стандартным не потому, что я не знаю как выглядят стандартные, а потому-что до меня сначала не дошло, что он делает ровно то, же что и обычный edit, как только намекнули про CRUD, то сразу понял и исправил.
#441 #1090018
>>1090017
..."этот экшн", забыл сказать, что нашел в чем ошибка, но ты уже понял из моего предыдущего сообщения
#443 #1091100
Ой, а может кто чуть подфиксить игруху https://github.com/yhara/down ? Там через минуту афк включается бот, так вот хочется, чтобы он включался только по нажатию какой-нибудь клавиши, и чтобы его результаты в топ-лист записывались ускорю читэнжином в 100 раз и гляну, сколько за день наберёт
#444 #1091120
Анон, подскажи нубу. Есть приложение, пусть это будет блог. Если сделать МНОГО записей, то главная страница в первый раз открывается очень долго, несколько минут. Как ускорить процесс?
#445 #1091143
>>1091120
В таких случаях надо показывать код. Скорее всего, ты просто чрезвычайно жопорукий.
#446 #1091147
>>1091143
Index: @list = Article.order_by(created_at: :desc).paginate(:page => params[:page], :per_page => 10)
#447 #1091157
>>1091147
Я так понимаю, что мне надо загружать не все разом, а только то, что запрашивает пользователь. Но что-то я не ебу как это делается. Помоги, анон
#448 #1091256
Есть родительский метод, в котором я хочу инициализировать общие для наследников переменные.
Наследники не видят их. Как пофиксить?
https://pastebin.com/Lc13g6dF
#449 #1091309
Две модели связаны через has many belongs_to. С помощью гема dynamic_form отлично выводятся ошибки родительской модели. Ошибки же дочерней выводятся как-то хуево. Хотя если посмотреть объект ошибок именно дочерних объектов, то там все ок. МОжно ли как-то поправить без танцев с бубном?
#450 #1091486
>>1087930
if x > y
hash[:c] = 4
end
#451 #1091488
>>1091486
or
hash[:c] = 4 if x > y
#452 #1091547
>>1091120
>>1091147
Выручайте
#453 #1091665
>>1091309
Уточняю вопрос.
Есть модель Parent, которая has_many childs. Во время валидации есть ошибки как родительской так и дочерней модели. Как ни делаю, все равно получается, что выводится лишнее. Ошибки полей родительской модели- ок, ошибки из дочерней- ок, но еще выводится из родительской ошибка вида child is invalid... хотя она мне нах не нужна, так как выводятся напрямую из дочерней нужные сообщения. Так как их красиво вывести?
#454 #1092440
>>1091665
Уточняю вопрос, заданный выше:
У меня в базе mongodb есть большая коллекция, несколько миллионов записей.
Запускаю сервер. Первый запрос который требует запроса в эту коллекцию выполняется ОЧЕНЬ долго, минут по 5. Даже если это банальный show. Но все последующие выполняются быстро.
В чем дело?
#455 #1093041
>>1090023
Я Матц-то разжирел!
#456 #1093070
>>1092440

>В чем дело?


«в базе mongodb»
#457 #1093082
>>1093070
И что делать?
#458 #1093088
>>1093082
Снимать штаны и бегать.
#459 #1093450
>>1093088
Так я хочу программистом быть, а не гей-шлюхой
#460 #1093472
>>1093450

Стандартный совет: использовать индексы, и посмотри, что там гугл пишет про "MondoDB First query is slow".
#461 #1093548
>>1093472
индексы есть, гугл пока не помогает
Снимок экрана 2017-11-17 в 21.43.44
123 Кб, 738x647
#462 #1093686
Бесплатные выходные в Code School!!!

Т.е., бесплатно можно потыкать и пройти любые из их курсов (сколько успеете). Возможно вы помните эту компанию по курсам Rails for Zombies. Обычно курсы небольшие — на час-полтора. По сути дела курс — несколько уроков (уровней), состоящих из теории (видео + слайды) и практики (решение задач прямо в браузере). Уровень тоже разный. По руби и рельсам курсы начинались где-то на самых основах языка и фреймворка, заканчивались где-то на метапрограммировании и rails-API, rails patterns.

Ознакомиться со списком курсов:

https://www.codeschool.com/courses

Курсы, на которых написано FREE, являются бесплатными и в любое другое время.

Как видите, много курсов по JS, есть пара курсов по всяким модным штукам типа Elixir и Go.

​​How long does Free Weekend last?

Free Weekend starts on Friday, November 17, at 10 a.m. and ends on Sunday, November 19, at 11:59 p.m. in Eastern Standard Time (UTC-5). It's a 61 hours long weekend so you should have enough time to learn about your favorite technologies, but remember to take a nap once in a while.

(пятница 17 ноября 18:00 по Москве — понедельник 20 ноября 8:00 по Москве)

На этой страницу нужно нажать кнопку «Create a free account to get access» (даже если у вас есть аккаунт) — будет написано что-то в духе «You're in!»

https://www.codeschool.com/free-weekend
#463 #1093804
>>1093548
Возможно ты на бесплатном хероку а он первый запрос делает медленно
#464 #1095059
can :access, :ws_return_and_transfer_document if user.rights.include?('ws_return_and_transfer_document')

что происходит в этой строчке? что такое access и ws_return_and_transfer_document? Это экшены, или что это такое?
#466 #1095266
>>1095151
Я это видел. Но нихуя понятнее не стало.
По идее первыйм аргементом должен идти экшн, а вторым объект. Я нигде не могу найти экшн acceess, но ок, может быть он есть. А вот название второго аргемента ну вообще никак не похоже на объект...
#467 #1095706
>>1029529 (OP)
помогите мне пожалуйста, читаю Ruby on Rails Tutorial Хартла. Там нужно установить git и heroku. Так вот, у меня такая проблема
у меня windows 7, и когда я пишу в командной строке windows "heroku create" у меня вроде как создаётся приложение, но выскакивает ошибка "ENOENT: spawn git ENOENT", и дальше когда я пишу "git push heroku master" в командной строке windows у меня выдаёт ошибку что git не является внутренней командой, но даже когда я в path прописываю путь до git, у меня не работает ничего, то есть на сайте heroku создаётся эта папка приложения, но отправить уже существующие файлы я не могу через командную строку windows, между тем когда я в bit bash пишу "heroku create" теперь уже git не знает про heroku. Эти две программы просто не знают друг про друга, и соответственно у меня не получается запустить приложение на heroku. Подскажите пожалуйста, как решить эту программу.
#468 #1095725
>>1095706

На скриншоте bash, а не командная строка Windows (cmd).

Попробуй набрать cmd /c heroky.cmd create
#469 #1095753
>>1095725
спасибо огромное , заработало. То есть чтобы в windows работать в heroku(не обязательно create) через bash нужно всегда сначала писать cmd /c heroku.cmd?
#470 #1095972
>>1095753
Правильный вывод скорее такой - windows не очень-то подходит для разработки на чем-то, кроме .NET
1945016
20 Кб, 400x400
#471 #1096361
Нужна помощь с dry-rb. Конкретно с тем, как правильно работать с dry-transactions.

Вопрос на конкретном примере:
- Есть чистая модель Payment, без валидаций и колбеков.
- Валидации вынесены в форму.
- Есть операция CreatePayment, в нее передается результат формы.
Дальше начинается операция, состоящая из нескольких действий: создаем запись в БД, создаем дочерние записи (проводки, например), обновляем счетчики, обновляем статистику, ставим джобы, шлем уведомления, пишем в лог. Часть операций нужно делать внутри СУБД-транзакции (создание, дочерние записи, счетчики, стата).
То есть по сути это колбеки before_create, after_save, after_commit и т.п.
И плюс ко всему - допустим в зависимости от контекста эти колбеки разные (например, когда делаем из админки, то не шлем уведомления, а в случае импорта не логируем. Ну условно.)

Вопрос: как должна выглядеть такая операция?
Как ее бить на степы? Как оборачивать в субд-транзакцию часть степов? Как менять состав операций в зависимости от контекста?
inb4: делать различные оперейшены. Да, может быть. Но предположим такой момент, что набор степов идентичный, а отличается только состав "колбеков" и то не всегда и не сильно.
#472 #1098469
>>1029529 (OP)
помогите мне пожалуйста
я создаю в одной папке 2 проекта, блог(blog) и плагин(wellspring), в блоге(blog) в gemfile прописываю название моего плагина и путь к нему, то есть gem 'wellspring', path: '../wellspring/', когда я пишу "bundle install" у меня выдаёт ошибку что-то вроде:
"cannot load such file... Does it try to require a relative path? That's been removed in Ruby 1.9. Bundler cannot continue."
В общем нельзя так писать в gemfile путь "../wellspring".
Объясните пожалуйста, как мне написать путь к этому плагину чтобы он установился?
#473 #1098522
>>1098469
ну помогите пожалуйста
в командной строке написано, что в файле моего gemspec не работает 4 строка, то есть require"wellspring/version", что-то про относительный путь
но я не знаю, почему и как исправить путь к этому файлу так, чтобы оно подключилось. Подскажите пожалуйста, как поправить.
Может мне нужно написать в первой строке что-нибудь другое, какой-то другой путь?
#474 #1098567
>>1029529 (OP)
Где почитать про экосистему Руби? Чтобы понять какие тулзы сейчас используют, а какие подходы уже устарели. Знаю что есть RVM, Rack, - вроде их всегда и везде юзают. Какие еще тулзы?
#475 #1098747
<%= form_tag "/common/reports/#{report_id}.js", :format => :js, remote: true, class: 'form-horizontal', id: "#{report_id}_form" do%>
Эта форма работает, но...
1. Я не понимаю откуда берется *.js, такого файла нет, точнее есть но он не js
2. В экшене, куда попадают данные этой формы, есть respond_to для js и docx. Как сделать так, чтобы управление попадало в docx?
#476 #1099016
>>1098522
ну неужели никто не знает?
#477 #1099076
>>1099016

Попробуй в 4 строчке твоего gemspec'a прописать абсолютный путь:

> require File.join(File.expand_path("../lib", __FILE__), "wellspring", "version")

#478 #1100524
Есть API, во вьюхах есть файл с раширением json.jbuilder и там есть например такая строчка
json.comment decision.comment

что тут вообще происходит? В ответ на запрос отдается json-объект, в который в своейство comment записывается результат выполнения decision.comment?
#479 #1101882
Народ, последний месяц 2к17
Rails API онли апликейшены и микросервисы.
есть гуру этого дела? кто осветит темку?
#480 #1101885
>>1101882
Есть на английском языке http://www.r-5.org/books/computers/all/ книги Pragmatic Programmers.
Освящать нечего, вакансий в этой стране — с гулькин хер.
#481 #1101889
>>1101885
thx
у нас сейчас жуткий дефицит на рельсовиков (внезапно оказалось) и именно на бэкенд
вот думаю вкатится
2,9 Мб, 257x388
#482 #1102870
Рельсаны, нужно изящное решение следующей задачи. Изящное, — скажем, гем небольшой или встроенный, может, какой-то метод, в общем, чтобы кодовую базу это не нагрузило.

Имеется строка. Она может содержать как русские, так и английские символы. Мне нужно, чтобы решение сделало так, что английские буквы, имеющие такой же аналог на русском заменятся русскими буквами.

Другими словами, буквы, допустим, «o», «a», «c», «e», «p» из английского алфавита заменятся, а буквы «q», «b», «v», «h» останутся нетронутыми. Был опыт у кого? Да-да, еще раз, мне нужно обернутое в гем решение, я знаю про ascii таблицу или как она там называется, по которой я мог бы каждый символ проверить.

Заранее спасибо, анон! И да, если то, что мне нужно, гуглится, то скажите каким именно запросом.
#483 #1102946
>>1102870
Есть на пыхапэ, https://pastebin.com/xGanVr8c
#484 #1102954
>>1102946
Транслит полностью и в рельсах есть, а мне бы только отдельные буквы. И да, если помимо английского будут и другие локали, то вообще заебись.
#485 #1102999
>>1029529 (OP)
Хотел писать на руби, слышал много хвалебных отзывов. Потом понял что в руби все какое то неправильное. ФВП неправильные, в JS с этим лучше. Объекты первого класса какие то неправильные, чтобы передавать их в функции нужны преобразования. Короче разочарование. Почему так, зачем все это?
#486 #1103012
>>1102999

>Почему так, зачем все это?


Таков автор языка, Мацушита. Он даже высказывался против функций внутри других функций, вот как-то так:
https://stackoverflow.com/questions/4864191/
42 Кб, 604x427
#487 #1103059
Собираю компьютер, встал выбор между i7 и рязанями. Для погромирования что будет лучше (у меня рубимайн, браузеры, плеер, GUI для гита и просмотра бд плюс какая-нибудь компиляция изредка)?

Склоняюсь к рязани, как более дешевому варианту, но боюсь прогадать, ведь встройки в ней нет, как и видеокарты у меня, плюс не знаю, нужен ли для рубей/рельс/программирования синглкор перформанс.

Что скажете вообще? На тредриппер и i9 бюджета нет.
#488 #1103084
>>1102999

>Почему так, зачем все это?



Пробовал одевать трусы через голову. Оказалось неудобно. Разочаровался в трусах, тряпка оказалась удобнее. Почему так, зачем вообще нужны трусы?
analnaya-probka-s-rubinom
17 Кб, 400x350
#489 #1103203
Господа рубисты. Волею судьбы мне нужно познать руби, и вот читаю я эту вашу книгу из шапки programming ruby the pragmatic programmer guide и в разделе Virtual Attributes мне попадается следующий код https://ideone.com/nXEDQn

Так вот вопрос. Каким образом в этом коде

def price_in_cents
Integer price*100+0.5
end


переменная price ссылается на инстансную переменную @price? Я так понимаю это из-за attr_accessor? но ведь если присвоить в каком-то методе, например, price = 333, это не изменит инстансную переменную @price. WTF?
#490 #1103205
>>1103203
либо же это связано с какой-нибудь хитрой реализацией области видимости?
f0c239e3e16c50f1c230a3385fd31e57
85 Кб, 800x800
#491 #1103222
>>1103205
>>1103203
я понял почему! всем спасибо
#492 #1103223
>>1103222

Пожалуйста, обращайся ещё.
#493 #1103264
>>1103012
Пичалька.
#494 #1103696
>>1103203
>>1103205
attr_accesor - объявляет геттер и сеттер для одноименной @переменной. Есть так же attr_reader и attr_writer для геттера и сеттера по отдельности.
Одна из бесячих фич рубей, потому что куча долбоебов считает долгом объявить каждой переменной аттр_ридер, им кто-то сказал так делать.
#495 #1103881
>>1103696
Тебе жалко штоле?
#496 #1103907
>>1103696

Именно так и делаю, когда не наследую класс от структуры trollface.
#497 #1104084
>>1103696
И хорошо, что сказал, так никакой другой долбоёб например, ты не сможет где-нибудь посередине эту хуету перезаписать.
#498 #1104093
>>1104084

Таки сможет, интерпретатору похуй на рефлексию.

Кроме обмазывания паттернами, аргумент за аксессоры: рубимайн (через жопу) умеет в аннотацию типов, ну и ещё - доки - это типа круто.
#499 #1104098
>>1104093
Как он сможет? Я имею в виду что-то типа такого:

class A

attr_reader :do_not_write

def initialize
@do_not_write = true
end

def nasty_thing
do_not_write = false # => NoMethodError
@do_not_write = 'fucked up'
end

end
#500 #1104102
>>1104098
А не, NoMethodError не будет, но хотя бы это будет локальная переменная, а не перезапись.
#501 #1104120
>>1104102

В твоем случае NoMethodError будет когда ты попробуешь написать «self.do_not_write = false», чтобы этот код сработал нужно поменять attr_reader на attr_accessor. Если говорить вообще, то перезапись в руби возможно для всего и вся, за исключением констант. На них ругается варнингами.
#502 #1104127
>>1104120
Так в этом и суть. Где-нибудь в дебрях или по тупости можно легко перезаписать собачью инстанс-переменную, а через attr_reader - никак.
#503 #1104138
>>1104127

На этот счет есть довольно простое правило: инициализируй переменные либо через метод инстанса #initialize, либо лениво, в одноименном методе.
#504 #1104157
>>1104138
Правило есть, но не все о нем знают и помнят, когда вокруг пестрят собаки.
#505 #1104213
test
#507 #1104320
>>1104218
Да кому он нахуй нужен.
Тред утонул или удален.
Это копия, сохраненная 19 декабря 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски