Сохранен 517
https://2ch.hk/pr/res/313906.html
Домены arhivach.top и arhivach.site временно не функционируют! Используйте домен ARHIVACH.XYZ.
24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Ruby [on Rails]

 Аноним Пнд 26 Авг 2013 13:41:03  #1 №313906 
1377510063085.png

FAQ

1. C чего мне начать, чтобы стать рубистом?
Отличным началом будет Eloquent Ruby. Для тех, кто хочет сразу понять суть - Why's (Poignant) Guide to Ruby.

Затем читаем Metaprogramming Ruby. На протяжении чтения вы должны писать код, конечно же.
Чтобы не задавать глупых вопросов уровня дибилоида, который не нашёл доки > http://www.ruby-doc.org/core-2.0
Вопросы уровня
>метод чтобы разбить строку в массив
игнорируются, автора исключают из школы и отправляют в биореактор.

Можно пройти руби онлайн - http://tryruby.org/levels/1/challenges/0
Не веришь в свои силы? прочитал уже книжек много и силы свои хочешь познать, сделай - http://rubykoans.com

2. Какой gem посмотреть, чтобы понять как писать код?
Лучше всего посмотреть небольшие gem'ы вроде cancan, devise, camping.

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
Для дотошных читателей есть The Rails 3 Way.
API http://api.rubyonrails.org

7. Хорошие практики по руби и рельсам?
Читаем Rails AntiPatterns, буквально на неделе вышли Rails Best Practices, также неплохо посмотреть Rails Recipes.

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

9. Я не могу в английский, что делать, анон?
Идти учить английский, без него тут делать нечего.

10. Есть ли у руби русское коммьюнити?
Нет. Вернее есть, но оно протухло и там полно людей у которых чсв высоко.
Яркий пример - [email protected]

11. какие гемы стоит знать?
capybara, rack, rspec, devise, cancan, simple_form, solr, sinatra, тысячи их.

12. Где можно задать глупые и неочень вопросы?
- здесь
- stackoverflow.com
- в рассылке rails-talk
- оф. форум рубей http://www.ruby-forum.com

13. Как фокнуть\сделать фичу\исправить баг, сложно ли это?
Нет, не сложно. На rubyflow появляется много новостей с реализацией новой библиотеки, вы можете сделать тесты, фичу для него, старые либы также обрастают багами, улучшайте их! пишите код.

14. В чём писать код?
Vim, Sublime Text 2, TextMate, GNU Emacs. Для особо упоротых энтерпрайз-ребят есть rubymine, плагины к эклипс и нетбинс.

Предыдущие треды:
http://2ch.hk/pr/arch/res/19239.html
http://2ch.hk/pr/arch/res/68985.html
http://2ch.hk/pr/arch/res/80926.html
http://2ch.hk/pr/arch/res/85351.html
http://2ch.hk/pr/arch/res/104148.html
http://2ch.hk/pr/arch/res/128968.html
http://2ch.hk/pr/arch/res/172693.html
http://2ch.hk/pr/arch/res/189237.html
http://2ch.hk/pr/arch/res/207421.html
http://2ch.hk/pr/arch/res/222152.html
http://2ch.hk/pr/arch/res/232635.html
http://2ch.hk/pr/arch/res/238928.html
http://2ch.hk/pr/arch/res/247175.html
http://2ch.hk/pr/arch/res/253533.html
http://2ch.hk/pr/arch/res/260762.html
http://2ch.hk/pr/arch/res/266493.html
http://2ch.hk/pr/arch/res/278287.html
http://2ch.hk/pr/res/289681.html

sageАноним Пнд 26 Авг 2013 15:39:46  #2 №313950 

>>313906
>@rails
норм
>@dhh
Пидр заебал со своей политикой и прочей хуетой.
>@yukihiro_matz
Hakuchi и я не понимать.
>@wycats
Заебал выебываться с ember.js. Надо же как-то говно форсить.
>@tenderlove
Феминист.

Хороший языб, но в комньюнити полно уебков.

Аноним Срд 28 Авг 2013 17:53:56  #3 №314597 

у кого spork с rbx-head rubinius из master работает? у меня тормоза пипец с ним.

Аноним Чтв 09 Янв 2014 14:56:01  #4 №315953 

Кто-нибудь игрался с JRuby? Мне очень интересно, почему на моей машине это говно работает медленнее MRI. Например, синтетические циклы с одними и теми же математическими операциями шурукают быстрее на матцовской реализации. В 10 раз! Где же JIT? Где же я увижу разрыв в сторону джаваруби?

Аноним Чтв 09 Янв 2014 17:17:52  #5 №315976 

>>315953
попробуй многопоточные тесты и демоны запускать, а вообще в mri хорошая числодробилка.

Аноним Чтв 09 Янв 2014 17:26:13  #6 №315977 

>>315976
> многопоточные
Ну почти так и было.

Кстати, потребление памяти JRuby доставляет. Может, когда мне нужна будет настоящая многопоточность, я еще раз потыкаю эту хуйню палкой, но пока и так норм.

Аноним Чтв 09 Янв 2014 18:49:25  #7 №315999 

Стоит ли пользоваться turbolinks? У меня на последней версии невебкитной оперы(12.16,запускал на убунте) чё-то с ним не работает вот/такие#ссылки с решётками. Точнее они не работают при одновременном переходе на другую страницу с навигацией на конкретный элемент.

Аноним Птн 10 Янв 2014 20:50:43  #8 №316403 

В общем запутался.
Есть файлик с 100 строками, например, есть сто изображений. Нужно переименовать все изображения в соответствии с каждой строкой файла. Названия изображений неизвестны.

Аноним Птн 10 Янв 2014 21:39:57  #9 №316412 

>>316403
Отмена. В общем заново переписал и заработало, лол.

Аноним Птн 10 Янв 2014 22:21:41  #10 №316422 

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

Короче, в реляционных СУБД есть такая вещь как отображения (view). Помимо того, что они отделяют уровень представления (что теоретически позволяет менять физическую модель не затрагивая внешний интерфейс), они могут быть удобны для создания виртуальных таблиц, содержащих избыточные данные или просто представляющих собой специфические SQL-запросы. И модели в приложении можно строить на такие виртуальные таблицы. Это может быть полезно, когда выразить запрос при помощи ассоциаций сложно или нельзя.
Ну или может это не настолько необходимо, но все равно идея использовать отображения мне почему-то кажется очень классной. Но я никогда нигде не видел, чтобы их использовали. Почему? Не нужны? Когда могут быть полезны на практике?

Аноним Птн 10 Янв 2014 23:44:48  #11 №316447 

>>316422
Ты когда-нибудь пробовал запедалить вьюху? Я пробовал и никаких преимуществ перед обычными запросами не увидел.
Вьюха не позволит тебе сделать процедурные вставки. Вьюха не создаст тебе временное хранилище. Все что сделает вьюха - это позволит сказать, что вот этот вот монструозный запрос с несколькими юнионами теперь называется NewViewName. И чтобы выдать результат этого запроса, сервер все так же каждый раз будет прогонять запрос полностью. Никакого уменшения количества read'ов ты не увидишь.

А теперь вопрос, нахрена все хранить запросы в БД, если над СУБД обычно делают еще один слой, который решает вопросы разграничения доступа? Потому что ни одна СУБД не умеет в оповещения и изменения в таблицах приходится трекать вручную специальной прослойкой.

!!bhk60duj Суб 11 Янв 2014 00:01:35  #12 №316453 

Есть ли прирост производительности в реализациях типа jruby, rubinius etc ree не идет, нужна ветка 2.x? Мой инстанс уже выдает неприличные задержки, на новый денег пока нет

Аноним Суб 11 Янв 2014 00:14:45  #13 №316457 

>>316453
Нет. В бенчмарках они хоть и выдают производительность на уровне MRI, но на деле, в рельсах, оказывается отсос, особенно у рубиниуса.

!!bhk60duj Суб 11 Янв 2014 00:17:25  #14 №316458 

>>316457
Т.е. только ree был шином?

Аноним Суб 11 Янв 2014 00:21:52  #15 №316460 

>>316457
Может потому что рельсы говно?

Аноним Суб 11 Янв 2014 00:24:37  #16 №316462 

>>316458
REE умер. Сам я его никогда не использовал, но в интернетах пишут, что никаких преимуществ в скорости перед MRI 2.0+ у него нету. Так что придется тебе оптимизировать свой код или раскошеливаться на железо получше.

Аноним Суб 11 Янв 2014 00:25:39  #17 №316464 

>>316460
Может быть, но что поделать?

!!bhk60duj Суб 11 Янв 2014 00:30:07  #18 №316465 

>>316462
Лоо, перешел на mri 2.1, обещался приросст производительности на 10%. За счет чего, простите?

Аноним Суб 11 Янв 2014 00:35:36  #19 №316466 

>>316465
В любой статье о новинках 2.1 написано.

Аноним Суб 11 Янв 2014 02:34:58  #20 №316504 
1389393298330.png

>>313906

Противоречие Аноним Суб 11 Янв 2014 04:47:13  #21 №316519 
1389401233831.jpg

Предположим, имеется модель computer, которая embeds_many нескольких моделей наследников hardware. При этом у модели computer есть набор валидаций (энергопотребление системы и мощность БП, совместимость сокетов у CPU и матери, etc). Во время создания сборки предполагается переход пользователя на отдельные страницы со списками комплектующих, которые будут предлагаться на основе совместимости с уже существующими в сборке. Например, есть голая сборка с матерью на LGA 1155 и тогда при переходе на страницу выбора процессора там должны оказаться только процессоры с совместимым сокетом. Для этого, насколько я понимаю, мы должны передать экземпляр сборки в контроллер процессора и на основании имеющихся компонентов применить фильтры. Но тут появляется загвоздка - для передачи сборки нужно сохранить ее в БД, но голая сборка с одной материнкой, без оперативы и БП заведомо неправильна и не пройдет валидацию перед сохранением.
Рассматриваю следующие варианты решения:
1) Убрать валидацию перед сохранением. Не нравится, слишком неорганично.
И все, варианты кончились.
Помоги разрешить противоречие, анон.

Аноним Суб 11 Янв 2014 06:29:19  #22 №316525 

>>316519
Разрешить это противоречие можно качественным переходом на новый уровень - не проводить валидацтю и не сохранять, использовать hardware как есть, на одной матери с жестко заданным сокетом

!!bhk60duj Суб 11 Янв 2014 11:56:37  #23 №316553 

>>316519
validate only: action_name

!!bhk60duj Суб 11 Янв 2014 11:57:51  #24 №316554 

Реально ли найти в дс или дс2 работу джуниору?

Аноним Суб 11 Янв 2014 12:32:06  #25 №316559 

>>313906
анон, хочу податься в веб разработку. Где можно посмотреть годный код-образец, где backend это python или ruby и front-end сделан по последней моде? (какие репозитории в git?)

Аноним Суб 11 Янв 2014 16:25:00  #26 №316655 

я так понимаю у рельсов нет будущего?

Аноним Суб 11 Янв 2014 16:31:22  #27 №316659 

>>316559
Майкл Хартл выстраивает всю книгу в виде построения одной типовой программы, мини-твиттер на бутстрапе. Освещает много смежных аспектов.

Аноним Суб 11 Янв 2014 18:51:41  #28 №316716 

Очень часто бывает такая ситуация, что нужно достать какой-то объект из дб, но прямых ассоциаций нет и приходится тащить всякое ненужное говно. Например, если я на странице хочу отобразить отделения компании, то приходится делать что-то вроде этого:

@departments = current_user.company.departments

Компания мне на этой странице вообще не нужна, но приходится вытаскивать. Что можно сделать, чтобы было лучше? Единственным разумным вариантом кажется что-то вроде такого:


class User < ActiveRecord::Base
has_many :company_departments, foreign_key: :company_id, primary_key: :company_id, class_name: "Department"
end


Стоит ли лепить все эти ассоциации ради двух-трех вызовов в контроллере или есть лучший вариант?
RVM Аноним Суб 11 Янв 2014 22:51:15  #29 №316776 

Срочно-срочно. Объясните, что происходит при установке RVM. Что вот это такое:
>When you log in either via ssh or the local shell account RVM will be loaded as a function.
>loaded as a function
Я не понимаю, что они там мутят с .bash_profile.
Объясните, позязя.

Аноним Суб 11 Янв 2014 22:56:43  #30 №316779 

>>316716
has_many :through же

Аноним Суб 11 Янв 2014 23:01:10  #31 №316781 

>>316716
А вообще мне не очень понятна вся эта свистопляска с эктиврекорд и ассоциациями. Вот, например, есть у нас лента постов. Но вместе с каждым постом подгрузятся и объекты их пользователей. И что мы получим? Если на странице выводим 100 постов разных пользователей, то у нас будет 101 sql-запрос. Не охуеть ли? Где здесь хорошие практики?

Аноним Суб 11 Янв 2014 23:13:08  #32 №316784 

>>316781
Объектно-реляционные мапперы же придумали не для того, чтобы от SQL полностью отказываться? SQL же тоже не просто так существует? Оформить собственный SQL-запрос в виде нового метода в модели - плохая практика?

Аноним Суб 11 Янв 2014 23:20:26  #33 №316788 

>>316784
А нет тогда смысла особого в этих мапперах. Что мне сложно сделать метод с запросом SELECT * FROM users? Или я не понимаю их сути.

Ответь про RVM, а?

Аноним Суб 11 Янв 2014 23:24:52  #34 №316789 

Сегодня, то есть вчера, прослушал парочку докладов по руби, даже скорее больше по ROR.
Они не используют IDE, так как это не имеет особого смысла.
Реализовать полноценный автокомплит там нельзя. Передача параметров в методы имеет несколько вариантов, только недавно появилась возможность указывать параметры по умолчанию. Интерфейсов и тайпхинтинг соответственное отсутствуют.
Класс можно обвесить методами или переопределить в любом месте (здравствуй #define TRUE FALSE). Вроде есть rdoc, но не понятно кто и как им пользуется, они против чёрных ящиков и знают свой код!!!!
Синтаксический сахар делает код непредсказуемым, интерфейс можно узнать только из доки/ читать код библиотек по их же уверением - "может это сразу и не очень понятно".
Прочитали доклад по тому как писать API, я бы сам уволился за такой подход, а там этим гордятся. Главное код получается коротким и красивым, а то что библиотекой не сможет пользоваться даже сам разработчик месяца через два - не важно. И это при принципе "явное важнее неявного".

Приятная игрушка для школьника и студента, ну ещё БЛОГ написать ЗА 15 МИНУТ, не больше. Как осуществлять поддержку такого кода, если его становится вдруг много? Как писать на нём в команде.

Я уже раза три видел, как переписываются проекты с ROR на PHP, кстати DiMA упоминал о том же. Сам даже переписывал небольшую бухгалтерскую системку. Не хотел судить, пока достаточно близко не познакомлюсь с предметом и не поговорю с их разработчиками . Там действительно такой ад, что php-шный говнокод покажется раем!

Аноним Суб 11 Янв 2014 23:25:54  #35 №316790 

>>316781
Почему должны сами собой подгрузиться пользователи? Если не нужны, то и не подгрузятся. А если нужны, то используй Post.includes(:author) и будет 2 запроса.

>>316784
На самом деле, так часто и приходится писать raw sql для запроса. Если не хватает where синтаксиса, можно использовать Squeel (или попросту Arel).

Аноним Суб 11 Янв 2014 23:27:47  #36 №316792 

>>316790
>используй Post.includes(:author)
Ололо я нубское хуйло. Просто почему-то в туториале Майкл Хартл об этом не рассказал.

Аноним Суб 11 Янв 2014 23:31:20  #37 №316795 

Анон, пока ты тут один, ответь за RVM, ну что тебе сложно? Хочешь постою как цапля тута? На одной ноге.

Аноним Суб 11 Янв 2014 23:45:54  #38 №316799 

Мать в детстве часто наказывала меня за ПХП. Говорила, вот я пишу на Руби и ты так делай. Поэтому когда все мои сверстники вовсю создавали свои странички я сидел и дрочил на руби. Потом начали использовать фреймворки разные, устроились в студии, кто-то попал в интересные стартапы, а я в это время учил РоР, так как чистый руби никому не был нужен. Сейчас, когда я могу написать на рельсах блох за 15 минут, мои одноклассники уже купили себе машины и женились на тянках. Такие дела.

Аноним Вск 12 Янв 2014 00:12:28  #39 №316803 

>>316788
Ну тебе тогда не надо определять большинство простейших методов с мапперами. Плюс мапперы должны давать механизмы экранирования.

Про RVM я сам не знаю. Многие команды rvm запускает так, что учитывается, что у тебя за интерпретатор и джемсет. Так используются например при rake тасках нужные джемы и интепретатор, но технических подробностей, как это работает, я не знаю. И вроде при cd в папку с джемфайлом(или ещё чем-то?) она подключает нужные интерпрететор и джемсет автоматически

Аноним Вск 12 Янв 2014 00:23:00  #40 №316806 

>>316803
>И вроде при cd в папку с джемфайлом(или ещё чем-то?) она подключает нужные интерпрететор и джемсет автоматически
Что не работает в capistrano, например, потому нужно использовать rvm wrappers.

Аноним Вск 12 Янв 2014 00:30:58  #41 №316809 

>>316789
Да у тебя же энтерпрайз головного мозга.

Аноним Вск 12 Янв 2014 00:32:54  #42 №316811 

>>316776
Переписывают cd чтобы он детектил и читал рвмовский файл.

Аноним Вск 12 Янв 2014 00:34:25  #43 №316812 

>>316811
А это не опасно?

Аноним Вск 12 Янв 2014 00:40:15  #44 №316816 

>>316812
Опасно, отсюда и ненависть к нему.

Аноним Вск 12 Янв 2014 00:55:13  #45 №316817 

>>316816
К кому? К rvm?

Аноним Вск 12 Янв 2014 00:58:51  #46 №316818 

>>316816
А у меня и без этого шага при установке
>$ source ~/.rvm/scripts/rvm
работает. Чем это опасно?

Аноним Вск 12 Янв 2014 01:01:44  #47 №316819 

>>316818
Только я еще для в настройках профиля терминала галочку поставил Run command as a login shell. Зачем я это сделал?

Аноним Вск 12 Янв 2014 01:09:55  #48 №316822 

>>316817
Да.
>>316818
Закрой и открой терминал снова. Работает?
>>316819
Так он будет запускать оболочку(?) как будто ты только что залогинился. Хотя может я и ошибаюсь.

Аноним Вск 12 Янв 2014 01:14:08  #49 №316823 

>>316822
>Так он будет запускать оболочку(?) как будто ты только что залогинился. Хотя может я и ошибаюсь.
Вот я и не понимаю вообще смысла происходящего, о чем ты говоришь и что мы там делаем при установке, когда выполняем $ source ~/.rvm/scripts/rvm. У меня работает один единственный руби, а больше мне никакие фишки rvm пока не нужны. Скорее всего что-то будет не работать. Можешь объяснить, что при установке делаем?

Аноним Вск 12 Янв 2014 01:20:15  #50 №316826 

>>316823
Ньюфаг чтоли? Если да, то тебе врядли что-то из этого нужно, ты же еще ничего не написал не так ли? Используй, что есть в репах. А если все таки надо, то почему rvm, а не rbenv?

Аноним Вск 12 Янв 2014 01:28:45  #51 №316828 

>>316826
Ньюфаг. Но таки кое-что писал по мелочи. RVM используется на работе, ну и просто исторически я на него первого наткнулся. Просто хочу понять, что мы там делаем. Я еще и с линуксом плохо знаком, не могу понять, что тут http://rvm.io/support/faq#what-shell-login-means-bash-l написано.

Аноним Вск 12 Янв 2014 01:40:34  #52 №316829 

>>316828
rvm добавляет скорее всего эту строчку
>source ~/.rvm/scripts/rvm
в bash_profile (в убунту для этого используется просто .profile насколько я знаю), который баш обычно читает при логине (но не когда ты открываешь терминал), а
>the recommended way is to enable login shell in gnome-terminal
чтобы он читал этот файл каждый раз когда ты открываешь терминал.
Наверное можно перенести строчку
>source ~/.rvm/scripts/rvm
в bashrc чтобы тот скрипт сорсился каждый раз, при этом галочка на
>enable login shell
не нужна. Как-то так. Хз что в рвм изменилось, не трогал его давно.

Аноним Вск 12 Янв 2014 15:01:33  #53 №316908 

Посоны, у меня уже больше полугода багор. Никак не могу собраться с силами и научиться в тестирование. Дело в том, что я как-то раз пробовал тестики пописать, но запнулся на месте, где надо было залогинить юзера, чтобы что-то создать. Он у меня логинился, но сессия пропадала после второго запроса или типа того.
Короче, подскажите, пожалуйста, где подсмотреть код и научиться в нормальное тестирование.

Аноним Пнд 13 Янв 2014 03:13:25  #54 №317197 

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

Аноним Пнд 13 Янв 2014 03:51:46  #55 №317200 

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

Аноним Пнд 13 Янв 2014 11:56:13  #56 №317242 

>>317197

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

Аноним Пнд 13 Янв 2014 14:33:13  #57 №317287 

Посоны, помогите, плиз. Есть, карочи, блог, к постам в нем можно писать комменты и все такое, а нужно сделать так, чтоб по двойному клику на текст коммента или блога в него рендерилась форма изменения этого коммента/поста. Это же нужно делать через паршиалы, но тут возникает вопрос: как их динамически поменять? Ну и, разумеется, проблема в том, что не могу связать ивент и экшен в контроллере. Где ни спрашивал, везде отмахиваются и посылают учить аякс запросы, которые я знаю, а не знаю только, как реализовать вот то, что придумал.

Аноним Пнд 13 Янв 2014 14:38:27  #58 №317289 

>>317197
Чтоб научиться писать хорошие тесты нужно писать много хуёвых тестов. Я тоже по началу бугуртил, а сейчас одно удовольствие от написания и польза от использования, рикамендую.

Аноним Пнд 13 Янв 2014 14:46:13  #59 №317292 

>>317287
Я бы так сделал. Код не проверял. http://pastebin.com/vc2en858

Аноним Пнд 13 Янв 2014 15:49:08  #60 №317311 

>>317292
Выглядит работающе, попозже проверю, но все равно заранее спасибо.

Аноним Пнд 13 Янв 2014 19:02:52  #61 №317385 

>>316908
Ответьте же, ребята.

Аноним Пнд 13 Янв 2014 19:11:33  #62 №317389 

>>316908

RSpec book.

Аноним Пнд 13 Янв 2014 20:33:16  #63 №317420 
1389630796912.png

Где руку на этом языке набивать для фриланса, если живёшь в мухосрани, где даже верстальщики не нужны? Целюсь на одеск, пушто рупараша не нужна.

Аноним Пнд 13 Янв 2014 22:19:55  #64 №317456 

>>317420
http://github.com

FORK
@
PULL REQUEST

Аноним Пнд 13 Янв 2014 23:05:27  #65 №317473 

>>317456
Это печально же, не?

Аноним Втр 14 Янв 2014 02:30:46  #66 №317583 

>>317420

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

sageАноним Втр 14 Янв 2014 05:54:27  #67 №317609 

как начишься делать deep throat и ты сразу сениор лид рубист

Аноним Втр 14 Янв 2014 16:57:48  #68 №317740 

Антош, посоветуй годный гем для работы с com-портом пожалуйста ( ну или метод, аля через жопу ).

p.s: ruby-serialport не канает, гугол показывает хуй по теме.

Аноним Втр 14 Янв 2014 19:09:20  #69 №317797 

>>317740
http://stackoverflow.com/questions/6356565/reading-from-a-serial-port-with-ruby

Аноним Втр 14 Янв 2014 22:06:17  #70 №317877 

>>317797
Да делал я так, Антош, только вот хуйня в том, что мне туда не ASCII надо кидать. Строку я формирую через sprintf получается набор шестнадцатиричных залуп ( 0x0A, 0x0B и тд. ну ты понел ), посылка такого не прокатывает ;(

Если по честному - то пилю следующую хуйню. Есть СКУД, меня заебывает каждый раз доставать свой пропуск, поэтому повесил на сервак СКУД хуйню, которая мониторит моё появление ( телфона моего точнее ) в локалке, а дальше дает команду контроллеру ( который подключен к COM через USB ) открыть мне дверь.
Собственно затык только в отправке команды через COM-порт.
При чем саму команду я сдампал, вот теперь только ебануть её туда и всё.

Аноним Срд 15 Янв 2014 03:00:48  #71 №317945 

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

Аноним Срд 15 Янв 2014 10:37:27  #72 №317979 

>>317945
active record тебе в помощь. можно использовать из без рельс если чо

Аноним Срд 15 Янв 2014 10:38:54  #73 №317980 

>>317945
ещё в голову пришла залупа помимо стандартных active record - data-mapper

Аноним Срд 15 Янв 2014 13:45:15  #74 №318007 
1389779115064.gif

>>317980
то есть мне, неучу, не надо разбираться в синтаксисе SQL и перекладывать часть операций на бд, кроме как получение нужной информации, и нужно просто ебашить чисто руби-код?
Звучит странно, но хочу знать разницу между вычислять нужное в БД и расчитать нужное в приложении. Проекты, например, популярные на гитхабе используют актив рекорд, да, но сука в производстве я видел и голые SQL-запросы посылаемые и вот у меня разрыв шаблона.

Аноним Срд 15 Янв 2014 13:58:23  #75 №318009 

>>318007
Да, ненадо.
Начинай хуярить отсюда http://rusrails.ru/active-record-basics и до обэда...

Аноним Срд 15 Янв 2014 14:04:20  #76 №318010 
1389780260483.jpg

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

Аноним Срд 15 Янв 2014 14:08:50  #77 №318012 

>>318007
Надо быть мудаком, чтобы использовать подобное:
ActiveRecord::Base.connection.execute 'SELECT zalupa FROM body'

хотя если ты не нахуяришь моделей, то так и будешь делать



Аноним Срд 15 Янв 2014 16:01:49  #78 №318063 

>>318012
не, я видел чудовищнее примеры, я выложу в тред, когда найду. Там блять человек абсолютно незнаком с ORM, зато заебашил сотню строк запросов вручную

Аноним Срд 15 Янв 2014 17:03:24  #79 №318082 

>>318007
У тебя задача одноразовая, об оптимизации можно забыть.
Хуярь на DSL и в ус не дуй.

Только один момент - с mass-join или сложными вложенными запросами будет ебала. С другой стороны никто не мешает делать одиночные запросы, раскладывать по переменным а потом оперировать уже ими.

Аноним Срд 15 Янв 2014 21:06:57  #80 №318130 

>>318063
ну дык он и SQL не знает наверняка - взял Navicat и нахуйярил в query builder запросов =)

Аноним Срд 15 Янв 2014 21:31:15  #81 №318136 

>>318130
ну я тоже SQL не знаю, только на уровне ВЗЯТЬ НУЖНЫЕ ДАННЫЕ. Что-то типа или сложнее процедур не писал. Вот например ормы здорово облегчили мне жизнь.

Аноним Срд 15 Янв 2014 21:46:22  #82 №318140 

>>318136
А я вот иногда люблю ебануть хранимую процедурку, а потом передать кусок кода другим кодерам.

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

Аноним Срд 15 Янв 2014 23:12:30  #83 №318177 

>>318140
ооокей, сегодня достаю книжку по SQL и буду дрочить ее до утра

Аноним Птн 17 Янв 2014 18:07:33  #84 №318745 

Делаю бложик в учебных целях. Уже сделал основу, посты и комменты, есть простая система кармы, админская часть. Подскажите еще каких-нибудь идей, пожалуйста.

Аноним Птн 17 Янв 2014 19:10:16  #85 №318758 

>>318745
статистику прилепи, какую страницу больше всех смотрели, залепи статистику комментариев, самые комментируемы статьи, самого флудящего, сделай отправку отчетов на почту/экспорт в CVS/PDF/JPEG, запили инфографики еще к отчетам.

Аноним Птн 17 Янв 2014 23:18:08  #86 №318853 

>>318758
Годная идея, спасибо. Может, ещё что-нибудь?

Аноним Птн 17 Янв 2014 23:21:32  #87 №318854 

>>318745
запили лайки и прочую интеграцию с ф-сбуком и втентаклем

Аноним Птн 17 Янв 2014 23:45:17  #88 №318867 

>>318854
Не хотет это делать, но ладно, запилю.

Аноним Птн 17 Янв 2014 23:59:56  #89 №318873 

>>318867
Кстати, если ты делаешь блог для тренировки, чтобы потом трудоустроиться или левелапнуть зп, а не просто подрочить мозги, то имеет смысл писать всё с тестами, по канонам ТДД. Многие не умеют писать код в стиле "сначала тест" или кодить на бумажке, а потом удивляются почему их унижают на собеседованиях.

Аноним Суб 18 Янв 2014 00:03:46  #90 №318876 

>>318873
посцал на тебя.

Аноним Суб 18 Янв 2014 00:15:07  #91 №318880 

>>318873
>кодить на бумажке
А что значит "кодить на бумажке"?

Аноним Суб 18 Янв 2014 00:32:21  #92 №318882 

>>318880
Написать хоть что-нибудь без компа. Хоть что-нибудь.

Аноним Суб 18 Янв 2014 00:53:48  #93 №318893 

>>318882
А это то зачем?

Аноним Суб 18 Янв 2014 01:00:06  #94 №318896 

>>318893
Это как подготовка перед аналом, только тут для собеседования.

Аноним Суб 18 Янв 2014 01:00:21  #95 №318897 

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

Аноним Суб 18 Янв 2014 01:01:18  #96 №318898 

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

Аноним Суб 18 Янв 2014 01:17:28  #97 №318905 

>>318898
Вообще работодателям похер, используешь ли ты гугель и ждёшь ли ты подсказки после точечки. Работодателю нужно чтобы то, что ты накорябал - работало.

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

Аноним Суб 18 Янв 2014 02:04:20  #98 №318924 

>>318905
Нет такой корреляции. Зато это очевиднейшим образом коррелирует со своевольностью, эгоцентричностью, и таким прочим, а следовательно, велика вероятность, что спокойный и покорный работник из такого человека не получится.

Аноним Суб 18 Янв 2014 02:31:08  #99 №318932 

>>318924
О, насчёт эгоцентричности. Среди рубистов (отечественных, во всяком случае) почему-то на удивление большой процент заносчивых гандонов. Не знаю, чем это объясняется.

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

Аноним Суб 18 Янв 2014 15:13:14  #100 №319026 

Бум

Аноним Суб 18 Янв 2014 19:11:49  #101 №319082 
1390057909409.png

Что делать с пикрилейтед?
http://pastebin.com/kWSc1KQT

sageАноним Суб 18 Янв 2014 19:20:49  #102 №319084 

>>319082
Декодируй с ютф жи

Аноним Пнд 20 Янв 2014 15:33:08  #103 №319682 

Посоветуйте, пожалуйста, какие-нибудь статьи по аутентификации. Желательно без devise и вообще без гемов.

Аноним Пнд 20 Янв 2014 16:05:28  #104 №319688 

>>319682
Юзаешь RoR без гемов? В чем соль расскажи-ка.

Аноним Пнд 20 Янв 2014 16:34:43  #105 №319697 

>>319688
Просто хочу лучше разобраться в аутентификации. Если есть хорошие статьи по аутентификации с devise, то от них тоже не откажусь.

Аноним Пнд 20 Янв 2014 16:43:11  #106 №319699 

>>319697
Я смотрел скринкасты + какие-то мануалы, это не то, что тебе нужно.

Ну а так читай про сессии, там кроме этого вроде и не нужно нихрена.

Аноним Пнд 20 Янв 2014 17:12:33  #107 №319719 
1390223553450.png

Ребят, а как можно просмотреть, сколько памяти жрет та или иная переменная в рубикоде? Например при помощи IDE какой-нибудь, а то я чувствую, что пришло время оптимизировать мою поделку по отчетам

Аноним Пнд 20 Янв 2014 18:05:11  #108 №319742 

Completed 200 OK in 474ms (Views: 38.4ms | ActiveRecord: 432.2ms)
Вот такие сообщения меня очень не радуют. Почему сообщение в чате, обрабатывается настолько долго?

Аноним Пнд 20 Янв 2014 18:19:30  #109 №319746 

>>319742
ох лол
петушки сначала говорят про "фреймворк с человеческим языком", что все такое красивое, няшное, ничего не надо делать, а все есть
а потом вот такие сообщения удивленные

Аноним Пнд 20 Янв 2014 18:37:58  #110 №319758 

>>319746
у меня другой вопрос - рельсы разве подходят для чатиков? Я бы тут другой язык использовал бы.
и если уж и писать чат, то надо блять везде проконтролировать и не рукожопить.

Аноним Пнд 20 Янв 2014 18:46:52  #111 №319765 

>>319758
пишу простой чатик для отработки server-side events

Аноним Пнд 20 Янв 2014 18:49:31  #112 №319766 

>>319742
А можешь код показать?

Аноним Пнд 20 Янв 2014 19:14:07  #113 №319782 

>>319682
railstutorial начиная с 7 или 8 главы

Аноним Пнд 20 Янв 2014 19:15:51  #114 №319783 

>>319766
message_controller.rb
def create
@message = Message.create(message_params)
respond_to do |format|
format.js
end
end

create.js.erb
$('#chat-form').append("<%= j render @message %>")
$('#form').html("<%= j render 'form' %>");

Собственно, все

Аноним Пнд 20 Янв 2014 19:18:56  #115 №319785 

>>319783
Самое интересное, что есть еще
Completed 200 OK in 188ms (Views: 186.2ms | ActiveRecord: 0.4ms)

Аноним Чтв 23 Янв 2014 16:45:14  #116 №320744 

Есть один рельсосайт, там есть пользователи и компании. Если пользоватеь залогинен, нужно добавить поддомен ко всем адресам(<companyname>.domain.com). Никаких проверок не надо, просто если пользователь заходит на domain.com или huichlen.domain.com, редиректить на ту же страницу с правильным поддоменом. Сайт уже написан, так что как это сделать наиболее безболезненно?

Аноним Чтв 23 Янв 2014 19:34:30  #117 №320763 

Рельсаны, есть тупой вопрос.
Есть у меня один check_box_tag в форме с методом :get и не привязанная к ресурсу (форма фильтрации)

Вопрос такой. Как сделать этот чекбокс активным, если его значение присутствует в запросе? Сложность в том, что его значение вложено в другой объект params. то есть:

?filter[color][]=3 #=> params[:filter][:color] = [3] #array

напрашивался такой код


check_box_tag 'filter[color][]', id, (true if params[:filter][:color].includes?(id) )


но когда параметра нет, я получаю ошибку Undefined method includes? for Nil class

что логично. Как это обычно решают?
Аноним Чтв 23 Янв 2014 22:03:45  #118 №320781 

>>320763
if params[:filter] && params[:filter][:color] && params[:filter][:color].includes?(:id)

Аноним Птн 24 Янв 2014 21:16:26  #119 №321017 

>>320781
я сделал так


(params[:filter][:color].include?(id) rescue false)

интересно, что лучше
Аноним Птн 24 Янв 2014 21:22:51  #120 №321019 

>>319783
посмотри в логах в консоли, там же все запросы и время на рендер как всей страницы, так и ПАРШИАЛОВ показывается.

посмотри, сколько записей в таблице. и сколько полей у Message?
погугли в сторону оптимизации на insert для твоей базы, если эти 400мс - это чисто инсерт одной новой записи в таблицу.

Аноним Вск 26 Янв 2014 13:23:24  #121 №321336 

>>320744
Бамп вопросу.

Аноним Пнд 27 Янв 2014 18:38:07  #122 №321728 

>>321336
Тебе тут не только роутинг корячить придется, но и nginx с его location имхо.

Аноним Пнд 27 Янв 2014 23:28:42  #123 №321791 

Ну я прикидываю сделать что-то вроде http://railscasts.com/episodes/221-subdomains-in-rails-3 для роутов, а потом создать before_filter в ApplicationController, где проверять поддомен и редиректить в случае чего. И еще переписать _path/_url методы. Начну позже, сейчас просто варианты прикидываю. Такое взлетит?

Аноним Срд 29 Янв 2014 09:54:20  #124 №321853 

Рубиняши, подскажите ответ. Как в 4 рельсах узнать все поля какой нибудь модели? Так как там появились стронг параметрс, и теперь я не могу вызвать метод attr_accessor и туда записать все имеющиеся поля и заглядывать туда, как что то забуду. Сейчас же надо лезть в контроллер этой модели и смотреть там.

Аноним Срд 29 Янв 2014 10:17:23  #125 №321855 

>>321853
Заюзай http://rubygems.org/gems/annotate

Аноним Срд 29 Янв 2014 11:44:17  #126 №321868 

>>321791
Думаю, что взлетит. Но имхо есть наверное способы и поизящней.

Ебанина с роутингом и гугловой аналитикой Аноним Срд 29 Янв 2014 11:52:50  #127 №321869 

Антуаны, мне вот немного моск рвет. Задача тупая до ужаса - подключить Google Analitycs к сайту. Ебаться с гемами не очень хочется, поэтому просто ебанул js в layout.
Но тут встала другая проблема.
В роутах имеем.
root to: 'welcome#index'
Где welcome index такой:
if ['ios', 'desktop'].include?(current_device)
redirect_to ios_path
else
...
иными словами при входе идет редирект на /zalupa в зависимости от типа устройства, с которого вошли.

В GA указан корень сайта ( welcome index ) и GA тупо не находит на нем своего JS.

Посему вопрос, как сделать единой точкой входа index так, чтобы определялся JS при используемой конструкции с редиректом?

Аноним Срд 29 Янв 2014 21:24:46  #128 №321910 

>>319742
В production будет заметно быстрее. Все в порядке, скорее всего.
>>319783
Никогда не понимал этого подхода. Почему не отдавать json и рендерить его как угодно на клиенте? Через angular, например.
>>320763
check_box_tag 'filter[color][]', id, Maybe(params)[:filter][:color].include?(id)._ # gem Monadic
По-хорошему во вью вообще не должно быть таких проверок. Алсо посмотри Object#try

Аноним Срд 29 Янв 2014 23:28:50  #129 №321929 

>>321869
А для ios другой layout? Если другой, то просто ебнуть ga и туда тоже. Или проблема в чем-то другом?

Аноним Чтв 30 Янв 2014 10:32:43  #130 №321958 

>>321855
Спасибо, Анон.

Аноним Чтв 30 Янв 2014 10:40:59  #131 №321959 

>>321929
layout тот же самый, только партиалы рендерятся другие

смотри, Антош
ты идешь на корень www.zalupa.ru/ , в зависимости от твоих параметров тебя сразу редиректит на /ios,/zalupa,/pipiska и тд., те welcome#index не рендерит никакого ответа, а тупо редиректит.

В GA сайт прописан как http://www.zalupa.ru так как welcome#index не отдает никакого ответа,.то GA не находит своего js и в следствии этого ни хуя не работает.

Прописать в GA каждый /zalupa - идиотизм, их может быть овердохуя.
Рендерить и отдавать какую-нить хуйню в welcome#index - тоже не вариант

Аноним Срд 05 Фев 2014 11:06:49  #132 №323669 

Суп /пр. Вот я например знаю как сделать примитивный аналог пейнта на C# или Java, но там за меня уже написали фреймворки, которые производят обработку нажатий кнопок мыши. Есть ли что то подобное в руби а потом еще как это встроить в рельсы? Получится ли это сделать на чистом руби или надо будет еще использовать жаваскрипт? Да и вообще с чего лучше начать? Хочу сделать пейнт-онлайн, просто чтобы глубже изучить руби и рельсы.

Аноним Срд 05 Фев 2014 12:33:35  #133 №323680 

>>323669
Без js в браузере делать нечего.

Аноним Чтв 13 Фев 2014 15:16:15  #134 №326378 
1392290175724.jpg

Сап, Антуан.
Сломал себе весь моск с кодировками.

И так имеем - мы должны обработать входящую SMS по ключевому слову. SMS передается по SMPP. С приемом-передачей проблем нет.

Когда используется .include? с английской раскладкой - всё ок.
elsif pdu.short_message.to_s.downcase.include? "id"
my_id = (pdu.short_message).split("id")

Теперь перейдем к йобаному русскому языку. Мне приходит в pdu.short_message слово СТОП, далее отрабатывает только 1-ое условие.

if (pdu.short_message) == "СТОП".encode("UTF-16BE").force_encoding("BINARY")
pdu_text_encoded = pdu.short_message
pdu_text_encoded.encode("UTF-8")
puts pdu_text_encoded
logger.info "Pdu short_message text variable in UTF-8: #{pdu_text_encoded}"
end

if (pdu.short_message.downcase) == "стоп".encode("UTF-16BE").force_encoding("BINARY")
puts "works_4"
pdu_text_encoded = pdu.short_message
pdu_text_encoded.encode("UTF-8")
puts pdu_text_encoded
logger.info "Pdu short_message text variable in UTF-8: #{pdu_text_encoded}"
end

Далее самое интересное - путем долгих изъебов удалось установить что мне приходит - см. пикчу
Тоесть 04 21 04 22 04 1E 04 1F это слово СТОП согласно UC2 http://www.columbia.edu/kermit/ucs2.html

Вопрос. Как выполнить условие if (pdu.short_message.downcase) == "стоп".encode("UTF-16BE").force_encoding("BINARY") ?

Аноним Птн 14 Фев 2014 22:02:25  #135 №326826 

Многие советуют отдавать в ajax json и рендерить его яваскриптом. Но ведь
а) вьюхи уже скорее всего написаны до прикручивания ajax
б) рендерить рельсами значительно удобнее $('#yoba).html("<%=j render 'ololo/trololo_partial'%>")

Аноним Птн 14 Фев 2014 22:05:31  #136 №326828 

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

Куда запилить обработку ajax запроса? Пилить отдельный контроллер ради одного index? Пилить глобальный ajax_contoller (насколько это хорошая практика? знакомый постоянно так делает)? Пилить ajax запрос в админку, разруливая его хитрыми роутами? А если бы контролера в админке вообще не было?

Аноним Суб 15 Фев 2014 03:44:13  #137 №326874 
1392421453524.jpg

>>326826
a) JSON как бы компактнее. Но если тебе не нужно обновлять информацию, изменять её и удалять без всяких перезагрузок, то таки скорее всего json тебе не нужен. К тому же, если надо рисовать >100 однотипных записей, то тут JSON выиграет по объему кода.
С другой стороны, если ты работаешь с так называемым "верстальщиком" и он просит JSON, то ему, возможно, виднее.

б) рендерить ангуларом как бы еще удобнее

Аноним Суб 15 Фев 2014 03:49:10  #138 №326875 
1392421750522.png

>>326826
Ах, да, JSON иногда лучше готовить на странице при загрузке, а не грузить AJAX'ом, а уже потом, коль надо, обновлять AJAX'ом.

!xnn2uE3AU. Суб 15 Фев 2014 18:43:01  #139 №327006 

>>326875

Тогда логичнее сразу в страницу HTML вставить по моему.

Аноним Пнд 17 Фев 2014 11:07:20  #140 №327572 

>>323669
Бампану вопрос, а то так и не ответили чтото по существу.

Аноним Пнд 17 Фев 2014 13:36:03  #141 №327590 

>>327572
для онлайн только джаваскрипт.>>327572

Аноним Пнд 17 Фев 2014 15:21:17  #142 №327626 

Анон, умоляю, помоги разобраться пожалуйста.

Есть контроллер upanel
class UpanelController < BaseController

def index
@subscribers = Subscriber.where(project_id: 2).order('created_at desc')
end

def unsubscribe_scum
end

Модели upanel нет, так как это не ресурс.

Есть index-файл:

= form_tag unsubscribe_scum_path, :method => :get do
= form.input :phone_numbers
= form.submit 'Отписать', class: 'btn btn-primary'

Вьюха не реднерится. Ощибка ActionView::Template::Error (undefined local variable or method `unsubscribe_scum

В роутах такое:
resource :upanel do
root :to => "upanel#index"
end

Вопрос - как заствить вьюху работать?

Аноним Пнд 17 Фев 2014 16:56:14  #143 №327651 

>>327626
> resource :upanel do
> root :to => "upanel#index"
> end

Примерно так можно:

root :to => "upanel#index"
resource :upanel do
member do
get :unsubscribe_scum
end
end

> = form_tag unsubscribe_scum_path, :method => :get do
Тут толи upanel_unsubscribe_scum_path толи unsubscribe_scum_upanel_path

Аноним Пнд 17 Фев 2014 16:57:51  #144 №327652 

>>327651
Бля там
collection do
get ...
end

Короче я загоняюсь сам с этой хуйни

Полиморфизм RoR Втр 18 Фев 2014 13:54:02  #145 №327975 

Помогите с полиморфизмом в RoR.

В общем суть такова:

У меня есть таблица, в которой хранятся пользователи. Среди прочей информации там есть поле, хранящее пол пользователя.
ВСЕ мои методы работают одинаково для обоих полов, но отдельно. Т.е. по /woman/ я получаю список всех женщин, по /man/ я получаю список всех парней.

На данный момент сделал 2 модели, в которых:
default_scope where('sex = 1')

А вот что дальше делать хз. Попытался в ApplicatinoController добавить метод:
def index
@users = ApplicationController.where("score > 0").order("score DESC")
end

Но вот что-то ничего не работает, естественно.

В общем вопрос вы поняли, помогите как лучше сделать? А то делать два одинаковых контроллера это совсем по-пидарски.

Аноним Втр 18 Фев 2014 16:20:19  #146 №328041 

>>327975
Ну где же вы, рубиняши?

Аноним Втр 18 Фев 2014 20:23:29  #147 №328154 

>>327975
Во первых не юзай default_scope
Во вторых, нахуя тебе две модели?????

Сделай просто скоупы


class User

scope :male, -> { where(sex: 1) }
scope :female, -> { where(sex: 2) }

end


В третьих
>ApplicationController.where
Шта?

И что за история про два одинаковых контроллера?
Аноним Втр 18 Фев 2014 20:27:31  #148 №328157 

>>328154>>327975
а я кажется понял про контроллеры.

Пусть он будет один - UsersController
Просто роуты свои направь на разные экшны

get 'woman', to: 'users#woman', as: 'womans'
get 'man', to: 'users#man', as: 'man'

А потом такой в Юзер контроллере


class UsersController < ApplicationController
def woman
@users = User.males.to_a
end

def woman
@users = User.females.to_a
end
end
Аноним Втр 18 Фев 2014 22:14:50  #149 №328211 

>>328157
Но у меня там несколько экшенов.

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

Или это нормально?

Алсо почему не юзать default_scope? Не юзать в этом случае или вообще?
Насчет моделей да, ошибся. Твой вариант лучше.

Я просто только учусь ну и попутно пытаюсь что-то сделать. А они везде повторяют про DRY, DRY, DRY, вот и думаю как это нормально сделать то.

sageАноним Втр 18 Фев 2014 22:58:40  #150 №328225 

>>328157
скорее уж так


class UsersController < ApplicationController
def men
@users = User.males.to_a
end

def women
@users = User.females.to_a
end
end
Аноним Втр 18 Фев 2014 23:54:10  #151 №328242 

>>328211
>Но у меня там несколько экшенов.
да сколько угодно. просто ты упомянул про /man/, /woman/, вот я тебе и описал соответствующие экшны.

>Получатся одинаковые методы, которые различаются только вот этим скоупом.
ну они может и похожи, но выполняют разные задачи. ищут мужчин и женщин и рендерят соответсвующие вьюхи, которые наверняка выглядят по разному, раз уж ты их разделил на /mеn/, /woman/
это вполне нормально

>Алсо почему не юзать default_scope? Не юзать в этом случае или вообще?
Юзать только в очень редких случаях. Потому что когда ты установишь его - не факт что тебе не понадобится искать что то БЕЗ него. а отменить его сложно.
Надо писать либо Model.unscoped.where ... - что тоже плохо, потому что испортит запрос через ассоциацию
Либо использовать метод with_exclusive_scope что тоже очень не удобно.
Но самое страшное, что даже если сначала использование default_scope будет казаться нужным, то потом проект может поменяться так, что тебе полюбому придется от него отказаться, и тогда тебе придется переписывать кучу кода.
Это будет сложней, чем просто каждый раз писать User.males или User.females где нужно.

>А они везде повторяют про DRY, DRY, DRY
твое стремление похвально, правда двумя классами ты делал как раз наоборот.

Мой тебе совет - штудировать книгу Rails Antipatterns. Ну и в сомнительном моменте лучше вопросы позадавать, чем говнокодить

Аноним Срд 19 Фев 2014 00:29:58  #152 №328246 

>>328242
Ну вот сомнительный вопрос, я и задал. Я же для себя говнокодю пока что. :)

На книжку посмотрю, спасибо энивей.

Аноним Пнд 24 Фев 2014 22:33:06  #153 №329869 
1393266786167.jpg

Привет, пацаны!

Подскажите, пожалуйста, годный мануал по работе с protocol buffers в ruby. Или сами объясните, как это осуществить?

Аноним Пнд 24 Фев 2014 23:16:37  #154 №329876 

>>329869 пока поставил бибилиотеку beefcake, но если знаете что-нибудь лучше — делитесь.

>>329869-кун

Аноним Срд 26 Фев 2014 08:24:01  #155 №330214 

>>329869
кто на пикрилейтед?

Аноним Срд 26 Фев 2014 17:42:30  #156 №330462 

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

может к тому времени, как окончательно остопиздит текущая работа, я буду более привлекательным ruby-специалистом.

Аноним Срд 26 Фев 2014 18:20:53  #157 №330474 

>>330462
пыху бы выучел лучше внатуре
уже работал бы за $$$, базарю

Аноним Срд 26 Фев 2014 18:22:27  #158 №330475 

>>330474
но я и так работаю за $$$ :с

Аноним Птн 28 Фев 2014 20:08:20  #159 №331257 

Кто здесь проходил туториал Хартла?
В 11 главе создаётся follow/unfollow кнопка для типа-твиттера и пользователи устанавливают взаимодействие через доп. таблицу Relationships (содержит пары follower-followed). Так вот в контроллере Relationship:

def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow!(@user)
redirect_to @user
end

Как в классе находится нужная пара follower-followed по id соединения, если эти пары могут создаваться в случайном порядке и follower_id/followed_id никак не связаны с основным id?
Простите за неровный почерк

Аноним Птн 28 Фев 2014 21:14:34  #160 №331285 

>>331257
Всем похуй, конечно, но уже сам разобрался

Аноним Пнд 03 Мар 2014 08:20:58  #161 №331865 

>>313906
Сап, котаны.
Есть схема бд:

  
create_table "users", force: true do |t|
t.string "login"
t.string "fio"
t.string "email"
t.string "phone"
t.string "adress"
t.datetime "created_at"
t.datetime "updated_at"
end

Чтобы удалить поле логин, мне нужно создать миграцию
rails generate migration RemoveLoginrFromUsers part_number:string

правильно я понимаю?
Можно ли потом удалить этот файл миграции?
Аноним Пнд 03 Мар 2014 08:58:33  #162 №331869 

>>331865
Тогда у тебя не получится rollback далее сделать.

Аноним Пнд 03 Мар 2014 09:20:04  #163 №331870 

>>331869
То есть все эти миграции с удалением, добавлением, обновлением и т.д. так и висят в приложении?

Аноним Пнд 03 Мар 2014 09:37:14  #164 №331875 

>>331870
Да. Да и зачем тебе его удалять?

Аноним Пнд 03 Мар 2014 09:46:24  #165 №331876 

>>331875
Ну это же мусор. В конце концов в этой папке будет висеть овердохуя файлов.

Аноним Пнд 03 Мар 2014 09:54:15  #166 №331877 

>>331876
И еще. Надо ли мне удалять запись login отсюда:

class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :login
t.string :fio
t.string :email
t.string :phone
t.string :adress

t.timestamps
end
end
end
Аноним Пнд 03 Мар 2014 10:34:03  #167 №331886 

>>331877
У тебя есть файл schema.rb, в нем лежит текущая разметка базы. Можно будет все миграции удалить и заменить на один файл, в который скопировать содержимое schema.rb.

> Надо ли мне удалять запись login отсюда:
Файл старой миграции не надо менять, только создать новую.

Аноним Пнд 03 Мар 2014 10:38:11  #168 №331888 

>>331886
Спасибки.

Аноним Чтв 13 Мар 2014 12:17:47  #169 №334368 

пердолюсь Arel. нужно найти groupwise maximum - сгруппировать и найти максимум для каждой группы.
документации по Arel нет. вчера проебал весь день, а мог бы написать запрос sql-строкой за минуты.
в rails google группе нашел дискуссию, где говорят что Arel не для пользователя, а только как прослойка между Active record и db и могут перескочить на что-то другое со временем.
вот я и подумал, не хуйней ли занимаюсь?

Аноним Чтв 13 Мар 2014 23:37:10  #170 №334508 

>>334368 попердолился два дня.


q = MovementsQuery.new(time_range)
q.with_interval(interval).with_account(account)
q.with_geography(geography) if geography


with_* - добавляет к inner query или outer разные joins и subquery joins и constraints.
если делать строками, то запарился бы.
Аноним Птн 14 Мар 2014 02:13:04  #171 №334529 

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

https://www.coursera.org/course/webapplications

Аноним Птн 14 Мар 2014 18:50:47  #172 №334693 

>>316422
Потому что все уеб-программирование имеет родовую травму от Мыскля(mysql), который до недавнего времени не то что вьюхи - джойны-то не всегда работали.

>>316447
Есть такая вещь, как materialized views. Служит для ускорения выборок для отчетов.

А есть такая вещь, как row level security. Делается тоже с помощью вьюх.

Полезность этих вещей для уеб-программистов неочевидна. Они, эти программисты, никогда не видели запросов в 50 строк и больше, и считают, что это НИНУЖНА. Так вот - НУЖНА. Оракл, MSSQL и DB2 всех переживут, все фейсбуки с гуглами.

Аноним Вск 16 Мар 2014 13:32:17  #173 №335253 
1394962337213.jpg

Вопрос по модели БД: необходимо хранить даты рождения (dob) и даты смерти людей, причем даты могут быть до нашей эры, какой тип данных лучше выбрать?

Аноним Вск 16 Мар 2014 15:14:35  #174 №335293 

>>335253
Если до 4713 BC устраивает, то обычный date. Если нет, то interval

Аноним Чтв 20 Мар 2014 10:00:55  #175 №336507 

Сброшу годноты для сопливых нубов
codelearn.org

Аноним Птн 21 Мар 2014 13:24:25  #176 №336896 

Сап, рубач.
Пришлось столкнуться с кодом на руби (до этого только hello world'ы видел), нужно понять, что есть f в этом коде:

(0...2**4).map{|x| f[x[3], x[2], x[1], x[0]] * 1 << x}.inject(&:+)

Аноним Птн 21 Мар 2014 14:53:46  #177 №336940 

>>336896
>что есть f в этом коде:
список или лямбда или proc или хэш или число или любой объект вообще с переопределённым оператором [], удачи.

sageАноним Птн 21 Мар 2014 14:57:28  #178 №336941 

>>336896
f это то, что стоит справа в выражении "f = ..."

Аноним Птн 21 Мар 2014 15:22:01  #179 №336950 

>>336940
Спасибо
>>336941
Ты у мамы сегодня умник?

Аноним Чтв 27 Мар 2014 08:21:28  #180 №338706 

Господа, появился вопрос, подскажите, будьте добры.
Я не так давно вляпался в Рельсы, так что суть проста:
Нужно подхватывать из БД 3 случайных записи, конкатенировать их, записывать в БД получившийся результат и добавлять +1 на счетчик. Правильно ли я понимаю, что это будет пять запросов к БД: 3 на каждую случайную запись из БД,1 на запись результата и 1 на "+1"?

Если нет, то как будет правильнее и короче?

Это я собираюсь сделать на Рельсах, если это важно, а не на голом руби.

Спасибо.

Аноним Чтв 27 Мар 2014 08:46:59  #181 №338708 
1395895619627.png

>>338706

Shit.order("RAND()").first(3)
Скакатенируешь и счетчик обновишь сам.

Аноним Чтв 27 Мар 2014 08:54:02  #182 №338709 

>>338708
>>Shit.order("RAND()").first(3)
То есть он будет хватать три случайных записи одним запросом?

Аноним Чтв 27 Мар 2014 08:55:46  #183 №338710 

>>338709
Ну по идее да, не проверял.

Аноним Чтв 27 Мар 2014 08:56:24  #184 №338711 

>>338710
Вечером проверю, спасибо.

Аноним Чтв 27 Мар 2014 09:46:39  #185 №338717 
1395899199297.jpg

вощем ваш руби такое гавно как PHP
вечно варнинги небось выдает да ерооры
на такое гавно после perl очень противно переходить
то что на perl отлично работает на руби с ПХП ерроры выдает
заебешся переделывать
ну и кнопок намного больше жать
мучение сплошное

Аноним Птн 28 Мар 2014 13:18:12  #186 №338992 

>>338717
Пахнет диваном

Аноним Птн 28 Мар 2014 13:23:09  #187 №338995 

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

Аноним Птн 28 Мар 2014 14:34:29  #188 №339013 

многие толковые rails хакеры пишут, что могут в backend и frontend и называют себя full stack кодерами.

backend - грубо говоря то, что называют computer science. алгоритмы, database optimization, distributed computing..
немного не понимаю frontend. я думал, это больше дизайнерская работа. но у меня как-то не укладывается, как бородач с phd пишет css и js для какой-то менюшки или крутой кнопки. если я использую backbone.js, еще не значит, что я frontend developer?
объясните.

Аноним Птн 28 Мар 2014 14:50:57  #189 №339022 

>>339013
>rails хакеры
заправщиков катриджей тоже можно хакерами называть? я 1c-хакер, я гуру wordpress ололо

Аноним Птн 28 Мар 2014 14:54:42  #190 №339024 

>>339022
у тебя какая зарплата?

Аноним Птн 28 Мар 2014 14:56:47  #191 №339026 

>>339024
300$. сутки через трое

Аноним Птн 28 Мар 2014 15:06:46  #192 №339036 

>>339022
думаю можно, сейчас в принтерах разные защиты от заправки.
пусть не хакер, а хороший кодер.
но те кто пишут рельсы, а пишут все кому не лень, разбираются в внутренностях которые не документированы и как интерпретатор ruby устроен. rails не какая-то там маленькая библиотека.

Аноним Пнд 31 Мар 2014 17:51:40  #193 №339966 

Анон, поясни за check_box_tag в HAML и его проверку.

Имеем во вьюхе:

%h1 Тест123
= check_box_tag 'mt', 'yes',false
= link_to 'Test'.html_safe, generate_bricks, class: 'btn btn-default'


Далее требуется проверить состояние чекбокса в контроллере после сабмита.

Для начала пробую проверить, передается ли параметр - puts params[:mt].present?
в результате получаю nil хотя checkbox отмечен.

ЧЯДНТ?

Аноним Пнд 31 Мар 2014 17:53:55  #194 №339968 

>>339966
*селффикс

Проверяю так:
if params[:mt].present?
puts params[:mt].inspect
end

при тупой puts params[:mt].inspect получаю nil

Аноним Пнд 31 Мар 2014 20:47:41  #195 №340005 
1396284461709.png

>>339966
>generate_bricks

Аноним Втр 01 Апр 2014 00:04:02  #196 №340069 

>>339966
Ты нажимаешь на простой линк и ожидаешь, что у тебя форма за сабмитится?

Аноним Втр 01 Апр 2014 06:48:29  #197 №340151 

>>340069
Прости бро, это я вчера упоролся чутка.
Ща ебану через form_tag.

Аноним Втр 01 Апр 2014 10:39:46  #198 №340166 

>>339966
*селффикс 2
= form_tag generate_bricks, :method => :get do
Quad bricks
= check_box_tag 'quad', 'yes',false
Round bricks
= check_box_tag 'round', 'yes',false
= submit_tag 'Отгрузить', class: 'btn btn-primary'

Аноним Втр 01 Апр 2014 15:41:42  #199 №340230 

Антош, подскажи пожалуйста, могу ли я узнать, какой id будет назначен записи в БД при использовании метода first_or_initialize?
[CODE]
book = Books.where(number: "0374180660").first_or_initialize
if book.new_record?
????
end
[/CODE]

exe na exe Аноним Втр 01 Апр 2014 16:16:18  #200 №340252 
1396354578168.png

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

exe na exe Аноним Втр 01 Апр 2014 16:18:04  #201 №340253 
1396354684411.jpg

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

Аноним Втр 01 Апр 2014 16:19:24  #202 №340254 

>>340253
блять как тему создать

Аноним Втр 01 Апр 2014 18:08:53  #203 №340288 

>>340254
Пошёл нахуй из Православного треда!

Аноним Втр 01 Апр 2014 18:26:40  #204 №340303 

>>340230
А зачем? То что ты хочешь сделать,скорее всего делается по-другому?

Аноним Чтв 03 Апр 2014 17:05:02  #205 №340971 

>>313906
Сап, котаны. Диплом уже не за горами, а у меня еще нихуя не сделано.
Насоветуйте мне cms на ruby для написания интернет-магазина или подскажите где можно спиздить готовый магазин.

Аноним Чтв 03 Апр 2014 17:10:31  #206 №340977 

>>340971
Разве суть дипломной работы не в том, чтобы самому написать cms для интернет-магазина? Или у вас там всем похуй и не проверяет никто, главное чтоб работало? Так-то можно spree накатить, там уже все готово, даже контент залит.

Аноним Чтв 03 Апр 2014 17:14:05  #207 №340980 

>>340977
Шарага же. Времени на написание диплома нихуя нет, вот и приходится ускорять процесс. Пока что нашел только http://synergycommerce.ru/ из русского. Spree лучше будет?

Аноним Чтв 03 Апр 2014 18:26:25  #208 №341018 

>>340980
Synergy это надстройка над spree. Если тебе нужно побыстрее - ебашь на синерджи.

Аноним Чтв 03 Апр 2014 18:59:02  #209 №341038 
1396537142309.jpg

>>341018
Окей.

Аноним Птн 04 Апр 2014 01:18:02  #210 №341137 
1396559882356.png

Блжад, у меня ядерный багор, анончик. Учу рельсы самостоятельно, думал уровень джуниора есть, как минимум, решил работку найти. Нашел вакансию, отписался, прислали тестовое задание пикрелейтед. Сделал часов за 6-7, написал, что ему что 7 часов заняло, а мне в ответ "Аноннейм, с такой скоростью вам надо пока видимо бесплатно работать". Ну пиздец, у меня бомбит теперь. Не, я понимаю - 7 часов может быть дохуя для опытного человека, но где мне опыта набраться, если никуда не берут? Думал у нас кадровый голод в айти и обучаемому человеку можно устроиться, пусть за небольшие деньги. Я в печали, неужели 7 часов - это так много? Утешь меня, ананас, ну или говном покорми.

Аноним Птн 04 Апр 2014 01:33:42  #211 №341146 

>>341137
>часов за 6-7
Как же я проиграл. Кстати, кто мешал тебе спизднуть, что ты справился за 3 минуты?

>но где мне опыта набраться, если никуда не берут?
Писать всякую хуйню самостоятельно, джуниор ты билять комнатный?

Аноним Птн 04 Апр 2014 02:01:39  #212 №341151 

>>341137
Единственная твоя ошибка - что ты позволяешь этому отбирать у тебя время, нервы, и вычислительный ресурс.
Об говно не надо спотыкаться - его надо переступать или обходить стороной. Ищи дальше.

Аноним Птн 04 Апр 2014 02:14:51  #213 №341155 

>>341146
Смысл врать? Я этого не люблю. Работа у меня есть, я развиваться просто хочу в другом направлении и работа рубистом мне именно для этого. На данном этапе на деньги практически пох. Писать хуйню самостоятельно я могу, но я как в вакууме - сделал, не сделал, хорошо сделал, плохо - всем похуй, нету фидбэка, не от чего оттолкнуться и непонятно в каком направлении грести.
>>341151 Да не, я не чувствую себя униженным там и не думаю, что он так самоутвердиться хотел, просто, по всей видимости, я недооценил требования в профессии

Аноним Птн 04 Апр 2014 14:30:53  #214 №341263 

>>341137
Хорошо, что ты не пошёл в ту контору, сразу видно что они неадекваты. А какой-никакой опыт от выполнения задания ты получил, следующее гораздо быстрее сделаешь. Ищи дальше работу, скоро найдёшь.

Аноним Птн 04 Апр 2014 15:07:47  #215 №341272 

>>341155
Неужели ты не понимаешь? Это для джуниора работа на час максимум.
Ты оправдываешься, а значит ты неправ.

Аноним Птн 04 Апр 2014 15:07:47  #216 №341273 

>>341263
А почему они кстати неадекваты? Задание относительно простое.
Только слишком много верстки, непонятно зачем на неё столько внимания в тз.

Аноним Птн 04 Апр 2014 15:55:40  #217 №341281 

Что делать, если получил первый отзыв плохой на одеск? Заказчик написал, что типа хороший программист, но сорвал дедлайн. Что делать?

Аноним Птн 04 Апр 2014 15:56:46  #218 №341283 

>>341281
Каковы шансы на дальнейшие сделки?

sageАноним Птн 04 Апр 2014 17:54:42  #219 №341337 

Какое-то ебануто задание.

Аноним Вск 06 Апр 2014 08:01:36  #220 №341709 

Написал первый скрипт на Ruby. http://pastebin.com/MnKezHZJ
Конвертирует csv файл в xml по шаблону вида:

<awdawd>
<ghkj>%{1}</ghkj>
<vb>%{2}</vb>
<cvbn>
<bnm>%{3}</bnm>
<zxc>%{4}</zxc>
</cvbn>
</awdawd>

Ни одного знакомого рубиста. Прошу критики.
Аноним Вск 06 Апр 2014 12:57:51  #221 №341749 

>>341709
Отступ 2 пробела обычно.


unless options[:output]
outputFilePath = options[:input] +'.xml'
else
outputFilePath = options[:output]
end

на такое

outputFilePath = unless options[:output]
options[:input] +'.xml'
else
options[:output]
end

или такое

outputFilePath = options[:output] || options[:input] +'.xml'



values = {}
row.each_with_index do |value, index|
values[:"#{index}"] = value
end

на такое

Hash[row.map {|x| [:"#{x}", x]}]


А так, что критиковать. Одноразовый скрипт же.
Аноним Вск 06 Апр 2014 17:32:41  #222 №341817 

>>341749
И замени принты на puts'ы где надо

Аноним Пнд 07 Апр 2014 03:01:50  #223 №341937 

>>341749
Забрал вариант

outputFilePath = options[:output] || options[:input] +'.xml'

>принты на puts
А я думал, чому у одних посанов print везде написано, а у других puts. Матчасть, как обычно не читал. Торопился.
Аноним Пнд 07 Апр 2014 03:05:49  #224 №341938 

>>341806
Я как то сразу подумал, что авторы хотели запилить свой питон.

Аноним Пнд 07 Апр 2014 05:35:35  #225 №341958 

Привет, рубяши. Пришло на Одеске приглашение на ruby programmer position. Причем именно руби, без рельсов. Есть идеи, что там может быть за кодинг?

Аноним Вск 13 Апр 2014 19:27:32  #226 №344034 

Привет, ананасы, я столкнулся с проблемой и прошу вас помочь. Проблема такова: поскольку я студент-первокурсник, нормальную работу программиста на бэкенде найти не могу, и кодить дома мне еще придется некоторое время перебиваюсь версткой и клиентской стороной, которую доверяют, я стою на месте и не развиваюсь. Прошу дать совет, где можно вычитать новой инфы по методам программирования всяких полезных штук в руби и рельсах, можно только в рельсах. Я делаю свой блог уже второй месяц в свободное время, сейчас реализовано почти все основное (аякс, сокеты, wysiwyg-редактор даже приделал, хотя не очень разобрался, как он работает). Мне кажется, я стою на месте уже некоторое время, не могу точно сказать сколько; да и неспособность нормально разобраться в документации redactor-rails немного расстроила. В базовых вещах я разбираюсь, мне нужно что-то уровня intermediate и выше. Заранее спасибо за помощь.

Аноним Пнд 14 Апр 2014 02:37:55  #227 №344145 

>>344034
Блог он два месяца делает. Вордпресс устанавливается ровно 5 минут, 3 из которых на скачку по мухосранскому интернету.

Аноним Пнд 14 Апр 2014 12:16:52  #228 №344179 

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

Аноним Пнд 14 Апр 2014 17:56:29  #229 №344243 

>>344179
Забей на него, ты всё нормально делаешь. Только попробуй не блог, а что-нибудь ещё сделать, посложнее.

Аноним Пнд 14 Апр 2014 19:03:10  #230 №344256 

>>344179
Как ты используешь сокеты в своём блоге, расскажи пожалуйста.

Аноним Пнд 14 Апр 2014 22:05:15  #231 №344310 

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

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

Вот два стека, по сути сюда нужно что то дописать.

class DblStack
DEF_SIZE = 7

def initialize(size = DEF_SIZE)
@array = Array.new(size)
empty
end

def empty(stack = nil)
case stack
when nil
@head0 = @head1 = 0
when 0
@head0 = 0
when 1
@head1 = 0
else
raise 'Wrong stack'
end
end

def empty?(stack = nil)
case stack
when nil
@head0 == 0 and @head1 == 0
when 0
@head0 == 0
when 1
@head1 == 0
else
raise 'Wrong stack'
end
end

def push(stack, val)
raise 'Stacks are full' if @head0 + @head1 >= @array.size
case stack
when 0
@array[@head0] = val; @head0 += 1
when 1
@array[@array.size - @head1 - 1] = val; @head1 += 1
else
raise 'Wrong stack'
end
end

def pop(stack)
case stack
when 0
raise 'Stack is empty' if @head0 <= 0
@head0 -= 1; @array[@head0]
when 1
raise 'Stack is empty' if @head1 <= 0
@head1 -= 1; @array[@array.size - @head1 - 1]
else
raise 'Wrong stack'
end
end

def top(stack)
case stack
when 0
raise 'Stack is empty' if @head0 <= 0
@array[@head0 - 1]
when 1
raise 'Stack is empty' if @head1 <= 0
@array[@array.size - @head1]
else
raise 'Wrong stack'
end
end
end
Аноним Втр 15 Апр 2014 13:01:06  #232 №344428 

>>344256
Я использую сокеты, чтобы не нужно было перезагружать страницу поста, чтоб обновились комментарии.
>>344243
Что можно сделать посложнее? Я начал делать блог потому, что в нем можно наибольшее количество всяких ништяков реализовать, как мне показалось.

Аноним Втр 15 Апр 2014 21:02:50  #233 №344529 

>>313906
Нубище на связи.

Что скажете об этом для начала изучения? http://railstutorial.ru/
Немного могу в ООП и MVC (2 года работаю с Друпалом).

Аноним Срд 16 Апр 2014 17:18:31  #234 №344798 

№344529
Годный туториал

Аноним Суб 19 Апр 2014 00:31:54  #235 №345544 

Это нормально, что в гайдах (конкретно, Why's poignant guide to ruby) код не рабочий? Вот взялся повторить пример, оказалось, что если делать require, локальные переменные не переносятся, а у него написана именно локальная. Сделал глобальную - сразу все заработало. И такие примеры довольно часто встречаются.
Или это автор так заставляет меня самостоятельно исправлять ошибки?
Только начал учиться программированию

Аноним Суб 19 Апр 2014 01:08:29  #236 №345551 

>>345544
выкинь эту хуйню вместе с рубями лол и возьми нормальную книгу

Аноним Суб 19 Апр 2014 16:44:22  #237 №345690 

>>345551
Я уж эту закончу сначала. Тем более, в оп-посте ее советуют.

Аноним Суб 19 Апр 2014 16:50:47  #238 №345694 

>>345544
она для руби 1.8

Аноним Суб 19 Апр 2014 17:40:20  #239 №345715 

>>345694
код для руби 1.8 не работает в руби 1.9
MAXIMA UNTERMENSH

Аноним Суб 19 Апр 2014 17:57:32  #240 №345719 

>>345694
А, все понял, спасибо. Если что-то не работает, просто буду смотреть в актуальную документацию.

Аноним Суб 19 Апр 2014 20:27:25  #241 №345752 

>>344034
Мне очень помогла книга Rails Antipatterns и параллельное углубленное изучение руби. Особенно книга metaprogramming ruby. Рикаминдую. И найди работу уже

Аноним Суб 19 Апр 2014 20:31:15  #242 №345753 

>>345715
об этом давно известно, покажи мне лучше язык который совместим между версиями\стандартами.

Аноним Суб 19 Апр 2014 21:43:20  #243 №345771 

>>345690
>в оп-посте ее советуют
Охуенный аргумент. Это книга для дегенератов и хипстеров хотя это одно и тоже. Что-то из разряда книжек head first.

Аноним Суб 19 Апр 2014 23:10:36  #244 №345801 

>>345753
С++

Аноним Суб 19 Апр 2014 23:56:49  #245 №345808 

>>345801
толсто.

sageАноним Вск 20 Апр 2014 01:31:16  #246 №345835 

>>345808
попизди мне тут

Аноним Вск 20 Апр 2014 01:59:54  #247 №345842 

>>345753
Явка же

Аноним Вск 20 Апр 2014 03:16:18  #248 №345846 

>>345753
Python

Аноним Вск 20 Апр 2014 10:15:57  #249 №345860 

>>345842
в 1.4 уже не компилируются, те кто больше.
>>345846
2й с 3йм никак не совместим

Аноним Вск 20 Апр 2014 13:34:34  #250 №345881 

>>345860
А разве они не держат либы еще с третьей версии?
Ну и в любом случае поддержка старых версий там самая наверное обширная, энтерпрайз же

Аноним Вск 20 Апр 2014 14:01:16  #251 №345889 

>>345881
>А разве они не держат либы еще с третьей версии?
кто они? оракл? просто 1.8-1.5 не совместима с 1.4 <

Аноним Вск 20 Апр 2014 16:09:56  #252 №345912 

>>313906
Стоит ли задрачивать руби, хуярить на нём что-то большое и сложное, или лучше задрочить рельсы и хуярить на них? Хочу устроиться джуниором, думаю, руби изучил неплохо, но чего-то весомого чисто на руби не делал. Может и не стоит, руби без рельсов нужны вообще?

Аноним Вск 20 Апр 2014 20:47:07  #253 №345996 

>>345912
>Может и не стоит, руби без рельсов нужны вообще

Аноним Вск 20 Апр 2014 20:59:32  #254 №346003 

>>345860
Четвертая в 2002 году вышла. Не очень корректное сравнение.

Аноним Пнд 21 Апр 2014 05:00:04  #255 №346142 

>>345771
Я не умею даже то, что там есть, так что без разницы, кто введет в курс дела.

Аноним Пнд 21 Апр 2014 10:48:53  #256 №346179 

Есть строка. В ней фамилия, имя, отчество, разделены пробелами. Есть ли более кошерный способ привести её в формат "Фамилия инициалы", кроме как разбить в массив по словам и джва последних элемента заменить на первую букву+точка и потом склеить в строку?

Аноним Пнд 21 Апр 2014 13:15:44  #257 №346197 

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

Аноним Пнд 21 Апр 2014 13:23:22  #258 №346198 

>>346179
Взять срез от пробела до пробела и первый символ по индексу? Или в руби так нельзя?
питонщик мимопроходил

Аноним Пнд 21 Апр 2014 18:01:54  #259 №346260 

>>346198
Неплохой вариант. Правда выясняются некоторые особенности, в частности - перечень всяких "оглы" и иже с ними, которые обрезать до первой буквы ессна ненадо. Ну и еще некоторые особо упоротые в двойных фамилиях дефис пробелами отделяют, тоже учитывать...

Аноним Пнд 21 Апр 2014 20:11:13  #260 №346333 
1398096673083.png

>>346260
Припекло

мимо-оглы

Аноним Пнд 21 Апр 2014 20:43:26  #261 №346349 

http://javadocmd.com/blog/let-the-type-system-do-the-work/


class Player(var position: Vector2, var size: Vector2)
val player = new Player(new Vector2(100, 100), new Vector2(50, 50))

пол года спустя забываешь где у него position, а где size.

что бы не ошибаться

class Size < Vector2; end
class Position < Vecor2; end
Player(Position pos, Size soze)


в Ruby я вспонил про named arguments.
Player.new(position: position, size: size)
но вот беда с объявлением метода для того, что бы named args работали нужно указать значения по умолчанию:

def initialize(position: nil, size: nil)..

криво как-то.

но есть metaprogramming:

def self.define_method(annotation, &block) ...
define_method(position: :kind_of_position, size: :kind_of_size) do ...
вроде норм теперь.
Аноним Пнд 21 Апр 2014 20:50:48  #262 №346354 

>>346349 ох, то-есть
define_method(:initialize, position: .., size: ..)..

хотел спросить, кто-то использует что-то такое? super_duper_define_method написать не сложно, но может уже есть что готовое?

Аноним Пнд 21 Апр 2014 21:19:15  #263 №346371 

>>346349
>для того, что бы named args работали нужно указать значения по умолчанию:
не обязательно. можно так def foo(a:, b:42) и так далее. То есть запятая вместо значения по умолчания ебануто да, проебали руби

Аноним Пнд 21 Апр 2014 22:43:24  #264 №346407 

>>346371
спасибо

нашел вот type checker для ruby:
http://www.cs.umd.edu/~jfoster/papers/oops13.pdf

typesig "self.find: (Integer) -> User"
def self.find(id) ...

Аноним Вск 27 Апр 2014 14:02:03  #265 №348146 

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

Аноним Вск 27 Апр 2014 16:43:32  #266 №348191 

>>348146
Любой популярный гем

Аноним Вск 27 Апр 2014 23:07:14  #267 №348313 

>>317583
А кем оплачиваться это будет?

Аноним Срд 30 Апр 2014 11:43:29  #268 №349385 

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

Аноним Срд 30 Апр 2014 15:41:22  #269 №349426 

>>313906
Чем Ruby лучше Python?

Аноним Срд 30 Апр 2014 15:41:54  #270 №349427 

>>349426
Не лучше.

Аноним Срд 30 Апр 2014 16:30:27  #271 №349439 

>>349426
>Чем говно лучше мочи?

sageАноним Срд 30 Апр 2014 17:06:46  #272 №349447 

>>349439
моча может согреть тебя
пописай в кострюлю и сразу макни ступни
отвечаю еще захочешь

sageАноним Срд 30 Апр 2014 17:16:53  #273 №349451 
[url]

>>349447
алсо
не посмотрел в какой тред пишу

Аноним Срд 30 Апр 2014 17:25:26  #274 №349453 

>>349447
Но из говна может получиться сытный и питательный обед.

sageАноним Срд 30 Апр 2014 17:27:59  #275 №349455 
[url]

>>349453
тпгда сделай из джявытм обед

Аноним Суб 03 Май 2014 14:18:17  #276 №350160 

Помогите нубу, почему ruby не выполняет код?
a=gets
b=gets
c=a*b
puts c

Аноним Суб 03 Май 2014 15:03:19  #277 №350169 

Вот вывод:
cant convert String into Integer (Type error)
from C:\Users\user\ruby\newdocument.rb:3:in '(main)'

Аноним Суб 03 Май 2014 15:11:47  #278 №350179 

>>350177
Огромное спасибо.

Аноним Птн 09 Май 2014 12:36:49  #279 №351861 

Тред явно мертвый, но спрошу.

Как освоить ActiveRecord и ассоциации? Ничего не понимаю, не могу понять как это работает. Слишком много всего, что нельзя понять а приходится запоминать, соответственно не могу делать сложные связи/выборки, делаю все неэффективно и наобум. Нигде ничего не написано, во всех гайдах и доках только КОКОКО хезмэни-белонгсту, инклюдс-джоинс. Чего несут блять поехавшие? Нахуй мне эта ебаная простыня методов без понимания, как это работает.

Аноним Птн 09 Май 2014 13:19:09  #280 №351870 

>>351861
Почитай чутка про SQL, связи между таблицами, оные джойны и т.п.
AR лишь няшная обертка над всем этим.

Аноним Птн 09 Май 2014 13:34:11  #281 №351874 

>>345752
Грасиас, сеньер

Аноним Птн 09 Май 2014 18:56:12  #282 №351947 

>>351870
Да я вроде нормально в SQL разбираюсь. Я не понимаю что происходит в рельсах, когда начинаются сложные запросы.

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

Аноним Птн 09 Май 2014 19:39:13  #283 №351955 

>>351947
Читай metaprogramming in ruby, там поясняются за АР. Да и вообще есть другие орм, бери и пользуйся.

Аноним Птн 09 Май 2014 20:59:01  #284 №351973 

>>351947
Приведи пример цепочечной ебалы. Явно делаешь что-то не так.

ХоХо Суб 10 Май 2014 10:46:15  #285 №352124 

Привет аноны
Тут вопрос: как с нуля поставить окружение на чистый впс для развертывания рельсового приложения. В линухе понимаю на уровне лс, кат и еще кой-какой мелочи. И как развернуть? Тут вижу место для новичков есть? Так что хотелось бы помощи, а не анального вторжения

Аноним Суб 10 Май 2014 20:17:55  #286 №352254 

>>352124
Изучи линукс сначала, хотя бы на уровне - структура файловой системы, создать-удалить юзера, права на запись-чтение-исполнение. А потом уже брать capistrano и разворачивать.

Аноним Вск 11 Май 2014 01:40:01  #287 №352362 

>>352124
Два года назад начал писать туториал для хабра, возможно что-то устарело уже. Ну и он недописан, продолжение частично по ссылке.
http://pastebin.com/Zm6jE9az
По результатам у меня был настроен продакшн сервер с нулевым временем редеплоя и синхронизацией с битбакетом.

XoXo Вск 11 Май 2014 18:16:09  #288 №352460 

>>352362
спасибо! то что нужно.

Аноним Срд 21 Май 2014 18:42:31  #289 №354939 

Господа, помогите, пожалуйста, найти в исходниках штуку, которая превращает where, join, order и т.д. в SQL.

Аноним Срд 21 Май 2014 19:06:02  #290 №354941 

>>354939
вся суть рельсоблядей, зазубрили магию своего фреймворка, а в кишки залезть не в состоянии

Аноним Срд 21 Май 2014 19:25:01  #291 №354946 

>>354939
arel

Аноним Срд 21 Май 2014 21:44:31  #292 №354977 
1400694271459.jpg

>>354946
Спасибо!

>>354941
Времени мало, чтобы самому там копаться. Да и туповат я

Аноним Птн 23 Май 2014 13:45:24  #293 №355462 

Посоны, я буквально на днях начал делать первый сайт на рельсах и у меня вопрос. В туториалах пишут про миграции, как способ наращивания БД. Однако в начале разработке база будет меняться очень часто и я не хотел бы плодить миллион миграций. Как мне это сделать?

Аноним Птн 23 Май 2014 14:02:27  #294 №355466 

>>355462 плоди миллион миграций.
позже:
rake db:schema:dump
rm -rf db/migrate/*

Аноним Птн 23 Май 2014 14:20:00  #295 №355469 

>>355466
Окай, спасибо. Так и сделаю наверное.

Аноним Птн 23 Май 2014 18:58:53  #296 №355551 

>>355469
Тебе что мешают эти файлы?
Не слушай того анона выше. Если уж удалять, то делать это частично и ручками, а не так хардкорно как он тебе предложил.

Аноним Птн 23 Май 2014 19:57:46  #297 №355582 

>>355551
сегодня день тупых людей? то один утверждал что так надо, не пытаясь задать себе элементарный вопрос - "почему?"
вот еще один. зачем тебе древние migrations?

Аноним Птн 23 Май 2014 20:43:31  #298 №355596 

>>355582
Буду ими обмазываться и дрочить.

sageАноним Птн 23 Май 2014 20:52:22  #299 №355602 

>>355596
ну ты программист.

Аноним Вск 25 Май 2014 02:49:34  #300 №355823 
1400971774773.jpg

>>355462
В начале разработки (правда, разработка была в одно лицо) я делал одну миграцию с созданием всех таблиц сразу, рыба создавалась из seeds.rb, и был запилен таск, подцепляющий все нужные таски, чтоб можно было в одну команду пересоздавать бд и наполнять рыбой.

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

Аноним Втр 27 Май 2014 10:38:10  #301 №356509 
1401172690885.jpg

Heroku vs DigitalOcean на какой стул сесть? И подскажите какой нибудь сервис для защиты от дудоса.

Аноним Втр 27 Май 2014 12:18:06  #302 №356532 

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

Аноним Втр 27 Май 2014 12:20:24  #303 №356533 

>>356509
digitalocean конечно же, там всё сам накатываешь, делаешь как нужно, а не хероку, которое если что-то не так то будешь сидеть и думать, что же блять они от меня хотят. И да в океане у тебя всё бесплатно, кроме сервера, то есть редис, постгрес, эластик, а в хероку это деньги и не малые. Ну и дижиталокеан вроде новее дистры, а на хероку раньше был древний говнодибиан

Аноним Втр 27 Май 2014 13:08:26  #304 №356541 

>>356537
с минимум конфигураций

Аноним Втр 27 Май 2014 13:08:54  #305 №356542 

Двачую digitalocean или любой другой VPS. Хероку дорогой и, по моим ощущениям, пердолинга там не меньше чем при настройке собственного VPS. Нужно выбирать и настраивать внешнее хранилище, делать специфические настройки для приложения, заниматься еще какой-то хуйней, и все это за какие-то страшные деньги – двухъядерный dyno с гигом памяти стоит ебаных 35 баксов/месяц, плюс еще постгрес минимум за 9.

Аноним Втр 27 Май 2014 13:38:51  #306 №356551 

>>356532
>>356533
>>356542
Спасибо, рубиняшы. Но проблемка в том, что я ни разу не деплоил проект на сервак, это сложнее чем git push, и по каким ключивым словам погуглить?

И что там насчет дудоса?

Аноним Втр 27 Май 2014 17:25:43  #307 №356632 

>>356551
>и по каким ключивым словам погуглить
rails linux deploy
Я использую Puma + Nginx и Apache + Passender на другом проекте.

>это сложнее чем git push
После того как все настроишь – можно и через git push (вернее pull).

>И что там насчет дудоса?
Так же как и на остальных серверах.

sageАноним Втр 27 Май 2014 21:11:06  #308 №356752 

тред не читай, сразу вопрошай mode-on.
Друзья, на каком то форуме для погроммистов столкнулся с мнением, что чтобы начать изучать Руби нужно уметь в командную строку и прочий линукс. Скажите, насколько были правы эти говноеды. Просто я дальше винды никуда нос не сувал и желания такого у меня нет. фанаты линксов не дуйтесь, душки, но я винда меня вполне утраивала всегда и в командную строку я не лазил. мне никогда не быть прогромистом теперь?

Аноним Втр 27 Май 2014 21:32:18  #309 №356764 

>>356752
Дак в этом нет нихуя сложного, сириусли.

sageАноним Втр 27 Май 2014 21:45:52  #310 №356777 

>>356752
Спермобляди должны страдать

Аноним Втр 27 Май 2014 22:02:11  #311 №356784 

>>356551
>не деплоил проект на сервак
ну в обшчемто если у тебя есть сервер, ты там ставить гит, и потом просто клонируешь, или тянешь из репозитария, ну или хардкорно это scp, потом просто в конфиге нжикса дописывашь пару строк, и потом если у тебя пума, RAILS_ENV=production bundle exec puma -e production -d -b unix:///home/name/site/site.sock
и всё. я рекомендую пуму, как наиболее простую.

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

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

Аноним Срд 28 Май 2014 00:11:28  #312 №356851 

>>356752
>чтобы начать изучать Руби нужно уметь в командную строку и прочий линукс
А как у вас в шиндошсе вообще руби работает? Я, бегло погуглив, нашел только railsinstaller с еще третьей версией rails и руби 1.9. Хуй знает как это говно работает. Я думал, спермобляди ставят прыщеблядикс в виртуалку и там с ним пердолятся.

Изучать руби можно хоть в браузере, вообще нихуя не устанавливая. Но для работы с ним все равно нужно всю эту хуйню уметь. Настраивать nginx, ставить софт, делать скрипты для capistrano, желательно уметь немного в вим. В общем, знать это говно хотя бы на уровне хуевого сисадмина.

Аноним Срд 28 Май 2014 01:31:14  #313 №356893 

>>356851
> А как у вас в шиндошсе вообще руби работает? Я, бегло погуглив, нашел только railsinstaller с еще третьей версией rails и руби 1.9. Хуй знает как это говно работает. Я думал, спермобляди ставят прыщеблядикс в виртуалку и там с ним пердолятся.

Railsinstaller не нужен. Ставится руби, всё остальное стандартно.

Всё у нас нормально. Руби последний доступен. Нативные джемы собираются без проблем при помощи ruby-devkit. Так что обычные проекты запускаются на ура прямо в винде.

Но без знаний линукса на уровне хуёвого сисадмина в руби-мирке и правда нечего делать.

Аноним Срд 28 Май 2014 01:32:41  #314 №356894 

Ребят, мне в принципе очень нравиться веб, мне похуй на всякие сисадминские холивары. html, css, js -активно вникаю, весьма доставляет. сейчас хочу еще обмазаться бэк -эндом, но все так лохматят php и нахваливают ror и django, вот и уперся в камень на распутье. друзья, неужели, руби и пайтон настолько круче пхп? стоит ли вляпываться в пхп ньюфагу или сразу лучше изучать руби или же питон, as the best practics?

Аноним Срд 28 Май 2014 02:27:31  #315 №356912 

>>356893
>> А как у вас в шиндошсе вообще руби работает?
>Всё у нас нормально.
Нихуя у нас не нормально, производительность крайне низкая, большое приложение ощутимо медленнее работает на хорошем железе. То же приложение на линупс-виртуалке на том же железе летает.

Аноним Срд 28 Май 2014 04:00:46  #316 №356918 

>>356894
Руби как язык + стандартная библиотека в целом сильно качественнее пхп. В пхп чётче ООП из-за своей строгости и отсутствия особо динамических возможностей как рубях, но пхп как язык хуже, а его стандартная библиотека кал.

Рельсы скорее не фреймворк в классическом смысле, а среда разработки веб-параши. Объясняю на пальцах: нет энтерпрайзного ооп, чётких компонентов-классов и АРХИТЕКТУРЫ, тебе дают готовый набор мест, в которые можно вписывать кодоподобные штуки разного вида. Конечно, пространство для обычного кодирования остаётся, но рельсы тебе выкрикивают прямо в лицо: здесь заведено вот так, здесь особая магия местами, здесь каждая функция-хэлпер имеет веер вариантов вызова и ты их все будешь задрачивать. Подобная ситуация царит почти во всех библиотеках, дсл на дсле и дслем погоняет, единообразия мало, каждый кодит как душа просит, но иногда выходят удобные вещи.

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

Совет: начни с пхп, сделай три проекта на yii, три на symfony. Если сразу начнёшь с рельсов, станешь геем-хипстором, я гарантирую.

Аноним Срд 28 Май 2014 04:08:57  #317 №356919 

>>356912

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

Ну это ты перегибаешь. Рельсы под виндой на среднем кор ай 5 работают в 1.5-2 раза медленнее линукса на среднем кор ай 7. На линуксе волшебно ничего не летает, на мелких впсах запускать рейк таски, например, - боль и страдание.

Говорю про руби 2.x. Где-то читал, что СЕРЬЁЗНЫЕ ВЕНДОТОРМОЗА были во времена 1.8.

Аноним Срд 28 Май 2014 04:58:04  #318 №356920 

Аноны, поясните за перспективы работs на руби (естессно с рельсами)? Насколько сейчас востребованы спецы, входной порог?
И ещё вопрос - популярная книжка по рельсам, читал восторженные посты на хабре http://www.ozon.ru/context/detail/id/26011201/
Но по оглавлению слегка напоминает "Сайт за 24 часа". Действительно годнота?

sageАноним Срд 28 Май 2014 06:28:13  #319 №356928 
[url]

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

Аноним Срд 28 Май 2014 09:49:05  #320 №356953 

>>356918
спасибо, братишка, за внятный ответ

sageАноним Срд 28 Май 2014 10:30:26  #321 №356957 

>>356928
> посоветуйте лоботомию
slowfix

Аноним Срд 28 Май 2014 18:23:44  #322 №357118 

>>356920
Базовое ознакомление с процессом разработки на рельсах простенького шопа.

Аноним Срд 28 Май 2014 21:43:05  #323 №357178 

>>356920
>448 стр.
>по оглавлению слегка напоминает "Сайт за 24 часа".

Аноним Птн 30 Май 2014 22:13:00  #324 №357762 

>>357178
>448 стр.
Седжвик, Кормен, Страуструп, Хорстманны ссали тебе на ебло

Аноним Птн 30 Май 2014 22:50:55  #325 №357771 

>>357762
И на тебя, долбоеба, который не уловил суть.

Аноним Птн 30 Май 2014 23:35:10  #326 №357785 
1401478510033.jpg

>>313906
Анончик, дописываю проект для сборки пекарни. Хочется, чтобы разбирающийся человек оценил код. Но вот не хочется палить весь исходный код сразу. Можно я залью куда-нибудь один круд, а вы посмотрите и конструктивно покритикуете?

Аноним Суб 31 Май 2014 00:00:01  #327 №357790 

>>357785
Лей.

Аноним Вск 01 Июн 2014 07:18:23  #328 №358192 

Антон, а стоит ли ставить никсы? Просто я с этим чудом знаком мало, а на мастдае вроде рельсы стоят как надо. Разубеди меня.

Аноним Вск 01 Июн 2014 09:19:25  #329 №358203 

>>358192
Купи мак лучше.

Аноним Вск 01 Июн 2014 12:11:36  #330 №358231 

>>358192
поставь в виртуалке или второй ОС
FreeBSD рекомендую, т.к. от всяких линуксов красноглазость повышается, а Ubuntu - это вообще второй Windows

Аноним Вск 01 Июн 2014 13:01:50  #331 №358263 

>>358192 да. я даже не парюсь подумать, будет то, что пишу где-то еще работать кроме linux или нет.
ну и деплоить то будешь не на windows систему.

Аноним Вск 01 Июн 2014 14:53:12  #332 №358293 

Работу-то найти можно на вашей параше теперь?
И дебаггер уже завезли толковый или как всегда?

Аноним Вск 01 Июн 2014 14:57:28  #333 №358295 

>>358192
Конечно стоит. Тебе все равно придется с ними работать. На сервере на котором будет крутится твое приложения 99% будет что-нибудь с линуксовым ядром. Да и сама работа над рельсовым приложением это не только сам рельсы, это redis (есть только неофициальный билд для винды), memcached (есть только какой-то древний неофициальный билд), nginx (только бета с обрезанным функционалом) и куча других приложений которых под винду может вообще не быть. Ну и сразу готовься к тому что, если ты скажешь что у тебя какой-то гем не работает под виндой всем может быть на этой похуй. Так что ставь убунту или покупай мак.

Аноним Вск 01 Июн 2014 16:42:08  #334 №358316 

>>358296
xdebbug в пхп же.

Аноним Вск 01 Июн 2014 18:18:08  #335 №358351 

Блин, рельсаинсталлер на завезли на никсы?
Как инстальнуть - есть гайд?
>>358192-кун

Аноним Вск 01 Июн 2014 19:50:02  #336 №358370 

>>358351
А все, сделал, пачаны, спасибо.
Когда нужно было (как я понял) обновить библиотеки через bundle install, я забыл sudo вначале и протыкал по кругу 3 часа, лол.

sageАноним Вск 01 Июн 2014 21:27:08  #337 №358394 

>>358370
лол))

Routes обезумели, совладаешь ли ты с ними? Аноним Вск 01 Июн 2014 22:09:03  #338 №358413 
1401646143034.jpg

Рельсач, есть один круд по имени OpticalDrives. Для круда прописаны стандартные маршруты через

resources: optical_drives
И проблема в том, что основанные на этом ресурсе имена маршрутов пидорасит! Например, для show получается маршрут optical_drife, для edit - edit_optical_drife.
Рождается безумная идея прописать имена маршрутов вручную, но надеюсь на более элегантное решение.
Аноним Вск 01 Июн 2014 22:32:50  #339 №358423 

>>358413
Открой config/initializers/inflections.rb и добавь/откомменть это


ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'drive', 'drives'
end

Аноним Вск 01 Июн 2014 22:35:40  #340 №358426 

>>358423
Ну и вообще почитай тут http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html

Я не рельсобог.

Аноним Вск 01 Июн 2014 22:59:46  #341 №358435 
1401649186795.jpg

>>358423
>>358426
Цистерну чая вам, рельсобоги.

Аноним Вск 01 Июн 2014 23:18:06  #342 №358440 
1401650286924.jpg

>>358435
И еще одну.

Аноним Пнд 02 Июн 2014 23:40:42  #343 №358689 
1401738042451.png

Как заиметь такую же консольку?
На пикреле rails console. Вы посмотрите как охуенно. Как так сделать? Увидел это тут http://railscasts.com/episodes/181-include-vs-joins. Запись 2009 года. Неужели за это время стало хуже?

Аноним Пнд 02 Июн 2014 23:50:18  #344 №358690 

>>358689
https://github.com/cldwalker/hirb/tree/master#readme

Аноним Втр 03 Июн 2014 00:02:51  #345 №358695 

>>358690
Спасибо. если честно, сейчас уже сам нагуглил.

Аноним Втр 03 Июн 2014 08:58:39  #346 №358773 

>>358440
Мне кажется, или девушка страдает лёгким пиздоглазием?

Аноним Втр 03 Июн 2014 10:54:13  #347 №358784 

>>358690
двачу, отличная вещь

Аноним Срд 04 Июн 2014 20:59:38  #348 №359187 

Рельсобоги, скажите дураку, будьте любезны, ответьте на пару вопросов полного нуба.
1)Что за язык вообще такой - руби? В чем он себя полностью раскрывает? Я пока только веб-сайты на нем видел.
2)Что необходимо учить помимо рублей и рельс для полноценной работы на них? Желательно сразу со списочком литературы, если не затруднит.
Заранее спасибо.

Аноним Срд 04 Июн 2014 21:58:55  #349 №359209 

>>359187
1) Клевый язык воще, базарю. Попробуй, еще захочешь.
2)
> Желательно сразу со списочком литературы
Читать ты всё равно не умеешь, поэтому держи видосики:
Lynda.com - Ruby Essential Training (Kevin Skoglund)
http://rutracker.org/forum/viewtopic.php?t=2342166
Lynda.com - Ruby On Rails 4 Essential Training (Kevin Skoglund)
http://rutracker.org/forum/viewtopic.php?t=4651845
TutsPlus - Design Patterns in Ruby (Rem Zolotykh)
TutsPlus - OOD in Ruby. SOLID Principles (Rem Zolotykh)
TutsPlus - Metaprogramming in Ruby (Jose Mota) [LQ]
TutsPlus - BDD in Rails (Rem Zolotykh)
TutsPlus - Test-Driven Development in Ruby (Jose Mota)

Аноним Суб 07 Июн 2014 16:32:37  #350 №359934 
1402144357809.jpg

Ребята, помогите советом. Я использую API, чтобы показывать статистику по заказам, отправленным товарам и так далее. Основные модели: http://developer.tradegecko.com/documentation
Продаём пиво, нужно посчитать, сколько литров было отправленно в каждый из месяцев. Проблема в том, что апи отдаёт модели без связей. Т.е., я сперва забираю все Fulfillment, у которых дата обновленмя находится между 1 и 31 числом месяца, потом прохожусь map'ом по массиву, получаю айди FulFillmentLineItem'ов, забираю их через апи, снова map (чтобы был массив order_line_item_ids), ещё одно обращение к апи, ещё мап (variant_ids). И в конце, когда у меня есть массив с отправленными вариантами товаров, используется такая конструкция, чтобы для каждого из них найти отправленное количество (и в дальнейшем посчитать всю статистику):

fulfillment_line_items.select{|item| order_line_item = order_line_items.find{|line| line.id == item.order_line_item_id }; order_line_item.variant_id == variant.id }

Файнд внутри селекта, ну вы понели. Быдлокод работает, причем довольно быстро, но спать я все равно не могу. Как улучшить алгоритм?
Аноним Суб 07 Июн 2014 21:13:03  #351 №359969 

Бумп.

Аноним Вск 08 Июн 2014 01:11:30  #352 №359996 

Вот уже два года, как перестал кодить на Руби и пользоваться андроидопланшетом, а ruboto всё тормозит, но это пока.

Аноним Вск 08 Июн 2014 02:46:47  #353 №360001 

>>359996
>обертка на тормознутом языка над тормознутым поделием
Ну я даже не знаю.
Вообще все эти обертки аля рубото, рубимошн - говно ебаное.

Аноним Вск 08 Июн 2014 07:21:04  #354 №360034 

Помогите, какие то проблемы с совместимостью гемов. Когда добавляю гем в гемфайл и перезапускаю сервер, то начинают лезть какие-то ошибки, связанные с моделями ActiveRecord: например undefined method find' for Twitter:Module, еще undefined method arel_table' for Twitter:Module.
Сначала такое происходило с twitter-bootstrap гемом, поэтому я его не мог никогда использовать. Сейчас добавил twitter гем, от него такая же муть.
Дело в каких то их зависимостях, наверное. Подскажите, что сделать.
Gemfile: http://codepaste.net/73nmp8
Gemfile.lock: http://codepaste.net/tmn11s

Аноним Вск 08 Июн 2014 07:29:23  #355 №360035 

>>360034
Черт, ну совсем не смущало меня то, что оба гема, а также моя модель имеют в названии слово Twitter.

Аноним Вск 08 Июн 2014 13:58:25  #356 №360096 


ary = []
while from < ends_at
from = ...
ary << do_smth
end

как это переписать с помощью map? без ary << do_smth


ary = while ... end
Аноним Вск 08 Июн 2014 17:55:57  #357 №360166 

>>359934
Ну же, ребята.

Аноним Вск 08 Июн 2014 22:18:45  #358 №360230 

Есть ли хоть один нормальный форум на рубях? Я просто не хочу браться за пыху.

Аноним Вск 08 Июн 2014 23:11:01  #359 №360239 

>>360230
посмотри тут https://www.ruby-toolbox.com/categories/forum_systems

>>359934
ну ты наворотил. анти-руби-код. хотя бы с блоками do end сделал. так еще и точка с запятой есть.

еще меня беспокоит order_line_items.find . Find возвращает первый попавшийся элемент, отвечающий условию. Не может быть такого, что в order_line_items будет несколько таких элементов?

>>360096
скинь полный код.

Аноним Пнд 09 Июн 2014 02:23:19  #360 №360284 

>>360096
ary = (from..ends_at).map { do_smth }

Аноним Пнд 09 Июн 2014 03:57:52  #361 №360299 

>>360284
>(from..ends_at)
У тебя точка отвалилась. (from...ends_at)

Аноним Пнд 09 Июн 2014 08:49:14  #362 №360308 

Подскажите, как реализовать в контроллере подобный метод:

def Follower
if params[:provider] == 1
TwitterFollower
elsif params[:provider] == 2
InstagramFollower
end
end

TwitterFollower и InstagramFollower - это имена сервисов.
Аноним Пнд 09 Июн 2014 11:41:53  #363 №360348 

>>360308
Что значит реализовать, он у тебя уже реализован.

Аноним Пнд 09 Июн 2014 11:44:31  #364 №360349 

>>360348
Ну уж наверное эта реализация не работает, раз я спрашиваю.

Аноним Пнд 09 Июн 2014 12:34:31  #365 №360358 

>>360349
>название метода с заглавной буквы
>название метода как существительное
>сравнение строки с цислом
Ну я даже не знаю с чего начать, алсо
>TwitterFollower
>InstagramFollower
И что они делают? С виду обычные константы. Вообще хуйня у тебя какая-то.

Аноним Пнд 09 Июн 2014 14:03:06  #366 №360380 

>>360358
Говорю же, классы сервисов. Мне нужно, чтобы работала именно эта реализация: чтобы можно было в контроллере вызывать методы класса Follower и не задумываться, какой из этих двоих нужно использовать.

Аноним Пнд 09 Июн 2014 14:06:03  #367 №360383 

>>360358
> >сравнение строки с цислом
Это да, я уже переделал.

Аноним Пнд 09 Июн 2014 14:22:13  #368 №360387 

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

Аноним Пнд 09 Июн 2014 14:31:06  #369 №360395 

>>360387
В том то и дело, что константа. В методах контроллера методы классов TwitterFollower и InstagramFollower вызываются без проблем.

Аноним Пнд 09 Июн 2014 14:39:01  #370 №360399 

>>360395
Например:

class TwitterFollower
@@slice_size = 5

def self.set_twitter_client(twitter_account)
Twitter::REST::Client.new do |config|
config.consumer_key = ENV["TWITTER_APP_KEY"]
config.consumer_secret = ENV["TWITTER_APP_SECRET"]
config.access_token = twitter_account.token
config.access_token_secret = twitter_account.secret
end
end

Вызывается, как TwitterFollower.set_twitter_client в контроллере, только надо require 'twitter_follower.rb' сделать.
Аноним Пнд 09 Июн 2014 14:42:38  #371 №360401 

>>360399
А на самом деле даже require не надо.

Аноним Пнд 09 Июн 2014 17:05:34  #372 №360431 

>>360308
Что не работает в этой реализации?

Аноним Пнд 09 Июн 2014 17:09:03  #373 №360432 

>>360431
Когда обращаешься к Follower, то ошибка:
uninitialized constant FollowTasksController::Follower

Аноним Пнд 09 Июн 2014 17:11:59  #374 №360433 

>>360432
Так напиши с маленькой буквы - это ж метод должен быть

Аноним Пнд 09 Июн 2014 17:14:04  #375 №360435 

>>360433
Тогда, если пытаешься метод вызвать, то другая ошибка:
undefined method `follow_by_hashtag' for nil:NilClass

Аноним Пнд 09 Июн 2014 17:14:10  #376 №360436 

>>360433
Только я бы назвал как-то follower_service

Аноним Пнд 09 Июн 2014 17:15:36  #377 №360437 

>>360435
Блядь, ну значит он nil возвращает, а это значит, что в params[:provider] нет ни 1, ни 2

Аноним Пнд 09 Июн 2014 17:19:39  #378 №360439 

>>360437
Бля, забыл совсем, что я сменил тип этого параметра, скопировал из треда метод. Спасибо.

Factory Girl Аноним Пнд 09 Июн 2014 21:46:17  #379 №360499 
1402335977517.jpg

На этот раз у меня обезумела FactoryGirl.

Сначала для тестов был написан кривоватый, но нормально сохраняющийся вариант фабрики и модели компьютера:
http://pastebin.com/pwF44E8G

Потом, когда захотелось заполнять базу рандомными данными, всплыл баг: при множественном вызове фабрики связи :packs в паксетах компьютера не сохранялись, а оставались пустым массивом. Попутно возникло желание запилить полиморфную связь между Computer и PackSet. После запиливания классы выглядят уже так:
http://pastebin.com/rCSJpqtw
Теперь и при единственном, и при цикличном вызове фабрики :published компьютера все PackSet одного компьютера содержат 1 пак с одним экземпляром Ram. Помимо мозоли от фейспалмов, это еще и вызывает вопросы:
1) Почему после запиливания полиморфных связей нормально сохраняется только PackSet с Ram?
2) Правильный ли у меня подход к добавлению повторяющихся элементов в сборку?
3) А может, ну нахер эти полиморфики? Может, в моем случае
нужно было развивать и фиксить 1й вариант?

Аноним Втр 10 Июн 2014 12:41:13  #380 №360563 

Программисты, кто использовал gem xmpp4r или Blather? нужно для сайта написать чатик. Но что то я не могу заставить нормально работать этот xmpp4r. Кто нибудь пользовался?

Аноним Втр 10 Июн 2014 12:47:28  #381 №360564 

>>360563
Xmpp4r не работает в руби > 1.8.x

Аноним Втр 10 Июн 2014 13:18:20  #382 №360568 

Рор еще не умер?
Я вижу шумиха уже поулеглась

Аноним Втр 10 Июн 2014 14:20:16  #383 №360585 

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

Аноним Втр 10 Июн 2014 15:22:42  #384 №360602 
1402399362818.jpg

>>360568
> Я вижу шумиха уже поулеглась

Аноним Втр 10 Июн 2014 22:24:40  #385 №360741 

>>360564
откуда инфа? у меня на данный момент работает регистрация жабер клиента, коннект, авторизация, отправка реквестов и сообщений. Короче все основное. Но не срабатывают колбеки при получении сообщений. Хотя может я просто что то не так делаю, поэтому и задал вопрос.

Аноним Втр 10 Июн 2014 22:29:53  #386 №360745 

>>360741
У меня не работала отправка сообщений в 1.9.3
У них в багтрекере есть пара багов связанных с тредами, там что-то поменялось в 1.8-1.9 переходе. И было написано, что никто пока не портирует на новые версии. Поройся на багтрекере на их гитхабе, поищи, может что изменилось.
Блатхер поновее полюбому. Но ехал дсл через дсл.

Аноним Втр 10 Июн 2014 23:37:23  #387 №360762 

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

Аноним Срд 11 Июн 2014 00:30:31  #388 №360773 

>>360762
> Но я испугался того, что blather-клиент нужно там как то в отдельном треде запускать в ручную, иначе он блокирует основной поток.
лил

Аноним Срд 11 Июн 2014 12:19:59  #389 №360835 

>>360773
сегодня все таки попытался еще раз с blather сделать. на этот раз получилось. Блатхер клиент крутится в своем треде, который создается в контроллере вебсокета (websocket-rails). В отличии от хуевого xmpp4r его колбеки работают правильно, и сообщения принимаются и посылаются сразу по вебсокету в браузер, где сообщение выводится жаваскриптом.

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

Аноним Срд 11 Июн 2014 12:21:48  #390 №360836 

>>360835
>плохо понимаю как работают все эти треды-потоки-клиенты-сокеты-хуекеты...
Ну так разберись хули ты.

Аноним Срд 11 Июн 2014 18:11:17  #391 №360941 

>>360836
Вроде разобрался, но легче не стало.

Суть такова. Браузер подключается по вебсокетам к серверу. Создается инстанс блатхер клиента. Потом его нужно .run, запустить в новом Thread. Чятик работает. Но если просто нажать F5 в браузере, то произойдет переподключение и клиент пересоздастся, и за одно запустится в новом Треде. Из за этого треды плодятся при каждой перезагрузке страницы. (проверял выводом Thread.list.count).

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

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

Аноним Чтв 12 Июн 2014 04:36:16  #392 №361036 

Что задают на собеседовании рубисту (рельсы) без опыта?

sageАноним Чтв 12 Июн 2014 08:31:13  #393 №361042 

>>361036
Спрашивают только диаметр ануса. Дальше всему научат.

Аноним Суб 14 Июн 2014 14:00:44  #394 №361505 

>какие гемы стоит знать?
>capybara, rack, rspec, devise, cancan, simple_form, solr, sinatra, тысячи их.

Еще раз посоны, какие гемы must know без вот этого "тысячи их".
Гемы авторизации, cells, работа с формами, пагинация, работа с изображенями carrierwave, админка aсtiveadmin.
Что еще нужно знать, чтобы претендовать на вакансию рельсиста. Понятно что тысячи их и что какие-то изучаются за 1 час. Но вот база, типа devise и cancan - это то что уже нужно знать. Вот что еще уже нужно знать?

Аноним Суб 14 Июн 2014 17:20:32  #395 №361540 

>>361505
Devise, will_paginate, carrierwave, rspec (если пишешь тесты).

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

Вообще можно ни один не знать. Гораздо важней хорошо знать руби и хорошо знать основные компоненты рельсов. И не просто слепо верить в "магию", а понимать, как это примерно все сделано. А еще не писать пхп-стайл код. Уметь рефакторить, следовать принципу DRY. Ознакомиться с рельсовыми антипаттернами. Это гораздо ценней знания гемов.

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

В общем не заморачивайся, а иди лучше лишний час почитай Metaprogramming Ruby

Аноним Суб 14 Июн 2014 17:44:23  #396 №361550 

>>361540
>will_paginate
Есть же kaminari.

>и хорошо знать основные компоненты рельсов. И не просто слепо верить в "магию", а понимать, как это примерно все сделано
Я вот нихуя не понимаю до сих пор. Хуй проссышь, особенно этот ебучий эктиврекорд.

Аноним Суб 14 Июн 2014 17:48:58  #397 №361553 

>>361550
Ну вот это потому что ты Metaprogramming Ruby не читал))

Аноним Пнд 16 Июн 2014 10:32:23  #398 №361975 

Помогите отрефакторить этот скам.


def set_locations_orders
# Create mapping location => orders
@locations_orders = {}
locations.each do |l|
name = l.label
@locations_orders[name] ||= []
location_orders = orders.select do |o|
o.stock_location_id == l.id
end

@locations_orders[name] = location_orders
end
end
Аноним Пнд 16 Июн 2014 12:35:31  #399 №361991 

>>361975
Хуй знает, может так


def set_locations_orders
locations.each_with_object({}) do |location, obj|
obj[location.label] = orders.select do |order|
order.stock_location_id == location.id
end
end
end
Аноним Пнд 16 Июн 2014 12:37:59  #400 №361992 

>>361991
Ох в глаза ебусь, не заметил переменные объекта.

Аноним Пнд 16 Июн 2014 15:39:19  #401 №362026 

Какие перспективы у РоР? Учу потихоньку, нравится, но щас глянул вакансии и что-то совсем не ахти, тем более на джунов. Не сосну ли?

Аноним Пнд 16 Июн 2014 22:41:30  #402 №362129 

>>362026
Удваиваю вопрос. За пхп дают столько же, а вакансий в 10 раз больше.

Аноним Втр 17 Июн 2014 08:41:11  #403 №362201 

>>362026
Пхп больше, но и на рельсах есть что выбрать. Зачем тогда долбиться в пыху? Ну закончатся рельсовакансии, вернемся все на свою пыхопарашу.

Я вот например в прошлом опытный битриксоид. До сих пор каждую неделю мне на скайп и почту где то по 3 предложения падает. Но я их всех нахуй посылаю. Нет больше желания в этом говне копаться

Аноним Втр 17 Июн 2014 10:59:18  #404 №362209 

>>361992
Как можно не заметить? Ты что, блять, полудурок?

Аноним Втр 17 Июн 2014 12:07:50  #405 №362219 

>>362209
можно же сделать


@locations_orders = set_locations_orders

и будет тебе переменная
Аноним Втр 17 Июн 2014 13:06:10  #406 №362227 

>>360941
Ты еще тут? У меня похожая задачка есть, я правда не слишком далеко продвинулся. Так же использую websocket-rails и вот этот пример https://blog.pogoapp.com/websockets-on-rails-4-and-ruby-2/ но мне надо с десктопа(прога на C#) подключаться к этому чатику, у тебя есть какое нибудь решение уже?

Аноним Втр 17 Июн 2014 13:56:23  #407 №362233 

>>362209
Не ругайся на него.

>>362219>>361991
Спасибо.

Аноним Втр 17 Июн 2014 19:32:04  #408 №362312 

>>362227
>у тебя есть какое нибудь решение уже?

какая именно часть тебя интересует?

>но мне надо с десктопа(прога на C#) подключаться к этому чатику
Ты используешь xmpp (jabber)? Тогда просто подключайся к своему jabber серверу (я использую http://www.ejabberd.im/) и посылай/принимай сообщения как любой другой жаббер клиент. Плюс еще в том, что подключаться можно по сути откуда угодно. Проблемы - нужно решить мою проблему, лол.

Аноним Втр 17 Июн 2014 22:37:29  #409 №362352 
1403030249990.png

Кто работал с elasticsearch?
Дело в том что есть два API:
Официально-рекомендованное https://github.com/elasticsearch/elasticsearch-rails
Совсем недавно объявленное устаревшим самим автором http://karmi.github.io/retire/

Автор retire объясняет это тем, что его библиотека не гибкая и сам он присоединился к проекту elasticsearch-ruby. Но elasticsearch-ruby говно какое-то непонятное, а retire красивый и понятный.
Что же делать? Что использовать в проекте? Вы сами как?

Аноним Втр 17 Июн 2014 22:44:40  #410 №362355 

>>362352
Tire нормалек. Что конкретно интересует?

Аноним Втр 17 Июн 2014 23:48:41  #411 №362373 

>>362355
Философскай камень. Использовать устаревшую но ламповую либу или новую, но бездушную.

Аноним Срд 18 Июн 2014 08:40:20  #412 №362448 

>>362312
Для меня защита передачи данных будет критично, но вроде жаббер умеет в шифрование. Но сейчас я подключаюсь напрямую, проблема в том, что у websocket-rails есть только GET маршрут, но нет POST и я пока не понял как передавать данные.

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

Аноним Срд 18 Июн 2014 09:30:48  #413 №362455 

>>362448
>и я пока не понял как передавать данные.

Из c# клиента? ну надо как то симулировать передачу данных так же, как это делает браузер, подключаясь по вебсокету. Пишет там как то в поток подключения наверное. Я не вникал в концепцию.

Аноним Срд 18 Июн 2014 16:00:48  #414 №362563 

Поясните почему модель User, а контроллер Users?

Аноним Срд 18 Июн 2014 21:12:43  #415 №362672 
1403111563473.png

>>362563
Ньюфаг в треде.
В файле config/routes.rb можно создавать связи между запросами на определённый адрес и экшнами контроллеров.
Также там можно создать такую штуку, как resources, когда речь идёт о чём то перечисляемом (фоточки, пользователи). Это создаст пути как на пике (ресурсы во мн. ч -> контроллер во мн. ч.).
Согласно стандартам, если мы говорим о пользователях, то и пишем resources :users, а не resources :user.

Аноним Срд 18 Июн 2014 22:17:46  #416 №362712 
1403115466233.jpg

А это норм? https://ideone.com/HofMnK

Аноним Срд 18 Июн 2014 22:20:23  #417 №362715 

>>362563
Не слушай долбоеба ниже. Типичный рубироид.
Модель User - потому что класс описывает пользователя (не пользователей). Контроллер Users, потому что такое соглашение именования. Основой для это лежит то, что контроллер действительно в большинстве случаев работает с множеством сущностей конкретного типа.

Аноним Срд 18 Июн 2014 22:33:56  #418 №362724 

>>362715
но ведь >>362672 тоже прав. Convention over configuration. Если он напишет UserController или вообще PolzovatelController, то он не сможет воспользоваться стандартным крудом resources :users

Аноним Срд 18 Июн 2014 22:37:39  #419 №362727 

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

Аноним Срд 18 Июн 2014 22:41:52  #420 №362731 

>>362712
Ты лучше скажи что это делает? Каша какая-то. Метод в 26 строк, конечно не норм. Почитай про рефакторинг, clean code, хуе-мое, разделяй и властвуй на мелькие методы.

Аноним Срд 18 Июн 2014 22:42:06  #421 №362732 

>>362727
Да. Вы оба правы. Просто тот чувак тоже прав.
Кстати. А ведь можно
UserController
resource :user

но это уже другая история.

Аноним Срд 18 Июн 2014 22:47:47  #422 №362738 

Я имею ввиду, как оно вообще устроено? Вот будет допустим модель Govno, значит контроллер Govnos?

Аноним Срд 18 Июн 2014 22:53:41  #423 №362743 

>>362731
Делаю статистику, нужны данные о количестве отправленных товаров, разбитые по месяцам и локациям. Например, в мае из места А ушло 5к бутылок, из места Б 4к, всего 9, столько-то налога заплачено, столько-то всего литров. Конкретно этот метод создаёт хеш месяц => отправленные товары. Потом идёт что-то типа:

months_with_items.each do |month, order_items|
locations.each do |location|
тут общей к сумме плюсуются данные о локации и создаётся объект для отображения во вьюхе
end
end

Я понимаю, что в методе много строчек, но не соображу, как разбить эти селекты и мапы по методам. Можно сделать всё инлайн, будет в 3 раза меньше строчек, но они будут длинными. Укоротить названия переменных - хуй поймёшь, что они значат. Ну ты понел.
Аноним Срд 18 Июн 2014 22:53:23  #424 №362744 

>>362738
В рельсах есть хелпер pluralize, ну и это, конечно http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html

Аноним Срд 18 Июн 2014 23:13:53  #425 №362751 

>>362743
А что там трудного-то? Один метод достает товары за определенный месяц, другой собирает какие-то там ид судя по коду и т.д., т.е. каждый делает что-то одно и возвращает какой-то результат или меняет состояние, а потом собираешь все эти мелькие в этот и работаешь дальше.
Начни хотя бы с вынесения каждого блока в отдельный метод. У меня глаза вытекают от этого, как будто код на жабе читаю. Я пасс.

Аноним Срд 18 Июн 2014 23:27:41  #426 №362759 

>>362744
Вот это я и хотел узнать, спасибо.

Аноним Срд 18 Июн 2014 23:51:53  #427 №362767 

>>362724
Он прав, но спросили почему так называется. Этот начал нести какую-то хуиту про ресурсы и роутинг. Чего, про что несет? Вот такие как он и пишут документацию, что потом нихера понять нельзя. Руки бы отрывал.

Аноним Срд 18 Июн 2014 23:56:56  #428 №362772 

>>362731
>разделяй на мелькие методы
Да-да, превращай код в шизо-лапшу. Пусть потому дизасемблируют его.
Иногда лучше написать большой не dry метод, но ясно описывающий логику, чем строить изощренную хуиту, которую придется изучать под лупой. А какое блаженство вносить изменения в такой код - половиная dry-методов становится ненужна, другую половину нужно модифицировать и еще половину дописывать.

Аноним Чтв 19 Июн 2014 00:16:56  #429 №362779 

>>362772
Я конкретно про его случай говорил, там "ясно описывающей логикой" не особо и пахло, по крайней мере для меня. Не будем превращать тред в кодорефакторингосрач.

Аноним Чтв 19 Июн 2014 08:41:49  #430 №362819 

>>362767
Удваиваю. Он мог бы с тоже же правдивостью и информативностью написать что небо голубое.

Аноним Чтв 19 Июн 2014 17:00:08  #431 №362916 

Рубигоспода, помогите начинающему!

Есть контроллер товаров. Добавление товара должно происходить через Ajax. И все бы хорошо, если бы после добавления браузер не редиректил бы на json-файл вместо страницы.

Вот сама функция добавления:

  def create
@item = Item.new(items_params)
respond_to do |format|
if @item.save
format.html{redirect_to @item, success: 'Item was created'}
format.json{render json: @item, status: :created, location: @item}
else
format.html { render action: 'new' }
format.json { render json: @item.errors.full_messages, status: :unprocessable_entity }
end
end
end


Параметры для товара

private

def items_params
params.require(:item).permit(:name, :type_id, :description, :price, :image)
end


Форма, реализующая добавление

<%= form_for(@item, remote: true, multipart: true, format: :json, html: {class: :add_item_form}) do |f|%>

<%= f.label :name, 'Название' %>
<%= f.text_field :name, :class=>'input-block-level' %>

<%= f.label :type_id, 'Категория' %>
<%= collection_select(:item, :type_id, Type.all, :id, :name, {}, {:class=>'input-block-level'}) %>

<%= f.label :description, 'Описание товара' %>
<%= f.text_area :description, :class=>'input-block-level' %>

<%= f.label :price, 'Цена' %>
<%= f.text_field :price %> руб.

<p>
<label>Изображение</label>
<%= f.file_field :image, :class=>'input-block-level' %>
<%= f.hidden_field :image_cache %>
</p>

<%= button_to 'Добавить предмет', @item, remote: true, class: 'btn btn-success btn-block btn-large' %>

<% end %>


Для загрузки изображений используется CarrierWave.

Уже не знаю, что делать. Хуйцы сосал, бочку делал.
Аноним Чтв 19 Июн 2014 17:08:35  #432 №362920 

>>362916
6 строка


def create
@item = Item.new(items_params)
respond_to do |format|
if @item.save
format.html{redirect_to @item, success: 'Item was created'}
format.js {render 'create', layout: false}
else
format.html { render action: 'new' }
format.json { render json: @item.errors.full_messages, status: :unprocessable_entity }
end
end
end

Аноним Суб 21 Июн 2014 00:41:32  #433 №363306 

Читаю книжку, выполняю задания по гайду. Что делаю я примерно понимаю, но вот в голове оседает немного. Как быть, это у всех так?

Аноним Суб 21 Июн 2014 03:02:55  #434 №363341 

>>363306
По какому гайду?

Аноним Суб 21 Июн 2014 03:05:45  #435 №363342 

>>363341
А разве это важно?

Аноним Суб 21 Июн 2014 09:55:44  #436 №363358 

>>363306
попробуй по самому языку почитать что-нибудь

Аноним Суб 21 Июн 2014 12:42:31  #437 №363387 

>>363306
Продолжай читать, но и в код который перепечатываешь/пишешь тоже вникай. Тоже так было, но потом в нужный момент все вспоминается.

Аноним Суб 21 Июн 2014 20:14:30  #438 №363517 

>>363342
Интересно, сам хочу начать учить рельсы просто.

Аноним Суб 21 Июн 2014 21:26:01  #439 №363543 

>>363342
Как таких петухов земля носит

Аноним Суб 21 Июн 2014 23:21:33  #440 №363570 

>>363543
Ты чего, дружище?

Аноним Втр 24 Июн 2014 15:02:03  #441 №364299 

bump
http://www.schneems.com/ut-rails/
Короткий и понятный курс.

Аноним Чтв 26 Июн 2014 00:46:47  #442 №364721 

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

Аноним Чтв 26 Июн 2014 00:47:56  #443 №364722 

>>364721
Будут какие-то советы\напутствия? Алсо, что писать то посоветуете, блог или имиджборду?

Аноним Чтв 26 Июн 2014 01:57:18  #444 №364737 

>>364722
>блог или имиджборду
Форум серьезно

Аноним Чтв 26 Июн 2014 02:18:09  #445 №364748 

>>364737
Обоснуй.

Аноним Чтв 26 Июн 2014 02:19:42  #446 №364749 

>>364748
Я просто сложил блог и борду и получился форум. В форуме фичи и от бложика и от борды.

Аноним Чтв 26 Июн 2014 13:51:08  #447 №364818 

>>364749
>Я просто сложил блог и борду и получился форум.
Я просто сложил хуй с говном и получился ты.

Аноним Чтв 26 Июн 2014 15:31:39  #448 №364846 

>>364749
Форум не нравится, лучше блог сделаю, лол.

Аноним Чтв 26 Июн 2014 15:41:59  #449 №364854 

Посоветуйте годных гемов для бложика.

Аноним Чтв 26 Июн 2014 20:35:18  #450 №364952 

Украл скринкаст Хартла. Нормально же его просто смотреть, а не повторять? А то там рельсы старые и гемы не ставятся.

Аноним Птн 27 Июн 2014 13:53:37  #451 №365128 

>>364854
devise
kaminari
carrierwave

Аноним Птн 27 Июн 2014 16:59:27  #452 №365189 

>>365128
Чето попробовал поставть дивайс и тут же обосрался.

Аноним Суб 28 Июн 2014 01:27:36  #453 №365332 

Как вывести имя автора поста?

Аноним Суб 28 Июн 2014 01:52:29  #454 №365334 

>>365332
Всмысле есть модель User и модель Post, юзер может отправлять\редактировать\удалять посты, но вот вывести рядом с заголовком поста имя автора у меня чего-то не получается.

Аноним Суб 28 Июн 2014 02:58:34  #455 №365348 

>>365334
Ассоциации то есть между ними? Как-то @post.author.name наверное.

Аноним Суб 28 Июн 2014 03:45:00  #456 №365352 

>>365348
>Ассоциации
Ну belongs_to и has_many, если ты об этом.
>@post.author.name
Ну суть примерно такая, только метода author нету, а @post надо правильно определить. Я представляю примерно так

<%= link_to @post.user.name, @post.user %>

Но реализовать не вышло.
ссаными тряпками не бейте, я нюфаг, пилю первое приложение
Аноним Суб 28 Июн 2014 04:09:57  #457 №365356 

>>365352
link_to создает ссылку, надеюсь ты это знаешь.

Если ты создаешь ссылку, то куда он у тебя должен вести?
А если просто вывести имя, то link_to не нужен. Выложи модели куда-нибудь, точнее скажем.

Аноним Суб 28 Июн 2014 04:16:02  #458 №365357 

>>365356
Ссылка должна вести на автора естественно.

Аноним Суб 28 Июн 2014 04:27:25  #459 №365358 

>>365356
http://ideone.com/B1lznI - user.rb
http://ideone.com/6BaiId - post.rb

Аноним Суб 28 Июн 2014 05:36:53  #460 №365364 

Недавно что-то слышал про микросервисы. Говорят лучше монолитных рельсовых приложений. Весь бэк-энд разбивают на микросервисы, которые общаются друг с другом через API без фрон-энда. Я новичёк и стоит ли мне про это дальше читать, или продолжать делать своё приложение для портфолио в Хартл-стайл? Я просто хочу быть особенным и удивить работодателя своим умным кодом.

Аноним Суб 28 Июн 2014 05:39:32  #461 №365365 

>>365364
Что за хартл-стайл?

Аноним Суб 28 Июн 2014 13:15:39  #462 №365399 
1403946939181.jpg

Давайте пойифимся.

Аноним Суб 28 Июн 2014 14:36:55  #463 №365414 

>>365399
Тебе в питон-тред.

sageАноним Суб 28 Июн 2014 14:57:15  #464 №365422 

>>365414
Ньюфаг детектед. Или это было на нульче?

newfag alert Аноним Суб 28 Июн 2014 15:03:22  #465 №365425 

Я предупредил.
#Test_automation #ruby #cucumber #capybara #sitePrism #RubyMine

>projectname.rb

class projectname

def login_page
LoginPage.new
end

def home_page
HomePage.new
end

def sign_up_page
SignUpPage.new
end
end


>sign_up_page.rb

class SignUpPage < SitePrism::Page

element :sign_up_form, :xpath, ".//form[@class='form-vertical register-form']"

end


>sign_up.feature

Scenario: Sign Up tab is opened when
Given I am on the 'Login' page
When I click on 'register_btn' button
Then I should see 'Sign Up' page


>sign_up_steps.rb

Then(/^I should see '(.*)' page$/) do |page|
if page.eql? 'Sign Up'
@projectname.sign_up_page.sign_up_form.should be_visible
end
end


Раню тест

NameError: uninitialized constant Sunlayar::SignUpPage
./lib/projectname.rb:12:in `sign_up_page'

Я, должно быть, ебусь в глаза и не вижу очевидного. Но все же, сука, так как в других фичах. Я переписывал все с нуля, я копипастил с рабочего кода, я молил небо и даже Аллаха. Я не понимаю в чем проблема.
Бочку сделал, до хуйца еще не дошло. Помогите, пожалуйста.
Аноним Суб 28 Июн 2014 15:11:46  #466 №365430 

>>365357
>>365358
Кароче отбой, разобрался.

Аноним Суб 28 Июн 2014 15:36:26  #467 №365434 

>>365425
Похоже ты не подключил файл, содержащий SignUpPage класс к projectname.rb. Алсо, мне Cucumber не нравится. Я нашёл turnip от создателя Capybara, позволяет исполнять фичи через RSpec, заместо движка Cumumber. И степы писать в сто раз удобнее.

Мимо новичёк.

Аноним Суб 28 Июн 2014 15:47:06  #468 №365437 

>>365434
У меня в env.rb есть следующее

require 'pages'

А в pages.rb

Dir["#{File.dirname(FILE)}/pages/*_page.rb"].each {|r| load r }


Настройки не мои - юзаю чужой сьют чтобы разобраться - но из того что я понимаю, эта хрень подгружает все файлы в папке pages, которые заканчиваются на _page.rb, так что sign_up_page.rb должна подгружаться
Аноним Суб 28 Июн 2014 15:51:53  #469 №365439 

Что бы связать модель Comment с моделями User и Post, коммент помимо прочих колоноки belongs_to должен иметь так же user_id и post_id, верно?

Аноним Суб 28 Июн 2014 16:15:42  #470 №365446 

>>365437
отмена. Я долбоеб. У меня файл не в той папке лежал, лол.

Аноним Суб 28 Июн 2014 18:11:25  #471 №365479 

>>365439
В общем получается такие ассоциации


User.rb

has_many :comments
has_many :posts

Post.rb

has_many :comments
belongs_to :user

Comment.rb

belongs_to :user
belongs_to :post


Как теперь правильно определить действие create для коммента, что бы он был связан и с юзером и с постом?
Аноним Суб 28 Июн 2014 18:20:37  #472 №365482 

>>365479
google -> activerecord through association

Аноним Вск 29 Июн 2014 03:10:32  #473 №365640 

Рубаки, а кто где хостит свои проекты?

Аноним Вск 29 Июн 2014 03:21:56  #474 №365642 

>>365640
Хероку

Аноним Вск 29 Июн 2014 03:28:20  #475 №365646 

>>365640
digitalocean

Аноним Вск 29 Июн 2014 03:49:11  #476 №365651 

Подскажите, как правильно составить correct_user, ну или где почитать об этом.
В общем в CommentsController стоит

before_action :correct_user,   only: [:edit, :update, :destroy]

сам код correct_user
  def correct_user
@comment = current_user.comments.find_by(id: params[:id])
redirect_to root_url if @comment.nil?
end

Комменты находятся на Show странице постов. Проблема в том, что удалять свои комменты можно только и если пост тоже твой.
Аноним Вск 29 Июн 2014 04:01:53  #477 №365655 

>>365651
Отбой тревоги, разобрался.

Аноним Пнд 30 Июн 2014 03:05:04  #478 №365908 

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

Аноним Пнд 30 Июн 2014 03:11:38  #479 №365910 

>>365908
Хули там читать? Модель Like со связями с твиттом и юзером, который сделал лайк. Если хочешь лайкать ещё комменты какие-нибудь, то делаешь полиморфную связь вместо связи с твиттом.

Аноним Пнд 30 Июн 2014 03:15:46  #480 №365911 

>>365910
Ну вот про это и прочитать, какие колонки в модели лайк и дизалйк и тд.

Аноним Пнд 30 Июн 2014 03:18:00  #481 №365913 

>>365911
Алсо может лучше гем какой? Я пилю первый проект в учебных целях, он получается почти без гемов, вот как раз и разберусь как гемы ставить.

Аноним Пнд 30 Июн 2014 04:43:00  #482 №365922 

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

Аноним Пнд 30 Июн 2014 06:22:50  #483 №365927 

Как теперь эти лайки сделать через аякс? Пробовал примерно так, через like.js.erb, но чего то не сработало.

$("#likes-count").html('<%= tweet.get_likes.size %>')

Алсо как быть, если твиты выводятся на двух страницах и используют разные переменные, то есть на одной страницы, что бы вывести лайки нужен будет такой код
<%= @tweet.get_likes.size %>

а на другой такой
<%= tweet.get_likes.size %>
Аноним Пнд 30 Июн 2014 06:23:56  #484 №365929 

>>365927
>страницы
странице
быстрофикс

Аноним Пнд 30 Июн 2014 08:03:35  #485 №365934 

>>365927
Кароче хуйня какая-то, все и так работает.

Аноним Пнд 30 Июн 2014 18:06:04  #486 №366072 

>>365910
Я бы лучше добавил дополнительное строковое поле с id, лайкнувших твит пользователей.

ШО ЗА ХУЙНЯ? Аноним Пнд 30 Июн 2014 18:57:26  #487 №366088 
1404140246671.png

Когда создаю rails petuhruby script/server — все работает.

Когда устанавливаю:
git clone https://github.com/theinventor/domainr.git — папка распаковывается. Но, блядь. при попытке ruby script/server.
No such file or directory -- script/server (LoadError)

Что я делаю не так? Как прикрутить эту хуйню?
https://github.com/theinventor/domainr

ШО ЗА ХУЙНЯ? Аноним Пнд 30 Июн 2014 19:32:05  #488 №366100 

>>366088
Бля, кажется что-то начинаю понимать. Сука, блядь. Поясните.

Аноним Пнд 30 Июн 2014 20:17:06  #489 №366120 

>>366088
Нахуя ты пользуешься старыми рельсами?

Аноним Пнд 30 Июн 2014 21:20:19  #490 №366132 

>>366120
У меня бубунта 10.04. В этом проблема?

Аноним Пнд 30 Июн 2014 21:25:55  #491 №366134 

>>366132
Ох ебать, это смотря как ты рельсы ставил. Обновись, хуле ты как слоупок.

Аноним Пнд 30 Июн 2014 22:19:38  #492 №366148 

>>365927
>like.js.erb
Вспомнил один вопрос, который давно меня волнует. Что, если я использую слим иои хамл, а не ерб? Понятно, что последний будет работать из коробки, но мне не хочется писать ерб-код, хочу няшный слим/хамл в жс-партиалах.

Аноним Пнд 30 Июн 2014 22:31:13  #493 №366149 

>>366148
Добавляешь нужный гем в gemfile, меняешь .erb на .haml или .slim и ынжой.
Заебал уже. Гугл для кого придумали?

Аноним Пнд 30 Июн 2014 22:32:22  #494 №366150 

>>366149
В гугле говорят "не парься, используй erb))".

Аноним Втр 01 Июл 2014 00:12:46  #495 №366179 

>>366072
Подойдет и такой вариант, если не планируется делать какие-то хитрожопые sql запросы с группировкой и агрегацией.

Аноним Втр 01 Июл 2014 03:11:51  #496 №366208 

>>366150
Вообще правильно говорят, js-темплейты проще на erb поддерживать - со slim и haml из-за их отступов потом получается нечитабельная каша

Аноним Втр 01 Июл 2014 13:16:22  #497 №366262 

бамп

Аноним Втр 01 Июл 2014 15:45:02  #498 №366293 
1404215102256.png

>>366208

Аноним Втр 01 Июл 2014 18:15:23  #499 №366322 

Я прошел тест на одеске, набрав 0,7 баллов из 5. Год как работал с платформой. Вот я лох, однако.

Аноним Втр 01 Июл 2014 20:48:19  #500 №366388 

Как правильно приделать бб-коды? Я поставил bbcoder гем, в show.html.erb прописал

<%= @post.body.bbcode_to_html %>

бб коды конвертятся в хтмл коды, но эффекта нет, то есть сам пост получается просто что-то типа <strong>Text</strong>.
Аноним Втр 01 Июл 2014 21:01:48  #501 №366395 

>>366388

<%= simple_format(@post.body.bbcode_to_html) %>

Вот так работает, но что-то мне оно не нравится.
Аноним Втр 01 Июл 2014 21:40:03  #502 №366415 

>>366395
@post.body.bbcode_to_html.html_safe

Аноним Втр 01 Июл 2014 21:55:08  #503 №366423 

>>366415
Спасибо, решило проблему. Только теперь тег <br> не срабатывает, можно исправить?

Аноним Втр 01 Июл 2014 22:09:09  #504 №366428 

>>366423
У нас вот такое вот говно в application helper:

#to_do: move to some application shared lib
def render_bb_code(content)
content.is_a?(String) ? content.bbcode_to_html.gsub(/(?:\n\r?|\r\n?)/, '<br>').html_safe : ''
end

Аноним Втр 01 Июл 2014 22:24:58  #505 №366430 

>>366428
Что-то не могу разобраться как юзать.

Аноним Втр 01 Июл 2014 22:26:00  #506 №366431 

>>366430
Разобрался.

Аноним Втр 01 Июл 2014 22:41:44  #507 №366436 

>>366428
>content.is_a?(String)
>is_a?
zashquare

Аноним Втр 01 Июл 2014 22:43:53  #508 №366439 
1404240233203.png

>>366428
Оно конфликтует с truncate, получается пикрелейтед. Есть идеи, как пофиксить?

Аноним Втр 01 Июл 2014 23:07:57  #509 №366451 

>>366439
Все, опять разобрался.

Аноним Срд 02 Июл 2014 00:39:44  #510 №366473 

>>366436
Впилил, чтобы всякое nil говно в случае чего не падало. Поясни пожалуйста, что не так.

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

sageАноним Срд 02 Июл 2014 00:54:09  #511 №366479 

>>366473
ну или как вариант выделить функциональность в модуль, а потом его инклудить в нужные модели. Короче расскажи, что не так.

Аноним Срд 02 Июл 2014 01:20:37  #512 №366486 

Перекат пилите, хули вы.

Аноним Срд 02 Июл 2014 14:32:31  #513 №366615 

Есть статьи и комментарии. Статья имеет много комментариев.
При загрузке какой-то определённой статьи с комментариями всё хорошо, создаётся 2 sql запроса - для статьи и комментариев.
Но когда я хочу сделать отдельную страницу со всеми комментариями из всех статей, и для выбора всех комментариев пишу Comments.all, создаётся куча sql запросов, по одному для каждого комментария.
Как это исправить? Не могу понять как тут eager loading использовать.

Аноним Срд 02 Июл 2014 15:11:12  #514 №366635 

>>366615
Точнее комментарии выбираются нормально (SELECT "comments".* FROM "comments"), но также создаётся n запросов вида (SELECT "articles".* FROM "articles" WHERE "articles"."id" = ? LIMIT 1), где n = количеству комментариев.

Аноним Срд 02 Июл 2014 18:18:57  #515 №366702 

>>366473
Ну как бы это bad practice. Через respond_to? можно или тупо вызвать to_s на сontent'e.

Аноним Срд 02 Июл 2014 18:23:42  #516 №366705 

>>366615
google -> N+1 problem

sageАноним Срд 02 Июл 2014 19:16:12  #517 №366715 

>>366702
И вправду. Странно, что сам не дошел.

comments powered by Disqus

Отзывы и предложения