Это копия, сохраненная 19 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Принимаются изменения в шапку треда в виде пулл-реквестов:
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.
Покушать принес вам.
https://github.com/arbox/ruby-style-guide
I heard you laek OOP, so we put OOP in your OOP, so you can OOP while you OOP.
>ВНИМАНИЕ ВАЖНЫЙ ВОПРОС:
Друзья, заясните зачем вы в 2к17 году до сих пор изучаете Ruby? Это же мертвый язык. Эту нишу заполнил Python. В руби есть только руби он рельс, у которого уже давно спал хайп и сейчас только идет поддержка легаси стартапов.
Не разумнее ли сразу нырять в Питон?
Удваиваю вопрос.
Если не перекатываться из разработки в МЛ, то менять руби на питон, это как шило на мыло. Если уж менять стек, то на что-нибудь по-лучше scala, elixir/erlang, в крайнем случае на java, если хочется стабильности.
Думаю java скорее ждет судьба cobol, а не delphi.
ващет джаве до сих пор нет вменяемой альтернативы, это передовой промышленный язык.
Полная настоящая мультиплатформенность, скорость как у плюсов, простота и логичность, огромное количество инструментария и библиотек, обратная совместимость.
Менять всё это на немного синтаксического сахарка? Пффф
nohup rails s &
Делай глобальную исталяцию rvm.
Накатывай bundler, пиши для systemd юнит-файл, ну и там типа:
bundle exec rails s
Да не знаю я чё те надо бака-гайдзин урусайный!!!!11
http://blog.topolyan.com/tag/ruby/
Отличие в том, что статьи на русском, а на русском языке довольно мало качественного контента по Ruby или RoR.
какой пиздец
select count(*) from coords where message_id=123
Все запросы по 200, 300 ms
затем хуяки и сразу 1200 ms.
С ЧЕГО НАЧИНАТЬ КОПАТЬ???
не могу понять в чем дело, вручную у меня подзапросы идут в 10ms, rails это делает за 200-500, че бля за хуйня, че за хуйня то, батюшки!!!! Естественно когда там 40 сообщений на странице, для каждого надо подсчитать сколько в нем координатным записей, все это занимает 10 секунд при рендеринге, а то и больше.
с systemd я и приуныл, там что-то навороченное, но видно буду разбираться, я использую rbenv, разобрался с конфигурирование бд(поправил в файле настроек) а еще что-то надо делать с зависимостями всякими js
Ну или системд или докер-шмокер: и там и там надо по локоть лезть в чащи у гущи манов десу.
Ты мужик нау — итс таим ту конфигурять.
Если ты ещё и деньги этим зарабатываешь, так и вообще везунчик.
так-то да, но у меня слишком дохуя разных задач, что бы можно было спокойно разбираться, я делаю надежные системы с высоким риском опиздюлиться если что не так, раньше сидел на системе сервисов, конфигурировал все через services, уровни запуска и т.д., а тут как поднавалали docker systemd. Пока пускаю первое руби приложение в продакшн, уже опиздюливаясь каждый день, но таков путь, что-то новое можно изучить только через боль и слезы.
попробуй подгружать лениво
Я бы тебе помог, но я просто бака-гайдзин любитель потеребить чинко на сочную манко, который только сейчас проходит туториал хартла и параллельно читает совершенный код (но не всерьёз, просто читаю, без претензий на ¨это¨ самое).
всё, решил target: "_blank"
Ничё так спич, мне нравится. Не ожидал такое от рамблера.
Блять, серьёзно?
$bar = (bool) $foo;
Блин из-за твоих аллюзий к хую и пизде не могу думать о программировании, похоже это не моё.
А ведь в случае Foo и Bar у меня могло что-то получиться(((((
ТУТ поткатились сведения, что руби на рельсах стремительно хуячит в безну. Быстрее выпрыгивайте с этого рубинового поезда пока не поздно и пересаживайтесь на другой!
https://thenextweb.com/dd/2017/07/26/ruby-rails-major-coding-bootcamp-ditches-due-waning-interest/#.tnw_DbzSMt3r
Да:-)
С самого начала было понятно, что вся эта ажиотация вокруг руби и рельсов - нездоровая хуйня, типа продукции эппл.
Сам пайтон програмист с 5ю годами опыта, знакомый предложил перекатиться в его фирму и вдохнуть вторую жизнь в их проект на РоР.
Проект - интернет-магазин с CRM и сорт оф 1С-торговля. По зп дает столько же сколько и сейчас платят, но офис в 3х минутах ходьбы в огромном частном доме(Ростов. хуле). Ну и текущая работа достала и до нее 40мин и перспектив никаких.
Просто хочется понять, понравится мне писать на Рельсах или нет. Пока посмотрел доки, глянул пару несложных проектов на гитхабе, впечатление что документация хуже, а сам РоР смесь Питона с ПХП(что не есть плохо, как будто взяли Питон и заточили как пхп под веб).
Есть ли как в ПХП библиотеки под каждый пук или как в Джанге, т.е. похуже.
Как с документацией? Как общее впечатление? Не появляется ли со временем чувства, что делаешь одно и то же?
Иди на rubygems.org, вбивай в поиск любое слово и смотри.
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
как бы ты это сделал?
Что ты понимаешь под статической переменной и почему не используешь сеттеры и геттеры (у тебя код по сути ошибку выдавать должен).
Мужик, давай серьёзнее подходи к кодингу.
Ты нигде не используешь class variable (@@), у тебя там только instance variable (@).
Зачем ты аксессор в методы класса пихаешь, если у тебя нет переменных класса (чего ты видимо не понимаешь).
Зачем ты создаёшь объекты из классов в которых только методы класса и переменные недоступные через аксессоры.
Вообще непонятно, что ты там делаешь, омич.
Блин, персматриваю, что ты делаешь и вот этот Class.new, но всё равно с трудом вдупляю, что именно ты делаешь. Разберись с @ и @@ как минимум.
ошибся, это не 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)
ошибся, это не 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)
>нужно сохранить ссылку на
Воу, вот тут даже не знаю как. может тебе дополнительную переменную использовать, вручную написать акссессоры и геттеры, как рекомендуют на стеке.
Если реализуешь свою задумку кинь сюда код, интересно будет посмотреть.
Зайчик, элита по определению не может быть многочисленной, а элитные треды не могут быть быстрочятиками.
> активности ваших тредов
ОП прошлых тредов куда-то пропал, а остальным немножко похуй, вот и весь секрет.
Тем, что на пхп крутится 80% интернета, а на руби три сайта запилено двумя с половиной калеками. При этом все эти сайты о рельсах.
Это рельсам вашим лопату вручили, чтоб могилу себе копали, а руби - нужна.
мимо jruby-господин
Так что , все пришли к выводу, что Жанга , спринг бут , и Golang это гуд.
А руби он рельсник отправился дальше к себе в картофельную страну , делать стартапы на RoR
https://radio-t.com/p/2017/08/05/podcast-557/Y
Не слушал, но в целом согласен с тем что нинужно.
>Жанга
Жава и голанг - ок за счет типизации, скорости исполнения, многопоточности, но жанга еще более нинужна чем рельсы, как это аргументировали?
Тема холиварная, но интервьюеры хуевые - не смогли раскрыть гостя. От повторения тезисов с их стороны кровь из ушей. Закрыл через пять минут, после очередного 'руби не нужно'.
Ну все правильно, если уж пришел Рельсы свои защищать, ту нужно как то хорошо подготовится и выписать на листок список из киллер фич, чтобы можно было нормально отбиваться. Ясный пень, что Юмпутун и Бубук будут всячески подъябывать гостя и троллить.
Ты послушай выпуск подкаста, который шел где-то год назад. До этого Юмпутун сильно дристал на Golang и говорил , что не нужен этот яп.
После, какой-то Ильюша гофер ворвался на программу и пояснил за Golang.
С тех пор у юмпутуна голанг намба ван язык
Потому что жанга это по сути низкоуровневый кмс, на которой ты можешь очень быстро сделать что нибудь годное
>>1039210
На самом деле забавно, потом себя повёл так: типа приходи ещё гость и вообще ты молодец ему говорит.
Мне кажется умпутун просто хотел похайпить немного (и ему удалось, этот хитрый лис знает своё дело).
А слова Вовика про перл на самом деле можно считать справедливыми. Ну поддерживает же перловые регулярки? Поддерживает.
Можно писать запутанный код? Легко.
С чем можно всерьёз поспорить так это, выводы ксюши и вовика на счёт стайлгайдов — мол сначала дают и потом отбирают выразительные средства, хотя в том же питоне практически сначала существует и дзен и пеп, который по сути стайлгайд.
> Ясный пень, что Юмпутун и Бубук будут всячески подъябывать гостя и троллить.
Я понял, поэтому и выключил. Возможно, конкретно эта часть программы получилась столь радикальной, а в остальном ребята - охуенные спецы, которые рассказывают клевые штуки, тут не знаю.
Но вот так уж получилось, интересную мне часть выпуска они провалили. Поэтому на это
> Ты послушай выпуск подкаста, который шел где-то год назад.
отвечу отказом. Слушать их не интересно. Ну ненужен раби, так ненужен.
Так же как и рельсы, которые в целом всегда были (и остаются) более развитым и популярным решением по сравнению с жангой.
Проблема вообще не в рельсах или джанге. Столько скриптовых язычков в принципе нинужно. Они особо друг от друга ничем не отличаются, при этом вынуждают хранить в голове кучу бесполезной информации, потому что то там, то сям, приходится сталкиваться с каждым из них.
Это говно на раби, это на пхп, тут на питоне, здесь 100500 диалектов лиспа. У каждого языка свои библиотеки, свои особенности, свое окружение - все это надо помнить (а потому использовать, чтобы не забыть), а окружение поддерживать.
Каким бы не был плохим джаваскрипт (а он начиная с ES6 не такой и ужасный) - лучше пусть все интерпритируемое говно пердолят на нем, к чему мы в итоге и идем. Даже со всеми транспайлерами сегрегация все равно не такая огромная получается.
раньше 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('...'))))
})
Heroku
OpenShift
>фатальный недостаток
Лол, ну так напиши сам.
А вообще я посмотрел, и там похоже один гем который создавался для полного цикла работы и позволял создавать docx.
Имхо, хорошая возможность запилить такой гем.
Эх, писечка, у меня та же фигня.
Все, похоронили руби. Мы тут всем тредом бреем бороды и перекатываемся java, писать некогда, еще весь core изучать.
И что же порекомендует изучить благородный дон? Может быть вечно молодой хаскель или вечно живой кобол? Или может быть стоит стать ближе к народу и перейти на js?
Сярп и асп.нет к вашим услугам
Или если хотите ещё словить хайпа, то питон, он на западе как раз разгоняется
Ну это толсто, сударь. Вы бы ещё сказали, что go набирает обороты. Язык топ-10, а работы на нём как не было, так и нет! Вот незадача!
Ну в России и в iot работы нет, а в белых странах она есть
Я сам кодирую на JS и учу ноду, вроде не хипстор. Даже под виндой девелопю, а сервер на виртуалке.
Эликсир, не?
Насчет жс - то тут уже всем приходится, на рынку труда фуллстек подороже будет.
Потому что нет работы. Не понимаю, зачем я несколько лет назад послушал долбоёбов, которые говорили ДА РАБОТЫ ДОХУЯ БАБЛО ДОЛЛАРЫ КАТИСЬ БЫСТРЕЙ!!!1
Эй, бойцы! Вас опять наебали!
Да так вообще-то белые люди и делают.
Месяц вкатывался в руби, щас начал в рейлс. Мне ничего не светит с работой?
Твой рубиновый хайп трейн сошел с рельс
Можешь оставить его в качестве хобби. Вкатывайся в более реальные вещи.
Я недавно тоже был молодой и шутливый. В итоге устраиваюсь джавистом. Руби это здорово, но жрать хочется уже сегодня.
Ржа времен сожрала ваши рельсы
Гем судьбы паутиной и пылью порос
Вот и кончились красные пьесы
А сами тайно изучаем руби, чтобы вкатывальшики не узнали. Им лишь бы хайп, а то что в питухоне невозможно dsl делать, им безразлично - они до такого не допрут.
Ну ты понял - в самом питонокоде - имелось в виду.
Рубя конечно не питон, за два дня не учится, но несколько лет... Я за четыре года в рубях научился писать расширения на Сях, создавать из обычных модулей shared-контексты rspec, специфичные для тестирования каждого уровня абстракции от моделей до интеграции, написал под один проект библиотеку для создания форм-обьектов, интеракторов, туеву хучу рельсовых валидаторов, перехуячил традиционную схему использования pundit в контроллерах, набросал гору примитивов ФП и модели акторов. Сегодня вот захуячил map-reduce чтоб файлы на s3 переименовать под новую схему путей. Выучил es7 и реакт, чтоб не переписывать огромный фронтенд сделал либу для интеграции реактовых компонентов в существующий генерируемый рельсой html. При этом я даже не претендую на какие-то глубокие познания в CS. Парсеров не пишу, о сложности алгоритмов думал в последний раз в школе на олимпиадах, ибо в sql/redis все реализовано, берешь и используешь. Я бы сказал, обычная работа обычного веб-разработчика на непятистраничном проекте. Когда представляю, как бы такой проект писался на js или go с их простынями шаблонного кода вместо средств языковой выразительности, метапрограммирования и нормальной системы типизации, похуй, статической или динамической, начинаю понимать, почему кроме микросервисов на них нихуя не пишут. Кстати у нас есть сервисы на питоне и го, написал и забыл, удобно. Поддерживается все это, и код, и devops тремя людьми всего, при более чем 30 серверах на проекте.
Как-то так работаем, а начинал 4 года назад с raillsturorial. Чё ты там несколько лет в руби учишь непонятно, даже с четвертью этих знаний работа за пару недель находится. Впрочем, типичный /pr, захожу уже чтоб душу отвести и поплакаться, что до сих пор не в Калифорнии живу.
>Эликсир
Был бы хорош, если бы не слабоватая (в сравнение с рубишной) типизация, доставшаяся от эрланговой вм. Под слабой типизацией я имею ввиду, конечно, неявные преобразования типов. А так вроде даже работа есть, на rubyjobs регулярно видел вакансии, когда мониторил.
>Фулстек
Давно уже сказано:
1. либо ты охуенный бекендер и каждый день делаешь нелегкий выбор между консистентностью и масштабируемостью, или, держа в голове десятки узлов sql, mongo, redis, memcached, rabbitmq, микросервисов и туеву хучу бизнес логики, пытаешься понять где нужные данные уже посчитаны и как их извлечь, чтобы хотя бы приблизиться к удовлетворяющему клиентов времени реакции одной части системы на изменение в другой её части в условиях eventual consistency
2. либо пилишь формочки на реакте и однообразные апишки для них на рельсе
3. Либо ноешь на двачах что нет работы
Потому что в условиях стартапа, где 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 норм.
А вот и успешные стараперы подтянулись, которые работу за 10 человек делают и жалуются
>Под слабой типизацией я имею ввиду, конечно, неявные преобразования типов.
Единственное неявное преобразование в эликсире, это Integer -> Float.
В общем пишу плагин для Redmine на рельсах. Суть его в создании дерева задач. В контроллере объявил переменную для поиска проекта с параметром его id. Во вьюшке загружаю массив всех задач (без подзадач) этого проекта. И для каждой задачи с помощью итератора each ищу все подзадачи с помощью root_id. Сортируются они по времени создания, а надо чтобы выглядело: Отец 1
Сын 1
Сын сына )
Сын 2
Отец 2
Сын
....
Как реализовать подобную сортировку, если есть массив с отцами у которых (root_id = id отца, parent_id = nil) и массив детей у которых (root_id = id отца самого первого, parent_id = id задачи от которой наследуется, например для сын сына это сын 1, для сын 1 это отец 1).
Конкретно в твоем случае
>grep -ne "s3:" ../backend/config/secrets.yml
Речь идет о выборе шелла и навыках в смежной профессии devOps'a.
А вим не нужен, потому что я хочу писать код, но не возится месяц с настройкой текстового редактора.
>А вим не нужен, потому что я хочу писать код, но не возится месяц с настройкой текстового редактора.
Понятно, очередной неосилятор. А мне-то показалось, что ты про реальные минусы (конекретно вима) хотел что-то сказать.
А если бы ты хотел код писать, то не вымораживался тут на доске.
> мне-то показалось, что ты про реальные минусы (конекретно вима)
Некогда с очередным дурачком в спецолимпиде участвовать, сорри. Ты подебил!
Слушай ну круто ты психологию применил, типа и согласился со мной и пассивно-агрессивно укусил — аки течная сучка.
>Реальные минусы вима
Приходится пердолится, что бы начать писать код, сказали же
Про неосиляторство можешь не продолжать даже, ещё спроси почему все генту с арчем не устанавливают, каштомизация же. Нужно использовать инструмент, а не бороться с ним
>Если бы хотел писать код, то не сидел бы тут
Я че, должен это все время делать без права заходить в программач?
Я и без конфига и плагинов писал, ничего сложного.
А плагины поставил и конфиг написал, вместо того чтобы на бордах сидеть.
Неосилятор.
Ну мне то не надо ничего писать, что бы ide работало, и все удобства есть, пока ты пердолишься, люди код пишут
>и все удобства есть, пока ты пердолишься, люди код пишут
Нет, как раз таки написал один раз конфиг и больше не возвращаюсь к нему. Всё работает абсолютно предсказуемо.
Наверное ты сразу пишешь код конечно, ну как сразу после того как система отвиснет после очередного индексирования проекта, ой вот уже и ноут заряжать надо или просто остудить в морозилке)))
>очередного индексирования проекта
Использование вим ускоряет работу файловой системы?
>ноут
Нормальные люди работает за десктопом с полноценным процессоров, а не мобильной затычкой с урезанными частотами и за 2-3 мониторами 24+ дюймов, а не 15 дюймовой щелью.
>Нормальные люди
Они как раз используют ноутбуки, чтобы всегда иметь возможность кодить.
Будто блин что-то мешает подключить ноут к двум мониторам — ты к нам из 15 века пишешь, крестьянин? Все уже давно используют либо доки либо usb-c на макбуках для организации работы. Приходишь на работу и подключаешь одним кабелем (или ставишь синкпад на док) и работаешь.
На самом деле я не против десктопов, но IDE и на десктопе будет тормозиьт пока проект возюкает.
>Использование вим ускоряет работу файловой системы?
Вот и прорезались программистские знания — проблема тут не в ФС совсем.
А так конечно ускоряет, ещё волосы шелковистые становятся, а борода более окладистой.
А это традиция такая. Вот в C менеджмент с памятью - это не удобно и пердолинг. Надо динамически и dick'лоративно.
Только пердолинг с памятью ускоряет работу программы, а пердолинг с текстовым редактором нет.
Смешал в кучу системное программирование с прикладным и dsl'ным.
>Нормальные люди
> всегда иметь возможность кодить.
https://www.youtube.com/watch?v=bP0ktrxdHUw
Точно также можно было ответить и на твоё «Нормальные люди», так что не надо тут.
Ну началось, в ход пошло всё: глупенькие видюшки с тытрубы для 12-летних детей, и унылые гротески.
Я тоже так могу:
Ну как же это кодить без 30-ядерного зиона!? У меня в атоме просто курсор не будет нормально двигаться без высаженных под 100% минимиум 6 ядер, и 8 гигабайт слитой оперативки ещё на этапе загрузки редактора. Нормальный человек и в текст-то не сможет вникнуть без массива из 12 мониторов (хотя это для слабаков, нужна парочка другая IMAX-проекторов).
Атом, кстати, говно, хотя и красивое. Мне vscode внезапно нравится, эдакий опенсорсный клон сублайма.
По сабжу. В 2017 не уметь в синхронизацию настроек для редакторов (ide) для рабочих компов - ну не знаю, зашквар какой-то. Ты хоть папочку в дропбоксе создай, мань. Не таскать же железо с собой постоянно.
Спасибо, у меня уже есть папочка на гитхабе.
А таскать ноут с собой дико удобно, можно быстро перемещаться и по своему зданию и по рабочим делам. Не знаю чё ты так вцепился в десктопы, я понимаю если ты был бы 3D-моделлер, фотошопер или видеомейкер — вот где реально нужно постоянно обсчитывать дофига всего и действительно по делу (меши генерить, трансформировать, текстуры ресайзить, эффекты накладывать), а не копошиться в коде проекта как свинья в грязи каждые пять минут да ещё и оправдывать этим покупку дорого хардвера (ты же не компилируешь там даже, а тупо код пишешь, а компилиция вообще на билд-серверах).
>ноутбук, что бы кодить везде
>пердолинг с vim
>илитарность
>называет неосилятором всех, кто хочет работать, а не пердолится
Еще одно подтверждение, что руби используют высокомерные хипсторы
Вот как минимум:
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
>илитарность
Нечего, сказать — обвини оппонента в элитизме, при этом рассуждая про нормальных людей и тех кто может себе позволить очень дорогой десктоп, а кто нет (при этом забывая о ценах на лаптопы).
> руби используют высокомерные хипсторы
Я бы не был столь категоричен, он же признался в шкомпилировании; попахивает залетным растаманом, но это не точно.
Ты студентик что ли? Хороший пк можно купить через пол года, после начала работы
Стаж какой у тебя?
Руби и раст? Ну это как то слишком прогрессивно
>Конкретно в твоем случае
Ты другому человеку ответил, ну да ладно.
>>1045764
>Звучит как работа сисадмина.
>>1045774
>grep -ne "s3:" ../backend/config/secrets.yml
>Речь идет о выборе шелла и навыках в смежной профессии devOps'a.
Другие члены моей команды, пожалуй, девопсы, да. Я иногда правлю шеф-конфигурацию, мб пару строк в шаблоне конфига, не более. В остальном я с девопс не имею ничего общего.
Вообще, мб мой пример не очень удачный был. Вим крут не тем, что в консольке работает, а механизмами работы с текстом офк. Всякие Vim-mode в IDE и текстовых редакторах обычно сильно уступают ему в возможностях. Руби-среда хороша автоматизацией. Многие функции IDE берут на себя консольные тулзы. Можно подключить к ним графический вывод. Весь рабочий стол становится IDE. Короче, ощущение нехватки функции в редакторе проходит после написания rake-задачи, ее заменяющей. А вот ощущение от нехватки фич Вима не проходит, пока не вернёшься к виму.
>Всякие Vim-mode в IDE и текстовых редакторах обычно сильно уступают ему в возможностях
В каких например? vim-mode в Idea вполне неплох.
Функции IDE, впрочем, действительно нинужны по большей части. Пользовался исключительно из-за навигации (find symbol, go to definition) и автокомплита, качественной реализации которых нет ни в одном редакторе.
>Как реализовать подобную сортировку, если есть массив с отцами у которых (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
Замени последнюю строку, если сравниваешь не по имени, а как-то иначе
А, у тебя вложенность больше одного бывает? Почему бы тебе тогда не пройтись по дереву рекурсивно, на каждом шаге итерации добавляя задачу в конец массива? Создай класс, в инициализаторе создай пустой массив, объяви в нем функцию рекурсивного обхода, принимающую корень дерева как аргумент.
Согласен, два неявных преобразования, но второе объясняется тем, что в эрланге все иммутабельно, а для иммутабульных мапов тебе нужна возможность сравнивать элементы в ней (элементы в дереве).
Есть app на rails 4.2 и mountable engine. В основной апликухе поднят action cable, всё прекрасно работает - каналы регаются, бродкасты летают.
Вот в упор не пойму, как зарегать новый канал из engine. Подскажите пожалуйста, c меня как обычно.
>можно быстро перемещаться и по своему зданию и по рабочим делам
Можно, конечно, но ты уверен, что разработчиком работаешь, если тебе постоянно приходится куда-то перемещаться?
>ты же не компилируешь там даже, а тупо код пишешь, а компилиция вообще на билд-серверах
Нет, я запускаю/компилирую код у себя на машине в большинстве случаев.
>оправдывать этим покупку дорого хардвера
Хороший десктоп стоит не дороже макбука.
Я не отрицаю нужность ноутбуков, я говорю, что работать (не бегать по зданию или еще куда-то) за десктопом удобнее.
>Нет, я запускаю/компилирую код у себя на машине в большинстве случаев.
Ты там хеллоу-ворлд девелопишь?
>Я не отрицаю нужность ноутбуков, я говорю, что работать (не бегать по зданию или еще куда-то) за десктопом удобнее.
Удобнее работать так как лично человеку удобнее. Тем более если есть возможность ходить по зданию, а не сидеть на привязи в офисе/опенспейсе. Только не говори про нормальные компании пожалуйста где у каждого разработчика свой кабинет, в котором кроме него только шлюшка которая ему болт под столом полирует.
>ходить по зданию
У вас там модное большое здание как у Яндекса? Можно прилечь в гамаке, посидеть на здоровенных больших подушках (забыл как называется), пойти в кафетерий? Тогда не совсем понятно, почему вам рабочие ноуты не выдают, деньги-то есть. Если денег нет, то ходить можно разве что в соседний кубикл, как правило.
Ну так стоило для этого отдельный метод выделить, как #hash и #eql? в руби
>Можно прилечь в гамаке, посидеть на здоровенных больших подушках
Вообще охренеть. А у нас начальник даст пизды, если заснешь на рабочем месте в опенспейсе.
Москали совсем зажрались, я погляжу.
Я фрилансер-нищук, просто предположил на основе случайных постов в интернете. Впрочем, последние два киевских бодишопа, в которых работали знакомые, 5 лет назад выглядили примерно так, как я описал.
>начальник даст пизды, если заснешь на рабочем месте в опенспейсе
Очень зря, короткий дневной сон сильно повышает продуктивность.
>def method
> method1
> method2
> method3
> method4
>end
То есть, просто ряд других методов. Внутри каждого из них может быть либо вызов стороннего API, либо where, либо update_attribute(), либо ещё какая шняга, часто "деструктивная".
Сейчас спека такая:
https://gist.github.com/anonymous/b7a96016e31d5674cf43dffcf15ca35b
Но сеньер сказал, что это хуйня, надо переделывать. Вопрос - каким образом?
method1,.., для них есть спеки? если нет, то зачем ты проверяешь вызываются другие методы или нет?
если этот метод ничего больше не делает, кроме вызова публичных методов, то что еще тестировать? можешь порядок вызовов еще проверить.
Ну метод у тебя типичный контроллер - вызывает много сложной, но разной логики, друг с другом мало связанной. Про allow to receive забудь сразу, нечего к реализации привязываться. Пиши обычные интеграционные тесты.
> Six confusing features in Ruby
> ... Just use == 0, it is TOTALLY readable, and NOT ugly at all. ...
на rubyflow учат как код писать
А в офис чего не пойдёте? Ааа, так некуда идти. Я и забыл.
Сегодня увидел вакансию рубиста в своей мухосрани. На радостях побежал откликаться, а там всё прозаично оказалось. Очередной веб-раб за еду, БРАТАНАМИ и командным духом. Вы как вообще рубями зарабатываете то? Для меня это уже сродни маструбации. Толку нету, выбросить жалко.
Мимохейтер мимикрировал? Я джва года ищу в этом треде людей на пет-проджект, а тут все кто более-менее че-то научился делать указываются работать, в итоге тут одни новички сидят.
укатываются
Что за pet-project у тебя? Что-то интересное?
Никогда не слышал, чтобы домашнего любимца делили на несколько человек
>Я джва года ищу в этом треде людей на пет-проджект
А я год работу. В моей мухосрани о рубях не знают в принципе. А если и знают, то платят 40-50к с тестовыми вроде "написать гем для платёжной системы".
Я не знаю, где вы тут все работу находите. Это нереально блядь просто, я уже заебался нахуй.
А чем ты руководствовался при выборе языка? Просто понравился? А BrainFuck не пробовал изучать и работу искать?
Не, я на чикен пишу в свободное время.
Чем руководствовался? Ну понравился, очевидно же. Есть гемы, всё в языке является объектами. Плюс есть рельсы. Но, по сути, из-за безработности так и остаётся языком для пет-проджектов. На работу всем нужны миддлы и помидоры. Просился джуном, не взяли нигде ПОК ПОК ПОК КАДРОВЫЙ ГОЛОД, РАБОТАТЬ НЕКОМУ, КАДРЫ НУЖНЫ ГОТОВЫ БЕСПЛАТНО УЧИТЬ КУКАКРЕЕЕЕЕЕКУУУУУ!
Выпилиться, чтобы потом родиться в мегаполисе?
Можешь попробовать потеребить питуна, похож на руби, есть работа в разных сферах и больше 1 фреймворка
Ну если ты собираешься гнить в россиюшке, то да, это хороший выбор
Ну как обычно, все аргументы свелись к ДС. Рубисты по дефолту в ДС рождаются что ли? А то у вас тут я смотрю на третий день работу находят после вката все, один я как лох сижу.
Ты серьёзно? Он тоже труп. Джанга никому не нужна. Даже рельсы выигрышней смотрятся. Максимум, что я видел в продакшене — всякие костыли по типу jython.
А теперь сравниваешь вакансии на питоне и рельсах (ведь для другого руби и не нужен) и понимаешь кто на самом деле умер
Я так и думал, что никого он не ищет на самом деле
> 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/
И что? У руби судя по твоим графикам всё нормально. Работа с переменным успехом прибавляется.
Ну и ты обосрался, указав британию. Всё рубийное смуззи в штатах, на американских проектах. Европа довольно старпёрная. У дойч банка вон джава 6 до сих пор.
А чего это питон с начала 15-ого года так резко попер? Неужели чисто из-за asyncio?
Точно! Там денег ещё больше!
Ты удивишься, лол
> старшие поколение выбирают Golang!
https://youtube.com/watch?v=_Z_k5G73ttk
Променяла хайповое говно на хайповую мочу. Молодец. В говне хайп умер, в моче — лишь вопрос времени.
>А я год работу. В моей мухосрани о рубях не знают в принципе. А если и знают, то платят 40-50к с тестовыми вроде "написать гем для платёжной системы".
Я не знаю, где вы тут все работу находите. Это нереально блядь просто, я уже заебался нахуй.
Внезапно, в твоей мухосрани и на питоне работы нет, а на JS будет что-то вроде клепать анимации на jQuery для говно-cms на битриксе.
Ты за год не догадался пойти на удалёнку, где изи можно устроиться на 1к баксов в месяц. Я работу на 2к баксов нашёл за неделю. Палю годноту, только тссс, никому не показывай: http://rubyjobs.ru/
>Это вкусовщина. В руби вообще нету булева типа, между прочим.
Вкусовщина, что разве это не вкусовщина, которая ничего не стоит (написать !!result), но даёт приятный опыт работы в консоли, когда foo.bar? не возвращает огромный массив на полэкрана. В руби любят самодокументирующийся код, если ты вызвал foo.bar? и получил true, то тебе не надо лезть в документацию и вспоминать, что этот метод значит, ты знаешь, он говорит тебе, что foo - это гарантированно bar.
Видимо, это правило не работает. У Руби никогда, даже в 2011, не было много джун вакансий.
>У Руби никогда, даже в 2011, не было много джун вакансий.
Это как вообще? Все сразу РоР-программистами с двухлетним стажем стали? До 2011 он не нужен был
Внезапно, если ты сеньёр веб-разработчик и изучаешь новую технологию, то ты идёшь на свою первую работу с этой технологией как сеньёр, а не как джун.
>Внезапно, в твоей мухосрани и на питоне работы нет, а на JS будет что-то вроде клепать анимации на jQuery для говно-cms на битриксе.
Да, только ты забыл добавить туда php 4-5 версии с index.php на 10к строк от Васяна, вёрстку, ещё опционально деплой всего этого говна и знание какого-нибудь C#/Java. Разумеется, всё это за 20-30к в месяц.
>Ты за год не догадался пойти на удалёнку, где изи можно устроиться на 1к баксов в месяц. Я работу на 2к баксов нашёл за неделю. Палю годноту, только тссс, никому не показывай: http://rubyjobs.ru/
А сколько ты там раз видел джунов/миддлов на удалёнку? Я вот года полтора уже периодически мониторю. Джунов за это время я видел ровно ноль, миддлов — иногда. Всем нужны помидоры/лиды.
И потом эти люди ходят и орут РЕБЯТ, КАДРОВЫЙ ГОЛОД, РАБОТАТЬ НЕКОМУ, ОТ БЕЗЫСХОДНОСТИ ТЕХНОПАРК ЗАПУСКАЕМ! ДАЁШЬ СИНЬОРА ЗА 2 ГОДА!
То есть Руби новичкам никак нельзя советовать, получается?
Потому что работу они не найдут. И тогда надо советовать... с чего там на Руби сеньоры перекатываются?
Добро пожаловать в пхп тред, через два-три года можешь сюда вернуться
Отчего в моей голове возникла мысль о создании описания сферического рубиста в вакууме. Господа выше заметили, что джунов-рубистов не бывает, сразу учат минимум на миддлов. Отчего в голове всплывает определённый образ.
Итак, рубист. Какой же он? Давайте попробуем рассмотреть его поближе:
— Родился и вырос в Москве, либо переехал туда недавно.
— Далеко не беден, может позволить себе довольно дорогие инструменты разработки — macBook, jira, heroku.
— Пришёл в руби сразу как минимум на миддла, демонстрируя высокий уровень мастерства правда, тесты только недавно научился писать, но неважно
— Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью. Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком.
— Знает только один фреймоврк. Опционально кодит на js, создавая велосипеды для своего приложения. ES6 он поробовал, ему понравилось, но в проектах пока не использовал.
Господа, а какие черты рубистов заметили вы? Прошу дополнить.
>Господа, а какие черты рубистов заметили вы? Прошу дополнить.
Замени макось на маздай95 и руби на ц++ начала девяностых.
«Я знаю, как написать графическую оболочку для всего!»
>А сколько ты там раз видел джунов/миддлов на удалёнку? Я вот года полтора уже периодически мониторю. Джунов за это время я видел ровно ноль, миддлов — иногда.
Ок, тут мой опыт для тебя бесполезен. Свои первые полтора года я работал на Upwork, только потом уже нашёл работу на rubyjobs как миддл (за 2к баксов, я хз, это миддл наверное).
Так может повторишь мой путь и попробуешь Upwork? Я первый заказ за 4 дня нашёл (фикс на 90 баксов, сделал за 5 дней, это была вообще моя первая работа в области программирования), хотя в гайдах пишут что до месяца может уйти с пустым профилем. Гайды посмотри, там всё подробно расписано. Английского достаточно письменного, у меня разговорный считай никакой, за полтора года на Upwork устно общался только с одним заказчиком раза 2-3 всего.
>Родился и вырос в Москве, либо переехал туда недавно.
Милионник, региональный центр. Работаю в офисе сейчас, но до этого 2 года удалённо.
>Пришёл в руби сразу как минимум на миддла, демонстрируя высокий уровень мастерства
4 года олимпиадного программирования и проектов "для себя" на питоне и Си, поэтому мб сейчас, после 3 лет что занимаюсь разработкой профессионально, буду претендовать на senior, если буду менять работу.
>правда, тесты только недавно научился писать, но неважно
Уж не помню, по-моему почти сразу, как начал работать, но они уже были на моём первом проекте, их надо было поддерживать, и было на что ориентироваться.
>Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью.
>Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком.
Принципиально FOSS, сейчас Debian. К тому же это и моя серверная ОС основная, наряду с Ubuntu.
>Знает только один фреймоврк.
Знаю рельсы, синатру, джангу, фласк, react (inb4 это библиотека), redux.
>Опционально кодит на js, создавая велосипеды для своего приложения. ES6 он поробовал, ему понравилось, но в проектах пока не использовал.
Не могу писать на JS без Babel. Язык знаю хорошо, просто воротит от синтаксиса. Собираю webpack'ом на рельсовом проекте.
>Господа, а какие черты рубистов заметили вы? Прошу дополнить.
Любят Руби, недолюблювают другие языки. Сужу по себе. Впрочем, с Babel на фронте вполне можно жить.
>Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью.
А что в 10 винде полноценная линукс консоль?
>ES6 он поробовал, ему понравилось, но в проектах пока не использовал.
Кстати, а какие хорошие учебники есть именно по ES6?
Учишь JS, потом изучаешь это:
https://babeljs.io/learn-es2015/
https://babeljs.io/docs/plugins/
Зачем отдельный учебник? ES2015 это просто препроцессор и набор полифиллов. Язык не меняется, поскольку сохраняет полную обратную совместимость.
Это классика
https://m.habrahabr.ru/post/142140/
Я слышал, правда, что язык сильно изменился нынче. Но верится мало, что описанное в статье более не актуально. JS тоже сильно изменился, но не избавился от ключевых проблем. Но на нём, по крайней мере, можно писать хороший код, обвешавшись доп. инструментами вроде Babe, Flow. Сомневаюсь, что PHP совершил больший прогресс, нежели JS.
Для Руби нужен единственный инструмент - RuboCop. Несмотря на то, что статический анализ кода на Руби в теории сложнее, чем в Python или JS, в Руби эта задача решена лучше (но статической типизации пока не подвезли, да).
Когда я начинал усить Руби, у меня тоже был баттхерт от нестандартных и криво реализованных фич. Так что я разочаровался уже с первых шагов (ожидания были разрушены - язык не идеален), как впрочем и с другими языками (Питон, Java и др.) - раньше или позже.
Так что говном в других бросаться не стоит.
Статья недаром называется "фрактал плохого дизайна", эта выразительная фраза выбрана чтобы уже заголовком дать понять - статья не о недостатках PHP, она о том, что PHP - это один большой недостаток, и в отличие от языков с нестандартными и криво реализованными фичами, на которых при желании можно писать качественный код (пример - путь развития современного JS), PHP просто пора выкинуть на помойку. Опять же, повторюсь, если его недостатки не умудрились чудом устранить в новой версии. В принципе, в отличие от JS ему не надо сохранять обратную совместимость, поэтому шансы есть, но вникать в это я не хочу. Мы в Руби-треде, хочу напомнить.
>Так может повторишь мой путь и попробуешь Upwork?
Ну а какой уровень у тебя был? У тебя был подтверждённый тестом скилл? Я вот сдавал и получил 2.75. Такой себе, сам понимаешь.
Создатели ES2015, наверное, хотели бы, чтобы эти вещи из движков убрали, или хотя бы полностью поддерживали новый стандарт. Однако разработчики браузеров пока не спешат вводить фичи, а уж тем более что-то убирать. Если сейчас эти "как бы deprecated" штуки отключить, пол-интернета сломается.
Во-первых, тесты есть в паблике, я прошёл руби и питон самостоятельно на 4.1 и 4.5 вроде, через три недели перепрошёл, глядя в ответы, на 5. Во-вторых, 2.75 за 1.5 года изучения технологии - это стыдно должно быть.
Стыдно, да. Но мне хочется жрать, поэтому я вынужден работать, а рубями заниматься в свободное время.
Я так и не понял, чем ты год там занимаешься. Покажи гитхаб. Я тебе код ревью сделаю, скажу, что стоит подучить.
Ну покажу я свои бложики-боты для телеграм. Толку? Знакомые джуны после тудушек вкатываются на js в Москве. Чем я хуже?
>Ну покажу я свои бложики-боты для телеграм. Толку?
Знакомые джуны после тудушек вкатываются на js в Москве. Чем я хуже?
Может быть твои знакомые джуны не выделывались когда им предлагали код ревью провести?
У тебя слишком много самомнения, хз.
>Ну покажу я свои бложики-боты для телеграм. Толку? Знакомые джуны после тудушек вкатываются на js в Москве. Чем я хуже?
Видимо, тупее. Если ты за год не сделал тудушку на JS и не пошёл джуном, то дело не в Руби, а в том, что ты ни на Руби, ни на JS, ни на чём другом программировать не можешь.
Обязательное условие при приёме на работу JS-джуна?
Котаны, для чего в модуль из кода выше вложены переменные класса, или что вообще происходит при использовании "class << self", что-то я запутался совсем.
И на самом деле из этой же оперы у меня ещё есть вопрос, зачем иногда в классах делают кучу подклассов (типа "class Foo ; class Bar ; nil; end; end"). Это нормально? Я видел приём где это делается чтобы выплюнуть объект, но почему нельзя сделать не вкладываю классы один в другой.
> что вообще происходит при использовании "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 активных каналов, в т.ч. обучающий.
у руби есть 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. там есть секции про классы и объекты и поиск.
у руби есть 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. там есть секции про классы и объекты и поиск.
>зачем иногда в классах делают кучу подклассов (типа "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
>зачем иногда в классах делают кучу подклассов (типа "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
http://rubyjobs.ru/vacancies/4991
Вкатывайтесь, за дошираки.
Это я еще в универе прошел. А дальше ? какой путь ?
Стоит им написать или нет? Я вчера изучил немного связные списки — чувствую себя очень умным.
В приложении GET запрос вида «локалхост:порт/контроллер?параметр1&параметр2» отдает json с данными, которые я хочу вывести в одной из вьюх. Как правильно обратиться из хелпера вьюхи? Я же не должен используя URL обращаться, ведь так? Это же не внешний сайт какой-то.
Пускай, данные получены и даже отображаются в нужной форме (в моем случае это простая таблица). Хочу на странице отображать поля «параметр1» и «параметр2» куда вводятся желаемые параметры, а при нажатии на кнопку неподалеку, страница бы подгружала обновленные данные в соответствии с запросом. Как это сделать? А используя ajax как это будет выглядеть?
Заранее спасибо за ответы.
Я читал уже, мне бы обратиться из другого контроллера/вьюхи. Как именно это сделать-то в моем случае, с параметрами?
Туториал М. Хартла.
Еще ни разу не отвечал никому ничего другого независимо от предыстории.
Валяюсь я такой в кровати, вдруг звонок от hr. Номер нашли в резюме, которое висит уже больше месяца и там чистый шарп стек. Контора до этого несколько раз резюме смотрела. Привлечь мог разве что мехмат в резюме (коственно hr это показала).
Это просто унылый дроч, такой же как и формочки.
Вообще местная студентота такая наивная, мол если мотематика или там что-то околонаучное то автоматически не унылый дроч, а дохуя интересно, ага щяс.
но хоть нужное. хотя с машоб, это не всегда нужно. ну и быть в курсе что происходит в мире, а не что происходит в руби или около этого.
ну и если можешь матан, то и электронику можно самому уже правда, и физику и немного химии с биологией, просто так.
а с руби ты только руби и можешь, не интересно.
Это реальный мир.
>Хартла
Вот это?
Hartl M., Donahoe L. - Learn Enough HTML to Be Dangerous. A tutorial introduction to HTML. (2017)
Спрашиваю потому что их официальные представители говорят одно, знакомые другое, я потерялся уже и не знаю кому верить.
на Нансена, мань?
Сейчас воткнув на древнем ноутбуке Atom+GitHub, вооружившись справочником по математике, учусь решать уравнения.
Приветствую всех, возможно я с вами надолго.
Вряд ли его ноут потянет шарпоIDE.
вроде ЗОРОБОТОЛО но теперь другая хуйня
- сервер падает, как сделать автозапуск?
На сервере убунтец 16, скачал руководство по системд
cron
так и сделал. Посмотрим что сегодня ночью будет, а то меня уже анально поебывают, хули дескать твое ПО не работает.
Кури systemd. Писать юниты очень просто. Вот как сделать сервис для сервера Puma: https://github.com/puma/puma/blob/master/docs/systemd.md
>— Родился и вырос в Москве, либо переехал туда недавно.
Дс3 вот и гадай что это
>— Далеко не беден, может позволить себе довольно дорогие инструменты разработки — macBook, jira, heroku.
Около бомж с бюджетом 1к на неделю.
>— Пришёл в руби сразу как минимум на миддла, демонстрируя высокий уровень мастерства
Хз на кого я пришел, туплю как сука, после шарпа, с вашей утиной типизации, мне мозг клинит.
>— Презирает виндовс. Совсем. Даже 10 версию. Даже с полноценной линупсовой консолью. Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком.
Шинда мое все, в кармане винфон, сам хотел учить uwp, когда позвали.
>— Знает только один фреймоврк. Опционально кодит на js, создавая велосипеды для своего приложения. ES6 он поробовал, ему понравилось, но в проектах пока не использовал.
И этот фреймворк не знаю. И Js не знаю.
Мимо >>1054914 кун
>
Покупал его маман, она не стала его осваивать, оставшись на кнопочном. Когда мое ведро сдохло, вместо покупки нового, я достал с полки этот винфон.
Руби походу всё посоны.
Популярность на 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.
В этой статье речь идет не о 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 тоже постоянно говорят, что она умирает и т.д.
Про Delphi тоже говорят что умирает. Врут собаки. Жив, жив Курилка!
Вот только на джаве хоть что-то периодически выходит. А на рубях выходят только в основном никому неизвестные исходники на гитхаб.
Ваш тред даже на двачах был нихже хаскеля, пока я его не бампанул.
Даже не знаю, на кого этот траллинг рассчитан. На каких-то залетных новичков? Тред конечно живее не становится, это да.
У меня не много опыта в кодинге, но при взгляде на на код на трёх этих языках руби выглядит лучше.
>не такой фашистский синтаксис как в питухоне
Это пока ты в команде не начал работать, жёсткая стандартизация лучше, чем когда каждый пишет как хочет
Везде где смотрел на руби код прямо указывается один стайлгайд на гитхабе.
В командах ещё и рубокопы всякие применяются, чтобы палить тех кто от стайлгайда отходит.
>Везде где смотрел на руби код прямо указывается один стайлгайд на гитхабе.
Везде — это полтора гема? Открой хотя бы рельсу, включи рубокоп и наблюдай как стайл-гайд соблюдается.
У них свой конфиг для рубокопа, это допустимо:
https://github.com/rails/rails/blob/master/.rubocop.yml
>>1061842
Если ты не в команде, то пиши как хочешь, ты просто хейтер.
> У них свой конфиг для рубокопа, это допустимо
который использует 3,5 правила из всего гайда, раскомментируй эту строчку в rubocop.yml
> DisabledByDefault: true
и наблюдай.
закомментируй
В рельсе свой стайлгайд (из-за рельсового dsl) и что? У них есть план и они его придерживаются.
> и что?
В отличии от го, никто (из нормальных людей) не обязан и не соблюдает рубиновский стайл-гайд на 100%.
Скажем, если мне нравится писать `return` в конце метода, то буду писать его везде, где это допустимо/не портит устоявшийся стиль.
Ответственный за мерджинг пробежится рубокопом и зарулит твой коммит.
В го просто изначально прибит гвоздями гоfmt чтобы макаки нанятые гуглом не могли накосячить ну ок, в больших корпорациях так нужно.
Руби от этого хуже не становится и все инструменты для осуществления подобного контроля также есть. Если мистер которые владеет проектом решил использовать стайлгайд, значит все остальные будут либо писать по нему, любо искать другой проект.
> Если мистер которые владеет проектом решил использовать стайлгайд, значит все остальные будут либо писать по нему, любо искать другой проект.
Значит, нужно искать другой проект. Стайл-гайд обязан быть аргументирован, почему так не надо писать — это руководство по тому, как не наступить на грабли, читая чужой код. Чьи-то хотелки, как в случае с https://github.com/bbatsov/ruby-style-guide#no-explicit-return не несут в себе никакой практической цености.
Руби это язык упирающий на читаемость и коммьюнити именно за это и любит рубишку, поэтому и гайды такие.
Рэльсовики стараются в данном случае брать и следовать этому в своём руководстве.
Хотелки это у тебя, а у них большой опыт и философия которая подкрепляет гайд.
Как и весь синтаксический сахар в руби опускание ретёрнов призвано улучшить читаемость.
«А я вот на плюсах всегда return 0 ставлю, мне так нравится!», но руби это не твой какой-то предыдущий язык, своя атмосфера, такие вещи надо просто принять.
А не мог бы ты аргументировать практически свои слова про коммьюнити? Давай возьмем 1000 самых популярных гемов и прогоним по ним рубокоп со всеми галочками. Сколько варнингов будет?
> опускание ретёрнов призвано улучшить читаемость
Об опускании (в контексте статического анализа) Матц говорил что это не так уж и хорошо. Моя позиция простая: опускание ретурнов в угоду читабельности делает систему менее предсказуемой.
>Давай возьмем 1000 самых популярных гемов и прогоним по ним рубокоп со всеми галочками.
Если в проекте есть свой конфиг рубокопа, то прогонять нужно по нему. Гитлеровские штучки как в питоне и го здесь неуместны. Потому что руби это не питон или го (которые живут на поддуве гугла, руби только сейлсфорс поддувает).
>Моя позиция простая: опускание ретурнов в угоду читабельности делает систему менее предсказуемой.
Каким образом? Проявляется какое-то недокументированное поведение?
Чтобы сделать систему более предсказуемой существуют всякие ensure или можно просто nil поставить в конце функции если ты её опроцедурить хочешь.
В JS вон вообще надо извращаться с запятыми и прочими знаками пунктуации просто чтобы код нормально работал.
> Если в проекте есть свой конфиг рубокопа, то прогонять нужно по нему.
Я нахожу несколько двуличным когда с одной стороны, ты не даешь мне отключить конкретное правило рубокопа, а с другой — для тебя ок, когда третьи лица отключают едва-ли не весь рубокоп. Ещё немного и начну кидаться какашками в тебя. Братюня, не доводи.
> Каким образом? Проявляется какое-то недокументированное поведение?
Пишешь код, а через год не можешь сказать, возврат значения — запланирован, или это артефакт. Если не запланирован, то использовать его далее по коду - как минимум, не ок. В комментариях к методу еще бы и возвращаемые типы расписать, если это не 'примитивы'.
Ещё раз повторяю, руби это не питухон и не гомого — хочешь используешь метод size, хочешь юзаешь count или даже length. Алиасы, тысячи их.
Хочешь отключить в своём проекте все фильтры и оставить только свои — ок, хочешь дефолтный стайл гайд — пожалуйста.
Просто ты, как говорят, любишь по жёстче с самого начала.
>Пишешь код, а через год не можешь сказать, возврат значения — запланирован, или это артефакт.
Тесты как раз для этого придуманы насколько я знаю, они проверят оутпут твоих функций. Также можно реализовать методы проверки типа на соответствие классу или что-нибудь такое.
>Просто ты, как говорят, любишь по жёстче с самого начала.
Наоборот, я люблю нежно и ласково.
> Тесты как раз для этого придуманы насколько я знаю, они проверят оутпут твоих функций. Также можно реализовать методы проверки типа на соответствие классу или что-нибудь такое.
Т.е. вместо самодокументирующегося кода предлагаешь писать миллион тестов, на те 10% редких кейсов? Да и и неудобно это: из-за каждой мелочи лезть и читать тесты.
>Т.е. вместо самодокументирующегося кода предлагаешь писать миллион тестов, на те 10% редких кейсов? Да и и неудобно это: из-за каждой мелочи лезть и читать тесты.
10% чемоданов это уже не редкость, а на совсем экзотические случаи я предлагаю забить (иначе говоря не делать преждевременную оптимизацию или избыточное покрытие тестами) и после первого сообщения о баге переписать функцию нормально, а с опытом функции будут «сами собой» писаться нормальными.
Прости, но нахожу твою аргументацию недостаточно убедительной или как в случае с
> Ещё раз повторяю, руби это не питухон и не гомого — хочешь используешь метод size, хочешь юзаешь count или даже length. Алиасы, тысячи их.
вообще не понимаю каким боком алиасы связаны с вопросом о `return`.
>вообще не понимаю каким боком алиасы связаны с вопросом о `return`
Таким что return в большинстве случаев это (синтаксический) сахар.
А руби настолько OOP язык, что в нём постоянно идёт обмен сообщеньками вот и всё. Хочешь залочить функцию, пиши nil в конце и всё.
Получается такая система, что если у Post id равен thread_id, то это, собственно, сам тред, а если нет - значит, это ответ. Сделал так потому, что хочу, чтобы id были, как на всех имиджбордах. Насколько хорош такой способ? Можно сделать проще?
На обезьяну сверху справа надо академическую шапку.
Нет, он компилируемый. Типы указывать в коде не надо.
Прошу помощи с тестом контроллера на акшон oauth аутетнтификация.
на скринах соответственно тест и ошипка.
облазил все интернеты, так и не могу понять в чем проблема и что я делаю не так.
Это намек на то что еще какая-то инфа нужна?
да хз вроде что-то пустое отправляется символы поменять на обьекты
Ну чё, пагни? RailsClub 2017 уже сегодня!
https://habrahabr.ru/company/railsclub/blog/335120/
https://habrahabr.ru/company/railsclub/blog/335378/
https://habrahabr.ru/company/railsclub/blog/336690/
https://habrahabr.ru/company/railsclub/blog/337378/
https://habrahabr.ru/company/railsclub/blog/337862/
https://habrahabr.ru/company/railsclub/blog/338208/
https://habrahabr.ru/company/railsclub/blog/338278/
https://habrahabr.ru/company/railsclub/blog/338412/
> Почему твой доклад на RailsClub 2017 называется «Ruby is dead»?
У меня есть официальное разрешение от Матца называть Ruby мертвым языком :) Конечно, это провокация. Не новость, что я всегда критикую Ruby и Rails. Мне нравится Ruby, но я всегда сравниваю его с другими языками. В докладе я покажу примеры из Java и PHP, расскажу как они развивались и как сильно улучшились за последнее десятилетие. Но Ruby остался таким же, как 20 лет назад, и это должно быть предупреждением для нас. Я хочу остаться в Ruby, но он должен развиваться! Многие люди переходят на другой стек, потому что хотят работать с языком, который решает их проблемы. Моя проблема — как создать стабильное и надежное коммерческое приложение. Да, в Ruby процесс добавления новых фич, таких как, например, поддержка типизации, идет очень сложно, во многом из за поддержки обратной совместимости. Но ведь другим языкам удалось это сделать!
Двачую этого.
> С другой стороны, я думаю что Ruby напрасно лишён интерфейсов. Из-за этого невозможно строго определить, какое именно поведение ожидается от метода, что было бы особенно полезно для авторов библиотек. Я надеюсь когда-нибудь это починят. Также не думаю, что в будущем Ruby сыграют заметную роль библиотеки, в которых будет реализовано то, чего нет в ядре языка. Новые фичи по-настоящему заработают только тогда, когда станут частью ядра Ruby. И конечно, реализация должна быть сделана как следует.
И этого тоже
Братишка, это из статей по ссылкам из >>1065232 Братишка, будь, пожалуйста, менее токсичным.
> Ещё блядь отступы попроси.
Нет отступы не надо. Я бы ещё попросил библиотек побольше, но слабая экосистема - меньшее из злободневного. Лучше аннотации на уровне языка ( костыльно они реализованы в подделке от джетбрейн).
Сам ты братишка, не буду я перебирать все эти статьи, а ты ещё и бака-гайдзин.
Есть вопрос, как лучше реализовать маршрутизацию типа двача,к примеру: /pr/t1, /b/t45 и так далее.
У него все получится, просто передай GEM HUIPIZDA INSTALL
Хотел использовать neo4j, а он оказался платным. Следующая по популярности OrientDB не имеет нормальных либ для рубей.
Че посоветуете?
Ну напиши нормальную либу сам.
http://blog.topolyan.com/
Просто оставлю это здесь.
Хочу сделать отслеживание залогинен пользователь или нет
Ну мог бы для приличия бложик свой на рубях запилить, не на вордпресе
Как я понял сессии по дефолту хранятся в куках в зашифрованном виде, перенёс всё в редис и стало проще ими оперировать
>— Родился и вырос в Москве, либо переехал туда недавно.
Засранск на севере. Правда, поступил в мск на бюджет, но вылетел с 6-го или 5-го семестра, потому что не ходил на физ-ру
>Далеко не беден
Сам-то как думаешь?
>macBook
Анус пятилетней давности с докупленными ssd на 128 и оперативкой до 16.
>jira
На стажировке была, да, но я не знаю как там за нее платили.
>heroku
Заливал на фри место псевдопетпроджекты.
>Пришёл в руби сразу как минимум на миддла
Сначала стажировка я правда думал, что хоть что-то заплатят, съебал через 2 недели, последние пару недель — июнь на удаленке 30-40к, что очень круто в моей ситуации на самом деле по меркам этого города
>правда, тесты только недавно научился писать, но неважно
хех
>Презирает виндовс. Совсем. Даже 10 версию
В дуалбуте дрисня, но я туда давно не грузился. Игрушки же и все такое прочее. У меня там скайп еще.
>Даже с полноценной линупсовой консолью
Cmder я туда поставил, но, по сути, не пользовал.
>Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком
Арчиком, где есть yaourt + AUR.
>Знает только один фреймоврк
Это ты про рельсы, лол? Вообще я пытался реакт/вью учить между собеседованиями, так что не знаю, чек или не чек.
>Опционально кодит на js,
Что-то околонулевые знания.
А еще я не знаю что такое смузи, например.
Такие дела.
Со мной всё будет хорошо?
>— Родился и вырос в Москве, либо переехал туда недавно.
Засранск на севере. Правда, поступил в мск на бюджет, но вылетел с 6-го или 5-го семестра, потому что не ходил на физ-ру
>Далеко не беден
Сам-то как думаешь?
>macBook
Анус пятилетней давности с докупленными ssd на 128 и оперативкой до 16.
>jira
На стажировке была, да, но я не знаю как там за нее платили.
>heroku
Заливал на фри место псевдопетпроджекты.
>Пришёл в руби сразу как минимум на миддла
Сначала стажировка я правда думал, что хоть что-то заплатят, съебал через 2 недели, последние пару недель — июнь на удаленке 30-40к, что очень круто в моей ситуации на самом деле по меркам этого города
>правда, тесты только недавно научился писать, но неважно
хех
>Презирает виндовс. Совсем. Даже 10 версию
В дуалбуте дрисня, но я туда давно не грузился. Игрушки же и все такое прочее. У меня там скайп еще.
>Даже с полноценной линупсовой консолью
Cmder я туда поставил, но, по сути, не пользовал.
>Но, при этом привык к лёгкости и простоте установки, отчего и пользуется макбуком
Арчиком, где есть yaourt + AUR.
>Знает только один фреймоврк
Это ты про рельсы, лол? Вообще я пытался реакт/вью учить между собеседованиями, так что не знаю, чек или не чек.
>Опционально кодит на js,
Что-то околонулевые знания.
А еще я не знаю что такое смузи, например.
Такие дела.
Со мной всё будет хорошо?
Руби, не умирай!
кстати, эликсир есть смысл учить в широком смысле?
Нахуй нужен. Иди вон CRUDошлёпить на пыхе.
И вкатывайся через пять лет. Нахуй джава не нужна.
Крон?
сайдкик, рескью?
бля, сорян за тупой вопрос, в общем как в терминологии руби называется кусок кода который
работает в постоянно режиме, сейчас я вроде все так представляю, зашел пользователь на веб сервер, началась работа в контроллерах, а мне нужно то что бы запускало и работало, в моем случае загоняло данные в БД
ок, спс, наверное действительно то, что мне нужно
- легаси, "поддержка и развитие"
- не ит-конторы
- бездушные бади-шопы (которые тоже ит-конторами язык не поворачивается назвать)
- удаленщики
- просто мутные конторы с мутными командами
Мониторю хх, мойкруг и руби-джобс. Что делать, хочется работать в интересном проекте и/или здоровом коллективе, а я сижу тухну в одном болоте и просто некуда уйти даже.
Где еще поискать можно? Внезапно в Питере часто мелькают интересные вакансии, но боязно переезжать.
Не используй тесты контроллеров, они устарели. Ошибка в том, что параметр provider равен nil, т.е. отсутствует.
Я бы не стал так делать, но на двачах так, да.
Да что угодно. Сейчас планирую свой VPN-сервис поднимать с фичами, которых нет НИГДЕ, но, по словам знакомого, который подобными сервисами активно пользуется, крайне востребованными. Надеюсь взлетит.
На удалёнке иди, 2к баксов за сидение дома изи. Если претендует на большую ЗП, то ничем не помогу.
Отче Наш.
Стоит всегда что-то делать. А если делать - то делать заебись.
Стоит, рельсы сейчас очень даже котируются, т.к. стабильное, проверенное, удобное решение + версия 5.1 наконец-то въехала в современный веб с вебпаком и т.д.
скоро выйдет кристалл и все узкие места можно будет писать на нем вместо элексира, так что нет.
Больше от эрланга, но вообще можно и с нуля вкатываться.
Я либо не там ищу, либо в глаза долблюсь - но нет нихуя на рынке вообще.
Я, как руби-макака, успел немного разочаровался в кристале. Язык прикольный, ruby inspired, да; но документации, стайл гайдов категорически не хватает. Вкатываться в такое можно, если есть опыт в смежных языках, иначе больно.
Вот например, вчера баловался с weak algorithms (GA) на кристале. Для переменной внутри гена объявил union typed variable. Через час выяснилось: union не умеет в многие типы, замыкания. И что тут делать? Обмазываться дженериками? Лепить тысячу классов? Всё не то. Разве что идти искать решения в чужих исходниками — тоже такое. Вот думаю теперь: отложить кристал на пару лет, да попробовать скалу или раст. По скале уже полистал документацию по ней - испытал мультиоргазм - разжевано очень подробно, как раз для таких дурачков как я.
Так что не разделяю твой оптимизм на счёт кристала.
Наверное ты плохо умеешь гуглить, а это очень важно. Раньше я тоже считал, что по Руби мало инфы, но с ростом опыта начал находить, и очень много.
Style guide https://github.com/bbatsov/ruby-style-guide
Даже на русский переведен https://github.com/arbox/ruby-style-guide/blob/master/README-ruRU.md
И что это значит?
Обобщенный тип данных в статических ЯП. При приведении (("type erasure") к дженерику, можно использовать один и тот же код для разных типов,
Сразу видно типичного программиста. Немножко не от мира сего; "идеальный" код, который делает не то что просили...
Затем есть второй класс - симуляция. В нем я в цикле по времени (1 сек) вычитаю расстояние текущего автомобиля из предыдущего. Как это сделать? Делаю через each но там как я понимаю счетчик только для одного объекта, как обратиться к предыдущему объекту?
код https://ideone.com/1ETRlT
Какое самое больше количество таблиц и размер БД вы встречали в своей практике в веб-приложениях?
Очевидно присвоение массива в переменные типа `a, b = [1, 2]`. Не знал про это, где можно почитать про конструкцию?
https://github.com/thoughtbot/factory_bot/issues/921#issuecomment-231569572
А вообще там все issue достойно отдельной статьи
*тестовое
Нет, смех, конечно, не вызовет, то что джуны пишут лютое говно в тестовых привыкаешь быстро, но я бы тебе не перезвонил. Самый минимум можно переписать вот так @item.update(is_admin: params[:status].empty?). Еще в руби обычно называют булевые поля без префикса is, то есть не is_admin, а просто admin. Хотя даже после этих исправлений строчка бы попахивала: обновление поля с именем admin в зависимости от пустоты параметра, который, судя по названию, никак не относится к администрированию. Но что бы понять как конкретно ее можно переписать нужно видеть остальной код.
я так понял, что ко мне приебались не из-за способа обновления поля, а именно из-за синаксиса... спасибо
Не поверишь. Меня взяли на испытательный срок, во время которого, едиснтвенное, что я делаю- пишу тестовое. Как только напишу- испытательный срок закроют. И мне за это даже немного платят. И это при том, что у меня опыта ноль. Я в ахуе.
>Еще в руби обычно называют булевые поля без префикса is, то есть не is_admin, а просто admin.
Причем тут руби, если он обращается к ActiveRecord? Ты там поля в базах данных по конвенции Бацова называешь?
При том что названия методов генерятся из названий полей. Хочешь названия метод по конвенции -> называешь поля в базе по конвенции.
> называешь поля в базе по конвенции
Ясно, всё с тобой, называтель. Хочешь красивые названия для методов-предикаты используй http://www.chrisrolle.com/en/blog/aliasing-the-rails-way
>называешь поля в базе по конвенции
А собственно почему бы и нет? А alias_attribute так себе штука, особенно когда у тебя куча овердохуя сложных запросов, путаться начинаешь, когда одна и та же колонка называется по-разному в руби коде и sql.
>А собственно почему бы и нет?
Ты ведь в курсе на backend'e зачастую используется больше одного ЯП? Предлагаешь писать на го/эликсире/whatever с нотациями из руби?
Я прямо сейчас так пишу, какой-то конвенции в именование полей в базе в любом случае нужно придерживаться же. На беке в проекте используется руби, джава и немного эликсир, никто не жалуется (разработчиков чуть больше 30).
Тем более, что за руби-нотация? Выбор-то не очень большой или underscore или camelcase, плюс мелочи вроде постфикса _at для полей с датами.
>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)
А так у тебя ни хуй, ни пизда, говно блядь
>Я прямо сейчас так пишу, какой-то конвенции в именование полей в базе в любом случае нужно придерживаться же.
В конвенции руби нет понятия суффикса в имени переменной. Без суффикса поля sql нормально не именуются. Так что не думаю, что вы используете конвенцию руби в чистом её виде; полагаю используете смесь стайл-гайда по sql, типа http://www.sqlstyle.guide и отдельных нотаций из рубиновского стайл-гайда. Хотите так писать - ок, однако в базах данных, на мой взгляд, допустимо использовать префиксы is_ для булева типа данных, вот и всё.
>Еще в руби обычно называют булевые поля без префикса is
Бля, а где это интересно написано, что в руби поля называют без префикса is_? Может быть ты хотел сказать в рельсе?
Так в рельсе дохуя чего делают, от чего цивилизованный мир уже давно отказался. Уже тошнит всех от этой магии и бесконечного синтаксического сахара.
>Бля, а где это интересно написано, что в руби поля называют без префикса is_?
Посмотри на стандартную библиотеку руби, например, ни одного метода с префиксом is_ ты там не найдешь.
>Уже тошнит всех от этой магии и бесконечного синтаксического сахара.
Сам с собой споришь? Я не утверждал, что тонны синтаксического сахара это хорошо, я бы и сам с удовольствием выпилил бы процентов 70 всех методов из рельс, да и вот это >>1082860 меня расстраивает. Но это не отменяет того, что многие вещи в руби сделаны вполне годно, а совсем без синтаксического сахара может получится JavaScript.
rails
Методы с полями не путай. Где ты видел чтобы писали `admin? = true`?
Мне нахуй не уперлось, чтобы фремворк добавлял мне говнометодов на основе типа данных. Были же раньше в рельсах find_by_zalupa_color('red'). Сейчас вот повзрослели. И эта хуйня из той же оперы.
is_ так же хорош, как _at. Охуенно удобно читается. В отличии от какого-нибудь active - чего блять эктив, лезь в базу смотри.
я все осознал, не бейте, просто обоссыте
На первых что-ли? Я помню еще в третьей версии их использовал.
Или может просто новые версии со старыми не работают, тогда можно поставить старую же версию каминарей.
Для каждой из моделей есть контроллер. В контроллере А в встречается действие которое логичнее было бы вынести в контроллер B. Т.е. я хотел бы из контроллера А вызывать метод, который бы хранился в контроллере B. Это возможно?
Возможно. Контроллер инкапсулируется в класс, стало быть напиши что-то Controller1 cnt1= new Controller1;
У модели B есть файл прикрепленный с помощью paperclip. Теоретически у разных экземпляров модели этот файл может быть одинаковым. И тогда удалив один экзмепляр модели, в других экземплярах этот же файл становится недоступен, так как удаляется сам файл с диска. Как этого избежать?
вопрос снимается, я нашел
https://hype.codes/ruby-rails-developer-salary-russia-october-2017
Что бы там ни пиздели про нормальные зарплаты у рубистов, правда в том, что 40% работают за 60 тыр., и еще 27% - за 100 тыр. Т.е. 67% рубистов, работающих в РФ, живут за чертой бедности.
Такова участь людей, пишущих на скриптоговне.
Есть сиартап перерастает в проект, то все нахуй с рубец переписывается на божественную джаву/задротоплюсы с шарповой оберткой.
Извини, анон. Я сейчас работаю в такой параше, где была эпидемия концернов головного мозга и проект натурально невозможно поддерживать, потому что там такая КОНТЕКСТНАЯ ЗАВИСИМОСТЬ, что пиздец просто.
>>1086592
>>1087010
Вообще с концернами нужно работать очень аккуратно. Выделение какой-то логики в концерн - это архитектурное решение, гораздо более серьезное чем решение добавить еще один класс. Выделяемый функционал должен быть хорошо отсепарирован, не зависеть от контекста, и выделение должно быть концептуальным, исходя из предметной области (например, Enumerable в руби), а не техническим (как у анона какой-то фильтр два раза встречается или как некоторые долбоебы модели "сокращают" унося валидации в концерн).
приведи пример страшной контекстной зависимости.
Я нуб и нихуя не понял, но почитаю про это на досуге
Я его вызываю из контроллера Model.do_huynya
Можно ли сделать ему доступными переменные кнтролера не передавая их в него как параметры?
И еще один вопрос. Опять же model A has many model B, model B belongs to A. У модели B прикрепленный файл.
Я прикрепляю невалидный файл.
Запихиваю ModelA.modelsb << невалидная хуита. И пытаюсь сохранить. Он не сохраняет. С одной стороны все логично. Но я думал, что это происходит из-за наличия строчки validates_associated :modelsB, оказалось же, что эта строчка не при чем. Что тогда делает validates_associated?
Всем привет!
Хочу писать на Ruby приложения для Android.
Есть ли для этого возможность без глючных гемов и т.п., чтобы я просто в Rubymine или другом редакторе захуярил код, а потом сделал apk и протестил на своём телефоне?
Вопросы настолько простые, потому что я нуб в программировании, просто есть идеи приложений, которые я хочу сделать.
Если ruboto не работает, то что использовать вместо него?
мертвая тема, на ruby только веб - 90% Rails, 10%-всякие другие веб-фреймворки и поделия. Можешь попробовать чисто по фану, но смысла в этом никакого нет.
Зачем такой ерундой заниматься? Контроллер и модель являются классами. Классы не должны протекать друг в друга, иначе получится нетестируемая, неподдерживаемая лапша. То, что скаффолд генерирует к модели одноименный контроллер - это просто для удобства. Они ничего не должны друг про друга знать и никак друг к другу не относятся.
Смотри. У меня есть модель и контроллер Article. Есть модель и контроллер Picture. У Picture есть файл. В нескольких экшенах контроллера Article у меня происходит некоторое действие, которое
1. Хотелось бы сделать каким-то отдельным методом, а не повторять несколько раз
2. Оно по сути относится к Picture. Я могу его сделать например приватным методом Articles контроллера. Все будет прекрасно работать, но меня старший разработчик уверяет, что это некошерно совсем-совсем. Ок, я взял и вынес это в модель. Но тогда, мне надо вызывать этот метод с параметрами. Этот же разработчик посмотрел и сказал, что в принципе разместить этот метод в модели возможно. Но вызывать с параметрами это тоже пищдец как некошерно. янихуянепонимаю
еще проще: в Articles контроллере при создании и обновлении статей должен быть код, который добавляет картинки в статью. Где ему место и почему? А то я совсем запутался.
>вызывать с параметрами это тоже пищдец как некошерно
Почему так решил? В экшенах контроллера не используют параметры, а в остальных местах очень даже ок. Это же галимое 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
>вызывать с параметрами это тоже пищдец как некошерно
Почему так решил? В экшенах контроллера не используют параметры, а в остальных местах очень даже ок. Это же галимое 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
Бро, а я могу этот пикче аплоадер тупо сделать приватным методом контроллера? В этом какого-то серьезного зашквара не будет?
Я изначально сделал тупо приватным методом контроллера. Мне по месту его размещения проверяющие замечания не сделали, но старший разраб сказал, что пиздец зашквар и надо вынести. Я вынес в модель, точно так как у тебя с параметрами, но тот же старший сказал мне, что это блядь зашквар не меньший. Я думаю положить на него хуй, оставить приватным методом контроллера и не ебать себе мозг
Пускай тогда старшак конкретно скажет, куда его воткнуть. А то туда нельзя, сюда нельзя, а как именно надо, не говорит. Он может угорает просто? Да и вообще лучше просить у него, чтобы он объяснял, почему считает то или иное зашкваром, а то так чему научишься - просто повторяя его прихоти, но не понимая смысла.
Он вообще какой-то странный. Он почти ничего не говорит прямо. То ли религия не позволяет, то ли еще что. Я думаю, что раз проверяющие не приебались то и не надо это править.
Он как-то упоминал, что разместить это в модели возможно. Но бляд как я без параметров буду это вызывать из модели???
{a: 1, b:2, c:3 if x>y}
Кажется я совсем тупой. Не прошло и полгода, но дошло в делать в хеше не "some pictures", а "current_pictures"+"some_pictures"
Кажется нашел. Надо было новое имя индекса задать.
не будет. Но про нарушение CRUD смешно конечно - им надо проверить, что соискатель умеет в команду rails g scaffold?
Я скаффолдом не пользовался. Я вручную сгенерировал нужные мне файлы с нудными экшенами. А этот экшн, который не вписался в CRUD, я создавал сам, руками. И я его сделал не стандартным не потому, что я не знаю как выглядят стандартные, а потому-что до меня сначала не дошло, что он делает ровно то, же что и обычный edit, как только намекнули про CRUD, то сразу понял и исправил.
..."этот экшн", забыл сказать, что нашел в чем ошибка, но ты уже понял из моего предыдущего сообщения
В таких случаях надо показывать код. Скорее всего, ты просто чрезвычайно жопорукий.
Index: @list = Article.order_by(created_at: :desc).paginate(:page => params[:page], :per_page => 10)
Я так понимаю, что мне надо загружать не все разом, а только то, что запрашивает пользователь. Но что-то я не ебу как это делается. Помоги, анон
Наследники не видят их. Как пофиксить?
https://pastebin.com/Lc13g6dF
Уточняю вопрос.
Есть модель Parent, которая has_many childs. Во время валидации есть ошибки как родительской так и дочерней модели. Как ни делаю, все равно получается, что выводится лишнее. Ошибки полей родительской модели- ок, ошибки из дочерней- ок, но еще выводится из родительской ошибка вида child is invalid... хотя она мне нах не нужна, так как выводятся напрямую из дочерней нужные сообщения. Так как их красиво вывести?
Уточняю вопрос, заданный выше:
У меня в базе mongodb есть большая коллекция, несколько миллионов записей.
Запускаю сервер. Первый запрос который требует запроса в эту коллекцию выполняется ОЧЕНЬ долго, минут по 5. Даже если это банальный show. Но все последующие выполняются быстро.
В чем дело?
Я Матц-то разжирел!
Стандартный совет: использовать индексы, и посмотри, что там гугл пишет про "MondoDB First query is slow".
Т.е., бесплатно можно потыкать и пройти любые из их курсов (сколько успеете). Возможно вы помните эту компанию по курсам 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
Возможно ты на бесплатном хероку а он первый запрос делает медленно
что происходит в этой строчке? что такое access и ws_return_and_transfer_document? Это экшены, или что это такое?
Я это видел. Но нихуя понятнее не стало.
По идее первыйм аргементом должен идти экшн, а вторым объект. Я нигде не могу найти экшн acceess, но ок, может быть он есть. А вот название второго аргемента ну вообще никак не похоже на объект...
помогите мне пожалуйста, читаю 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. Подскажите пожалуйста, как решить эту программу.
На скриншоте bash, а не командная строка Windows (cmd).
Попробуй набрать cmd /c heroky.cmd create
спасибо огромное , заработало. То есть чтобы в windows работать в heroku(не обязательно create) через bash нужно всегда сначала писать cmd /c heroku.cmd?
Правильный вывод скорее такой - windows не очень-то подходит для разработки на чем-то, кроме .NET
Вопрос на конкретном примере:
- Есть чистая модель Payment, без валидаций и колбеков.
- Валидации вынесены в форму.
- Есть операция CreatePayment, в нее передается результат формы.
Дальше начинается операция, состоящая из нескольких действий: создаем запись в БД, создаем дочерние записи (проводки, например), обновляем счетчики, обновляем статистику, ставим джобы, шлем уведомления, пишем в лог. Часть операций нужно делать внутри СУБД-транзакции (создание, дочерние записи, счетчики, стата).
То есть по сути это колбеки before_create, after_save, after_commit и т.п.
И плюс ко всему - допустим в зависимости от контекста эти колбеки разные (например, когда делаем из админки, то не шлем уведомления, а в случае импорта не логируем. Ну условно.)
Вопрос: как должна выглядеть такая операция?
Как ее бить на степы? Как оборачивать в субд-транзакцию часть степов? Как менять состав операций в зависимости от контекста?
inb4: делать различные оперейшены. Да, может быть. Но предположим такой момент, что набор степов идентичный, а отличается только состав "колбеков" и то не всегда и не сильно.
помогите мне пожалуйста
я создаю в одной папке 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".
Объясните пожалуйста, как мне написать путь к этому плагину чтобы он установился?
ну помогите пожалуйста
в командной строке написано, что в файле моего gemspec не работает 4 строка, то есть require"wellspring/version", что-то про относительный путь
но я не знаю, почему и как исправить путь к этому файлу так, чтобы оно подключилось. Подскажите пожалуйста, как поправить.
Может мне нужно написать в первой строке что-нибудь другое, какой-то другой путь?
Где почитать про экосистему Руби? Чтобы понять какие тулзы сейчас используют, а какие подходы уже устарели. Знаю что есть RVM, Rack, - вроде их всегда и везде юзают. Какие еще тулзы?
Эта форма работает, но...
1. Я не понимаю откуда берется *.js, такого файла нет, точнее есть но он не js
2. В экшене, куда попадают данные этой формы, есть respond_to для js и docx. Как сделать так, чтобы управление попадало в docx?
Попробуй в 4 строчке твоего gemspec'a прописать абсолютный путь:
> require File.join(File.expand_path("../lib", __FILE__), "wellspring", "version")
json.comment decision.comment
что тут вообще происходит? В ответ на запрос отдается json-объект, в который в своейство comment записывается результат выполнения decision.comment?
Rails API онли апликейшены и микросервисы.
есть гуру этого дела? кто осветит темку?
Есть на английском языке http://www.r-5.org/books/computers/all/ книги Pragmatic Programmers.
Освящать нечего, вакансий в этой стране — с гулькин хер.
thx
у нас сейчас жуткий дефицит на рельсовиков (внезапно оказалось) и именно на бэкенд
вот думаю вкатится
Имеется строка. Она может содержать как русские, так и английские символы. Мне нужно, чтобы решение сделало так, что английские буквы, имеющие такой же аналог на русском заменятся русскими буквами.
Другими словами, буквы, допустим, «o», «a», «c», «e», «p» из английского алфавита заменятся, а буквы «q», «b», «v», «h» останутся нетронутыми. Был опыт у кого? Да-да, еще раз, мне нужно обернутое в гем решение, я знаю про ascii таблицу или как она там называется, по которой я мог бы каждый символ проверить.
Заранее спасибо, анон! И да, если то, что мне нужно, гуглится, то скажите каким именно запросом.
Транслит полностью и в рельсах есть, а мне бы только отдельные буквы. И да, если помимо английского будут и другие локали, то вообще заебись.
Хотел писать на руби, слышал много хвалебных отзывов. Потом понял что в руби все какое то неправильное. ФВП неправильные, в JS с этим лучше. Объекты первого класса какие то неправильные, чтобы передавать их в функции нужны преобразования. Короче разочарование. Почему так, зачем все это?
>Почему так, зачем все это?
Таков автор языка, Мацушита. Он даже высказывался против функций внутри других функций, вот как-то так:
https://stackoverflow.com/questions/4864191/
Склоняюсь к рязани, как более дешевому варианту, но боюсь прогадать, ведь встройки в ней нет, как и видеокарты у меня, плюс не знаю, нужен ли для рубей/рельс/программирования синглкор перформанс.
Что скажете вообще? На тредриппер и i9 бюджета нет.
>Почему так, зачем все это?
Пробовал одевать трусы через голову. Оказалось неудобно. Разочаровался в трусах, тряпка оказалась удобнее. Почему так, зачем вообще нужны трусы?
Так вот вопрос. Каким образом в этом коде
def price_in_cents
Integer price*100+0.5
end
переменная price ссылается на инстансную переменную @price? Я так понимаю это из-за attr_accessor? но ведь если присвоить в каком-то методе, например, price = 333, это не изменит инстансную переменную @price. WTF?
Пичалька.
Тебе жалко штоле?
И хорошо, что сказал, так никакой другой долбоёб например, ты не сможет где-нибудь посередине эту хуету перезаписать.
Таки сможет, интерпретатору похуй на рефлексию.
Кроме обмазывания паттернами, аргумент за аксессоры: рубимайн (через жопу) умеет в аннотацию типов, ну и ещё - доки - это типа круто.
Как он сможет? Я имею в виду что-то типа такого:
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
А не, NoMethodError не будет, но хотя бы это будет локальная переменная, а не перезапись.
В твоем случае NoMethodError будет когда ты попробуешь написать «self.do_not_write = false», чтобы этот код сработал нужно поменять attr_reader на attr_accessor. Если говорить вообще, то перезапись в руби возможно для всего и вся, за исключением констант. На них ругается варнингами.
Так в этом и суть. Где-нибудь в дебрях или по тупости можно легко перезаписать собачью инстанс-переменную, а через attr_reader - никак.
На этот счет есть довольно простое правило: инициализируй переменные либо через метод инстанса #initialize, либо лениво, в одноименном методе.
Правило есть, но не все о нем знают и помнят, когда вокруг пестрят собаки.
Да кому он нахуй нужен.
Это копия, сохраненная 19 декабря 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.