>>313906
>@rails
норм
>@dhh
Пидр заебал со своей политикой и прочей хуетой.
>@yukihiro_matz
Hakuchi и я не понимать.
>@wycats
Заебал выебываться с ember.js. Надо же как-то говно форсить.
>@tenderlove
Феминист.
Хороший языб, но в комньюнити полно уебков.
у кого spork с rbx-head rubinius из master работает? у меня тормоза пипец с ним.
Кто-нибудь игрался с JRuby? Мне очень интересно, почему на моей машине это говно работает медленнее MRI. Например, синтетические циклы с одними и теми же математическими операциями шурукают быстрее на матцовской реализации. В 10 раз! Где же JIT? Где же я увижу разрыв в сторону джаваруби?
>>315953
попробуй многопоточные тесты и демоны запускать, а вообще в mri хорошая числодробилка.
>>315976
> многопоточные
Ну почти так и было.
Кстати, потребление памяти JRuby доставляет. Может, когда мне нужна будет настоящая многопоточность, я еще раз потыкаю эту хуйню палкой, но пока и так норм.
Стоит ли пользоваться turbolinks? У меня на последней версии невебкитной оперы(12.16,запускал на убунте) чё-то с ним не работает вот/такие#ссылки с решётками. Точнее они не работают при одновременном переходе на другую страницу с навигацией на конкретный элемент.
В общем запутался.
Есть файлик с 100 строками, например, есть сто изображений. Нужно переименовать все изображения в соответствии с каждой строкой файла. Названия изображений неизвестны.
>>316403
Отмена. В общем заново переписал и заработало, лол.
Вопрос не по руби, но пишу в этот тред так как а) сейчас занимаюсь рельсами б) рельсисты, наверное, как никто в курсе хороших практик.
Короче, в реляционных СУБД есть такая вещь как отображения (view). Помимо того, что они отделяют уровень представления (что теоретически позволяет менять физическую модель не затрагивая внешний интерфейс), они могут быть удобны для создания виртуальных таблиц, содержащих избыточные данные или просто представляющих собой специфические SQL-запросы. И модели в приложении можно строить на такие виртуальные таблицы. Это может быть полезно, когда выразить запрос при помощи ассоциаций сложно или нельзя.
Ну или может это не настолько необходимо, но все равно идея использовать отображения мне почему-то кажется очень классной. Но я никогда нигде не видел, чтобы их использовали. Почему? Не нужны? Когда могут быть полезны на практике?
>>316422
Ты когда-нибудь пробовал запедалить вьюху? Я пробовал и никаких преимуществ перед обычными запросами не увидел.
Вьюха не позволит тебе сделать процедурные вставки. Вьюха не создаст тебе временное хранилище. Все что сделает вьюха - это позволит сказать, что вот этот вот монструозный запрос с несколькими юнионами теперь называется NewViewName. И чтобы выдать результат этого запроса, сервер все так же каждый раз будет прогонять запрос полностью. Никакого уменшения количества read'ов ты не увидишь.
А теперь вопрос, нахрена все хранить запросы в БД, если над СУБД обычно делают еще один слой, который решает вопросы разграничения доступа? Потому что ни одна СУБД не умеет в оповещения и изменения в таблицах приходится трекать вручную специальной прослойкой.
Есть ли прирост производительности в реализациях типа jruby, rubinius etc ree не идет, нужна ветка 2.x? Мой инстанс уже выдает неприличные задержки, на новый денег пока нет
>>316453
Нет. В бенчмарках они хоть и выдают производительность на уровне MRI, но на деле, в рельсах, оказывается отсос, особенно у рубиниуса.
>>316458
REE умер. Сам я его никогда не использовал, но в интернетах пишут, что никаких преимуществ в скорости перед MRI 2.0+ у него нету. Так что придется тебе оптимизировать свой код или раскошеливаться на железо получше.
>>316462
Лоо, перешел на mri 2.1, обещался приросст производительности на 10%. За счет чего, простите?
Предположим, имеется модель computer, которая embeds_many нескольких моделей наследников hardware. При этом у модели computer есть набор валидаций (энергопотребление системы и мощность БП, совместимость сокетов у CPU и матери, etc). Во время создания сборки предполагается переход пользователя на отдельные страницы со списками комплектующих, которые будут предлагаться на основе совместимости с уже существующими в сборке. Например, есть голая сборка с матерью на LGA 1155 и тогда при переходе на страницу выбора процессора там должны оказаться только процессоры с совместимым сокетом. Для этого, насколько я понимаю, мы должны передать экземпляр сборки в контроллер процессора и на основании имеющихся компонентов применить фильтры. Но тут появляется загвоздка - для передачи сборки нужно сохранить ее в БД, но голая сборка с одной материнкой, без оперативы и БП заведомо неправильна и не пройдет валидацию перед сохранением.
Рассматриваю следующие варианты решения:
1) Убрать валидацию перед сохранением. Не нравится, слишком неорганично.
И все, варианты кончились.
Помоги разрешить противоречие, анон.
>>316519
Разрешить это противоречие можно качественным переходом на новый уровень - не проводить валидацтю и не сохранять, использовать hardware как есть, на одной матери с жестко заданным сокетом
Реально ли найти в дс или дс2 работу джуниору?
>>313906
анон, хочу податься в веб разработку. Где можно посмотреть годный код-образец, где backend это python или ruby и front-end сделан по последней моде? (какие репозитории в git?)
я так понимаю у рельсов нет будущего?
>>316559
Майкл Хартл выстраивает всю книгу в виде построения одной типовой программы, мини-твиттер на бутстрапе. Освещает много смежных аспектов.
Очень часто бывает такая ситуация, что нужно достать какой-то объект из дб, но прямых ассоциаций нет и приходится тащить всякое ненужное говно. Например, если я на странице хочу отобразить отделения компании, то приходится делать что-то вроде этого:
@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. Что вот это такое:
>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.
Объясните, позязя.
>>316716
А вообще мне не очень понятна вся эта свистопляска с эктиврекорд и ассоциациями. Вот, например, есть у нас лента постов. Но вместе с каждым постом подгрузятся и объекты их пользователей. И что мы получим? Если на странице выводим 100 постов разных пользователей, то у нас будет 101 sql-запрос. Не охуеть ли? Где здесь хорошие практики?
>>316781
Объектно-реляционные мапперы же придумали не для того, чтобы от SQL полностью отказываться? SQL же тоже не просто так существует? Оформить собственный SQL-запрос в виде нового метода в модели - плохая практика?
>>316784
А нет тогда смысла особого в этих мапперах. Что мне сложно сделать метод с запросом SELECT * FROM users? Или я не понимаю их сути.
Ответь про RVM, а?
Сегодня, то есть вчера, прослушал парочку докладов по руби, даже скорее больше по ROR.
Они не используют IDE, так как это не имеет особого смысла.
Реализовать полноценный автокомплит там нельзя. Передача параметров в методы имеет несколько вариантов, только недавно появилась возможность указывать параметры по умолчанию. Интерфейсов и тайпхинтинг соответственное отсутствуют.
Класс можно обвесить методами или переопределить в любом месте (здравствуй #define TRUE FALSE). Вроде есть rdoc, но не понятно кто и как им пользуется, они против чёрных ящиков и знают свой код!!!!
Синтаксический сахар делает код непредсказуемым, интерфейс можно узнать только из доки/ читать код библиотек по их же уверением - "может это сразу и не очень понятно".
Прочитали доклад по тому как писать API, я бы сам уволился за такой подход, а там этим гордятся. Главное код получается коротким и красивым, а то что библиотекой не сможет пользоваться даже сам разработчик месяца через два - не важно. И это при принципе "явное важнее неявного".
Приятная игрушка для школьника и студента, ну ещё БЛОГ написать ЗА 15 МИНУТ, не больше. Как осуществлять поддержку такого кода, если его становится вдруг много? Как писать на нём в команде.
Я уже раза три видел, как переписываются проекты с ROR на PHP, кстати DiMA упоминал о том же. Сам даже переписывал небольшую бухгалтерскую системку. Не хотел судить, пока достаточно близко не познакомлюсь с предметом и не поговорю с их разработчиками . Там действительно такой ад, что php-шный говнокод покажется раем!
>>316781
Почему должны сами собой подгрузиться пользователи? Если не нужны, то и не подгрузятся. А если нужны, то используй Post.includes(:author) и будет 2 запроса.
>>316784
На самом деле, так часто и приходится писать raw sql для запроса. Если не хватает where синтаксиса, можно использовать Squeel (или попросту Arel).
>>316790
>используй Post.includes(:author)
Ололо я нубское хуйло. Просто почему-то в туториале Майкл Хартл об этом не рассказал.
Анон, пока ты тут один, ответь за RVM, ну что тебе сложно? Хочешь постою как цапля тута? На одной ноге.
Мать в детстве часто наказывала меня за ПХП. Говорила, вот я пишу на Руби и ты так делай. Поэтому когда все мои сверстники вовсю создавали свои странички я сидел и дрочил на руби. Потом начали использовать фреймворки разные, устроились в студии, кто-то попал в интересные стартапы, а я в это время учил РоР, так как чистый руби никому не был нужен. Сейчас, когда я могу написать на рельсах блох за 15 минут, мои одноклассники уже купили себе машины и женились на тянках. Такие дела.
>>316788
Ну тебе тогда не надо определять большинство простейших методов с мапперами. Плюс мапперы должны давать механизмы экранирования.
Про RVM я сам не знаю. Многие команды rvm запускает так, что учитывается, что у тебя за интерпретатор и джемсет. Так используются например при rake тасках нужные джемы и интепретатор, но технических подробностей, как это работает, я не знаю. И вроде при cd в папку с джемфайлом(или ещё чем-то?) она подключает нужные интерпрететор и джемсет автоматически
>>316803
>И вроде при cd в папку с джемфайлом(или ещё чем-то?) она подключает нужные интерпрететор и джемсет автоматически
Что не работает в capistrano, например, потому нужно использовать rvm wrappers.
>>316776
Переписывают cd чтобы он детектил и читал рвмовский файл.
>>316816
А у меня и без этого шага при установке
>$ source ~/.rvm/scripts/rvm
работает. Чем это опасно?
>>316818
Только я еще для в настройках профиля терминала галочку поставил Run command as a login shell. Зачем я это сделал?
>>316822
>Так он будет запускать оболочку(?) как будто ты только что залогинился. Хотя может я и ошибаюсь.
Вот я и не понимаю вообще смысла происходящего, о чем ты говоришь и что мы там делаем при установке, когда выполняем $ source ~/.rvm/scripts/rvm. У меня работает один единственный руби, а больше мне никакие фишки rvm пока не нужны. Скорее всего что-то будет не работать. Можешь объяснить, что при установке делаем?
>>316823
Ньюфаг чтоли? Если да, то тебе врядли что-то из этого нужно, ты же еще ничего не написал не так ли? Используй, что есть в репах. А если все таки надо, то почему rvm, а не rbenv?
>>316826
Ньюфаг. Но таки кое-что писал по мелочи. RVM используется на работе, ну и просто исторически я на него первого наткнулся. Просто хочу понять, что мы там делаем. Я еще и с линуксом плохо знаком, не могу понять, что тут http://rvm.io/support/faq#what-shell-login-means-bash-l написано.
>>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
не нужна. Как-то так. Хз что в рвм изменилось, не трогал его давно.
Посоны, у меня уже больше полугода багор. Никак не могу собраться с силами и научиться в тестирование. Дело в том, что я как-то раз пробовал тестики пописать, но запнулся на месте, где надо было залогинить юзера, чтобы что-то создать. Он у меня логинился, но сессия пропадала после второго запроса или типа того.
Короче, подскажите, пожалуйста, где подсмотреть код и научиться в нормальное тестирование.
>>316908
О факин щит. Тестирование это что-то. Я один бугуртирую от этой хуйни? С одной стороны я понимаю, что вообще говоря это очень круто когда весь код покрыт тестами. С другой - эти блядские тесты, я не понимаю как вообще можно что-то писать таким образом. Сколько времени на них должно уходить. И откуда возьмется желание что-то писать вообще, если тебе перед каждой новой фичей нужно идти блять и писать для нее тест. Обезьяний труд ведь ололо пыхоплеяда, вы и и есть обезьяны. И кругом в вакансиях требуют умение писать тесты. Хотелось бы услышать мнение реальных разработчиков по этому поводу и бугурта.
>>317197
Не вижу ничего плохо в тестах, все лучше чем каждый раз все ручками проверят, но тестировать каждую строчку в коде долбоебство. Все в меру.
>>317197
Нужно хорошо формализованное ТЗ и иерархический организованный причинно-следственный порядок мыслей в голове. Тогда стул гореть не будет и быдлокодинг будет идти как по маслу. Организация, порядок и еще раз порядок. У тебя должна подгорать пятая точка на любую грязь, на любую неаккуратность, на любой бардак. Тогда ты сможешь в тесты.
Посоны, помогите, плиз. Есть, карочи, блог, к постам в нем можно писать комменты и все такое, а нужно сделать так, чтоб по двойному клику на текст коммента или блога в него рендерилась форма изменения этого коммента/поста. Это же нужно делать через паршиалы, но тут возникает вопрос: как их динамически поменять? Ну и, разумеется, проблема в том, что не могу связать ивент и экшен в контроллере. Где ни спрашивал, везде отмахиваются и посылают учить аякс запросы, которые я знаю, а не знаю только, как реализовать вот то, что придумал.
>>317197
Чтоб научиться писать хорошие тесты нужно писать много хуёвых тестов. Я тоже по началу бугуртил, а сейчас одно удовольствие от написания и польза от использования, рикамендую.
>>317287
Я бы так сделал. Код не проверял. http://pastebin.com/vc2en858
>>317292
Выглядит работающе, попозже проверю, но все равно заранее спасибо.
Где руку на этом языке набивать для фриланса, если живёшь в мухосрани, где даже верстальщики не нужны? Целюсь на одеск, пушто рупараша не нужна.
>>317420
http://github.com
FORK
@
PULL REQUEST
как начишься делать deep throat и ты сразу сениор лид рубист
Антош, посоветуй годный гем для работы с com-портом пожалуйста ( ну или метод, аля через жопу ).
p.s: ruby-serialport не канает, гугол показывает хуй по теме.
>>317797
Да делал я так, Антош, только вот хуйня в том, что мне туда не ASCII надо кидать. Строку я формирую через sprintf получается набор шестнадцатиричных залуп ( 0x0A, 0x0B и тд. ну ты понел ), посылка такого не прокатывает ;(
Если по честному - то пилю следующую хуйню. Есть СКУД, меня заебывает каждый раз доставать свой пропуск, поэтому повесил на сервак СКУД хуйню, которая мониторит моё появление ( телфона моего точнее ) в локалке, а дальше дает команду контроллеру ( который подключен к COM через USB ) открыть мне дверь.
Собственно затык только в отправке команды через COM-порт.
При чем саму команду я сдампал, вот теперь только ебануть её туда и всё.
Ребят, я тут вытащить должен много-много данных из ДБ, пусть сама БД ебет себя запросами или переложить логику на рельсы? пишу херню для отчетов
>>317945
active record тебе в помощь. можно использовать из без рельс если чо
>>317945
ещё в голову пришла залупа помимо стандартных active record - data-mapper
>>317980
то есть мне, неучу, не надо разбираться в синтаксисе SQL и перекладывать часть операций на бд, кроме как получение нужной информации, и нужно просто ебашить чисто руби-код?
Звучит странно, но хочу знать разницу между вычислять нужное в БД и расчитать нужное в приложении. Проекты, например, популярные на гитхабе используют актив рекорд, да, но сука в производстве я видел и голые SQL-запросы посылаемые и вот у меня разрыв шаблона.
>>318007
Да, ненадо.
Начинай хуярить отсюда http://rusrails.ru/active-record-basics и до обэда...
>>318009
спасибо, антончик, ща буду погружаться глубже в актив рекорд
>>318007
Надо быть мудаком, чтобы использовать подобное:
ActiveRecord::Base.connection.execute 'SELECT zalupa FROM body'
хотя если ты не нахуяришь моделей, то так и будешь делать
>>318012
не, я видел чудовищнее примеры, я выложу в тред, когда найду. Там блять человек абсолютно незнаком с ORM, зато заебашил сотню строк запросов вручную
>>318007
У тебя задача одноразовая, об оптимизации можно забыть.
Хуярь на DSL и в ус не дуй.
Только один момент - с mass-join или сложными вложенными запросами будет ебала. С другой стороны никто не мешает делать одиночные запросы, раскладывать по переменным а потом оперировать уже ими.
>>318063
ну дык он и SQL не знает наверняка - взял Navicat и нахуйярил в query builder запросов =)
>>318130
ну я тоже SQL не знаю, только на уровне ВЗЯТЬ НУЖНЫЕ ДАННЫЕ. Что-то типа или сложнее процедур не писал. Вот например ормы здорово облегчили мне жизнь.
>>318136
А я вот иногда люблю ебануть хранимую процедурку, а потом передать кусок кода другим кодерам.
я сам не кодер если чо - так, маюсь хуйнёй от скуки, ну и не даю свои кодерам расслабиться.
>>318140
ооокей, сегодня достаю книжку по SQL и буду дрочить ее до утра
Делаю бложик в учебных целях. Уже сделал основу, посты и комменты, есть простая система кармы, админская часть. Подскажите еще каких-нибудь идей, пожалуйста.
>>318745
статистику прилепи, какую страницу больше всех смотрели, залепи статистику комментариев, самые комментируемы статьи, самого флудящего, сделай отправку отчетов на почту/экспорт в CVS/PDF/JPEG, запили инфографики еще к отчетам.
>>318745
запили лайки и прочую интеграцию с ф-сбуком и втентаклем
>>318867
Кстати, если ты делаешь блог для тренировки, чтобы потом трудоустроиться или левелапнуть зп, а не просто подрочить мозги, то имеет смысл писать всё с тестами, по канонам ТДД. Многие не умеют писать код в стиле "сначала тест" или кодить на бумажке, а потом удивляются почему их унижают на собеседованиях.
>>318873
>кодить на бумажке
А что значит "кодить на бумажке"?
>>318880
Написать хоть что-нибудь без компа. Хоть что-нибудь.
>>318893
Это как подготовка перед аналом, только тут для собеседования.
>>318893
Чтобы посмотреть, думать человек может или он жабомакака и программирует через точечку.
>>318893
Автокомплиты и гугль нерулят.
Хотя конечно рулят, но работодателям надо что бы ты сам это всё знал
>>318898
Вообще работодателям похер, используешь ли ты гугель и ждёшь ли ты подсказки после точечки. Работодателю нужно чтобы то, что ты накорябал - работало.
Просто есть корреляция: если человек на бумажке ну вообще ничего написать не может и делает оскорблённый вид, то скорее всего он хуй и даже с гуглом напишет хуйню. Я уже не говорю о том, что ему автокомплит наподсказывает.
>>318905
Нет такой корреляции. Зато это очевиднейшим образом коррелирует со своевольностью, эгоцентричностью, и таким прочим, а следовательно, велика вероятность, что спокойный и покорный работник из такого человека не получится.
>>318924
О, насчёт эгоцентричности. Среди рубистов (отечественных, во всяком случае) почему-то на удивление большой процент заносчивых гандонов. Не знаю, чем это объясняется.
Хотя и среди буржуйских рубистов тоже попадаются знатные самовлюблённые мудаки, DHH тому отличный пример.
Бум
Что делать с пикрилейтед?
http://pastebin.com/kWSc1KQT
Посоветуйте, пожалуйста, какие-нибудь статьи по аутентификации. Желательно без devise и вообще без гемов.
>>319688
Просто хочу лучше разобраться в аутентификации. Если есть хорошие статьи по аутентификации с devise, то от них тоже не откажусь.
>>319697
Я смотрел скринкасты + какие-то мануалы, это не то, что тебе нужно.
Ну а так читай про сессии, там кроме этого вроде и не нужно нихрена.
Ребят, а как можно просмотреть, сколько памяти жрет та или иная переменная в рубикоде? Например при помощи IDE какой-нибудь, а то я чувствую, что пришло время оптимизировать мою поделку по отчетам
Completed 200 OK in 474ms (Views: 38.4ms | ActiveRecord: 432.2ms)
Вот такие сообщения меня очень не радуют. Почему сообщение в чате, обрабатывается настолько долго?
>>319742
ох лол
петушки сначала говорят про "фреймворк с человеческим языком", что все такое красивое, няшное, ничего не надо делать, а все есть
а потом вот такие сообщения удивленные
>>319746
у меня другой вопрос - рельсы разве подходят для чатиков? Я бы тут другой язык использовал бы.
и если уж и писать чат, то надо блять везде проконтролировать и не рукожопить.
>>319758
пишу простой чатик для отработки server-side events
>>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' %>");
Собственно, все
>>319783
Самое интересное, что есть еще
Completed 200 OK in 188ms (Views: 186.2ms | ActiveRecord: 0.4ms)
Есть один рельсосайт, там есть пользователи и компании. Если пользоватеь залогинен, нужно добавить поддомен ко всем адресам(<companyname>.domain.com). Никаких проверок не надо, просто если пользователь заходит на domain.com или huichlen.domain.com, редиректить на ту же страницу с правильным поддоменом. Сайт уже написан, так что как это сделать наиболее безболезненно?
Рельсаны, есть тупой вопрос.
Есть у меня один 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) )
>>320763
if params[:filter] && params[:filter][:color] && params[:filter][:color].includes?(:id)
>>319783
посмотри в логах в консоли, там же все запросы и время на рендер как всей страницы, так и ПАРШИАЛОВ показывается.
посмотри, сколько записей в таблице. и сколько полей у Message?
погугли в сторону оптимизации на insert для твоей базы, если эти 400мс - это чисто инсерт одной новой записи в таблицу.
>>321336
Тебе тут не только роутинг корячить придется, но и nginx с его location имхо.
Ну я прикидываю сделать что-то вроде http://railscasts.com/episodes/221-subdomains-in-rails-3 для роутов, а потом создать before_filter в ApplicationController, где проверять поддомен и редиректить в случае чего. И еще переписать _path/_url методы. Начну позже, сейчас просто варианты прикидываю. Такое взлетит?
Рубиняши, подскажите ответ. Как в 4 рельсах узнать все поля какой нибудь модели? Так как там появились стронг параметрс, и теперь я не могу вызвать метод attr_accessor и туда записать все имеющиеся поля и заглядывать туда, как что то забуду. Сейчас же надо лезть в контроллер этой модели и смотреть там.
>>321791
Думаю, что взлетит. Но имхо есть наверное способы и поизящней.
Антуаны, мне вот немного моск рвет. Задача тупая до ужаса - подключить 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 при используемой конструкции с редиректом?
>>319742
В production будет заметно быстрее. Все в порядке, скорее всего.
>>319783
Никогда не понимал этого подхода. Почему не отдавать json и рендерить его как угодно на клиенте? Через angular, например.
>>320763check_box_tag 'filter[color][]', id, Maybe(params)[:filter][:color].include?(id)._ # gem Monadic
По-хорошему во вью вообще не должно быть таких проверок. Алсо посмотри Object#try
>>321869
А для ios другой layout? Если другой, то просто ебнуть ga и туда тоже. Или проблема в чем-то другом?
>>321929
layout тот же самый, только партиалы рендерятся другие
смотри, Антош
ты идешь на корень www.zalupa.ru/ , в зависимости от твоих параметров тебя сразу редиректит на /ios,/zalupa,/pipiska и тд., те welcome#index не рендерит никакого ответа, а тупо редиректит.
В GA сайт прописан как http://www.zalupa.ru так как welcome#index не отдает никакого ответа,.то GA не находит своего js и в следствии этого ни хуя не работает.
Прописать в GA каждый /zalupa - идиотизм, их может быть овердохуя.
Рендерить и отдавать какую-нить хуйню в welcome#index - тоже не вариант
Суп /пр. Вот я например знаю как сделать примитивный аналог пейнта на C# или Java, но там за меня уже написали фреймворки, которые производят обработку нажатий кнопок мыши. Есть ли что то подобное в руби а потом еще как это встроить в рельсы? Получится ли это сделать на чистом руби или надо будет еще использовать жаваскрипт? Да и вообще с чего лучше начать? Хочу сделать пейнт-онлайн, просто чтобы глубже изучить руби и рельсы.
Сап, Антуан.
Сломал себе весь моск с кодировками.
И так имеем - мы должны обработать входящую 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") ?
Многие советуют отдавать в ajax json и рендерить его яваскриптом. Но ведь
а) вьюхи уже скорее всего написаны до прикручивания ajax
б) рендерить рельсами значительно удобнее $('#yoba).html("<%=j render 'ololo/trololo_partial'%>")
Есть несколько моделей, которые нужно получать через ajax с некоторой бизнес-логикой. Фишка в том, что эти модели редактируются только в админке.
Куда запилить обработку ajax запроса? Пилить отдельный контроллер ради одного index? Пилить глобальный ajax_contoller (насколько это хорошая практика? знакомый постоянно так делает)? Пилить ajax запрос в админку, разруливая его хитрыми роутами? А если бы контролера в админке вообще не было?
>>326826
a) JSON как бы компактнее. Но если тебе не нужно обновлять информацию, изменять её и удалять без всяких перезагрузок, то таки скорее всего json тебе не нужен. К тому же, если надо рисовать >100 однотипных записей, то тут JSON выиграет по объему кода.
С другой стороны, если ты работаешь с так называемым "верстальщиком" и он просит JSON, то ему, возможно, виднее.
б) рендерить ангуларом как бы еще удобнее
>>326826
Ах, да, JSON иногда лучше готовить на странице при загрузке, а не грузить AJAX'ом, а уже потом, коль надо, обновлять AJAX'ом.
>>326875
Тогда логичнее сразу в страницу HTML вставить по моему.
>>323669
Бампану вопрос, а то так и не ответили чтото по существу.
Анон, умоляю, помоги разобраться пожалуйста.
Есть контроллер 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
Вопрос - как заствить вьюху работать?
>>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
>>327651
Бля там
collection do
get ...
end
Короче я загоняюсь сам с этой хуйни
Помогите с полиморфизмом в RoR.
В общем суть такова:
У меня есть таблица, в которой хранятся пользователи. Среди прочей информации там есть поле, хранящее пол пользователя.
ВСЕ мои методы работают одинаково для обоих полов, но отдельно. Т.е. по /woman/ я получаю список всех женщин, по /man/ я получаю список всех парней.
На данный момент сделал 2 модели, в которых:
default_scope where('sex = 1')
А вот что дальше делать хз. Попытался в ApplicatinoController добавить метод:
def index
@users = ApplicationController.where("score > 0").order("score DESC")
end
Но вот что-то ничего не работает, естественно.
В общем вопрос вы поняли, помогите как лучше сделать? А то делать два одинаковых контроллера это совсем по-пидарски.
>>327975
Во первых не юзай default_scope
Во вторых, нахуя тебе две модели?????
Сделай просто скоупы
class User
scope :male, -> { where(sex: 1) }
scope :female, -> { where(sex: 2) }
end
>>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
>>328157
Но у меня там несколько экшенов.
Получатся одинаковые методы, которые различаются только вот этим скоупом.
Или это нормально?
Алсо почему не юзать default_scope? Не юзать в этом случае или вообще?
Насчет моделей да, ошибся. Твой вариант лучше.
Я просто только учусь ну и попутно пытаюсь что-то сделать. А они везде повторяют про DRY, DRY, DRY, вот и думаю как это нормально сделать то.
>>328157
скорее уж так
class UsersController < ApplicationController
def men
@users = User.males.to_a
end
def women
@users = User.females.to_a
end
end
>>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. Ну и в сомнительном моменте лучше вопросы позадавать, чем говнокодить
>>328242
Ну вот сомнительный вопрос, я и задал. Я же для себя говнокодю пока что. :)
На книжку посмотрю, спасибо энивей.
Привет, пацаны!
Подскажите, пожалуйста, годный мануал по работе с protocol buffers в ruby. Или сами объясните, как это осуществить?
писал, в качестве тестового задания, плагин для редмаин. доставило.
скорее всего, работать не возьмут. поэтому реквестирую годные опенсорс плагины для редмаина. хочу поучаствовать.
может к тому времени, как окончательно остопиздит текущая работа, я буду более привлекательным ruby-специалистом.
>>330462
пыху бы выучел лучше внатуре
уже работал бы за $$$, базарю
Кто здесь проходил туториал Хартла?
В 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?
Простите за неровный почерк
>>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
>>331865
Тогда у тебя не получится rollback далее сделать.
>>331869
То есть все эти миграции с удалением, добавлением, обновлением и т.д. так и висят в приложении?
>>331875
Ну это же мусор. В конце концов в этой папке будет висеть овердохуя файлов.
>>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
>>331877
У тебя есть файл schema.rb, в нем лежит текущая разметка базы. Можно будет все миграции удалить и заменить на один файл, в который скопировать содержимое schema.rb.
> Надо ли мне удалять запись login отсюда:
Файл старой миграции не надо менять, только создать новую.
пердолюсь Arel. нужно найти groupwise maximum - сгруппировать и найти максимум для каждой группы.
документации по Arel нет. вчера проебал весь день, а мог бы написать запрос sql-строкой за минуты.
в rails google группе нашел дискуссию, где говорят что Arel не для пользователя, а только как прослойка между Active record и db и могут перескочить на что-то другое со временем.
вот я и подумал, не хуйней ли занимаюсь?
>>334368 попердолился два дня.
q = MovementsQuery.new(time_range)
q.with_interval(interval).with_account(account)
q.with_geography(geography) if geography
>>313906
В то время как berkeley начинает брать денюшки за свои курсы по рельсам, на горизонте появляются другие и за бесплатно. Может кого и заинтересует.
https://www.coursera.org/course/webapplications
>>316422
Потому что все уеб-программирование имеет родовую травму от Мыскля(mysql), который до недавнего времени не то что вьюхи - джойны-то не всегда работали.
>>316447
Есть такая вещь, как materialized views. Служит для ускорения выборок для отчетов.
А есть такая вещь, как row level security. Делается тоже с помощью вьюх.
Полезность этих вещей для уеб-программистов неочевидна. Они, эти программисты, никогда не видели запросов в 50 строк и больше, и считают, что это НИНУЖНА. Так вот - НУЖНА. Оракл, MSSQL и DB2 всех переживут, все фейсбуки с гуглами.
Вопрос по модели БД: необходимо хранить даты рождения (dob) и даты смерти людей, причем даты могут быть до нашей эры, какой тип данных лучше выбрать?
>>335253
Если до 4713 BC устраивает, то обычный date. Если нет, то interval
Сброшу годноты для сопливых нубов
codelearn.org
Сап, рубач.
Пришлось столкнуться с кодом на руби (до этого только hello world'ы видел), нужно понять, что есть f в этом коде:
(0...2**4).map{|x| f[x[3], x[2], x[1], x[0]] * 1 << x}.inject(&:+)
>>336896
>что есть f в этом коде:
список или лямбда или proc или хэш или число или любой объект вообще с переопределённым оператором [], удачи.
>>336896
f это то, что стоит справа в выражении "f = ..."
Господа, появился вопрос, подскажите, будьте добры.
Я не так давно вляпался в Рельсы, так что суть проста:
Нужно подхватывать из БД 3 случайных записи, конкатенировать их, записывать в БД получившийся результат и добавлять +1 на счетчик. Правильно ли я понимаю, что это будет пять запросов к БД: 3 на каждую случайную запись из БД,1 на запись результата и 1 на "+1"?
Если нет, то как будет правильнее и короче?
Это я собираюсь сделать на Рельсах, если это важно, а не на голом руби.
Спасибо.
>>338706
Shit.order("RAND()").first(3)
Скакатенируешь и счетчик обновишь сам.
>>338708
>>Shit.order("RAND()").first(3)
То есть он будет хватать три случайных записи одним запросом?
вощем ваш руби такое гавно как PHP
вечно варнинги небось выдает да ерооры
на такое гавно после perl очень противно переходить
то что на perl отлично работает на руби с ПХП ерроры выдает
заебешся переделывать
ну и кнопок намного больше жать
мучение сплошное
>>338992
императивная дрысня с ублюдской динамической типизацией
многие толковые rails хакеры пишут, что могут в backend и frontend и называют себя full stack кодерами.
backend - грубо говоря то, что называют computer science. алгоритмы, database optimization, distributed computing..
немного не понимаю frontend. я думал, это больше дизайнерская работа. но у меня как-то не укладывается, как бородач с phd пишет css и js для какой-то менюшки или крутой кнопки. если я использую backbone.js, еще не значит, что я frontend developer?
объясните.
>>339013
>rails хакеры
заправщиков катриджей тоже можно хакерами называть? я 1c-хакер, я гуру wordpress ололо
>>339022
думаю можно, сейчас в принтерах разные защиты от заправки.
пусть не хакер, а хороший кодер.
но те кто пишут рельсы, а пишут все кому не лень, разбираются в внутренностях которые не документированы и как интерпретатор ruby устроен. rails не какая-то там маленькая библиотека.
Анон, поясни за 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 отмечен.
ЧЯДНТ?
>>339966
*селффикс
Проверяю так:
if params[:mt].present?
puts params[:mt].inspect
end
при тупой puts params[:mt].inspect получаю nil
>>339966
>generate_bricks
>>339966
Ты нажимаешь на простой линк и ожидаешь, что у тебя форма за сабмитится?
>>340069
Прости бро, это я вчера упоролся чутка.
Ща ебану через form_tag.
>>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'
Антош, подскажи пожалуйста, могу ли я узнать, какой id будет назначен записи в БД при использовании метода first_or_initialize?
[CODE]
book = Books.where(number: "0374180660").first_or_initialize
if book.new_record?
????
end
[/CODE]
здарова, надо сделать ЕХЕ файл как ссылку на другой ЕХЕ файл.
Подскажите алгоритм. Первый файл-ссылка будет запускаться из system32, если это имеет значение.
здарова, надо сделать ЕХЕ файл как ссылку на другой ЕХЕ файл.
Подскажите алгоритм. Первый файл-ссылка будет запускаться из system32, если это имеет значение
>>340230
А зачем? То что ты хочешь сделать,скорее всего делается по-другому?
>>313906
Сап, котаны. Диплом уже не за горами, а у меня еще нихуя не сделано.
Насоветуйте мне cms на ruby для написания интернет-магазина или подскажите где можно спиздить готовый магазин.
>>340971
Разве суть дипломной работы не в том, чтобы самому написать cms для интернет-магазина? Или у вас там всем похуй и не проверяет никто, главное чтоб работало? Так-то можно spree накатить, там уже все готово, даже контент залит.
>>340977
Шарага же. Времени на написание диплома нихуя нет, вот и приходится ускорять процесс. Пока что нашел только http://synergycommerce.ru/ из русского. Spree лучше будет?
>>340980
Synergy это надстройка над spree. Если тебе нужно побыстрее - ебашь на синерджи.
>>341018
Окей.
Блжад, у меня ядерный багор, анончик. Учу рельсы самостоятельно, думал уровень джуниора есть, как минимум, решил работку найти. Нашел вакансию, отписался, прислали тестовое задание пикрелейтед. Сделал часов за 6-7, написал, что ему что 7 часов заняло, а мне в ответ "Аноннейм, с такой скоростью вам надо пока видимо бесплатно работать". Ну пиздец, у меня бомбит теперь. Не, я понимаю - 7 часов может быть дохуя для опытного человека, но где мне опыта набраться, если никуда не берут? Думал у нас кадровый голод в айти и обучаемому человеку можно устроиться, пусть за небольшие деньги. Я в печали, неужели 7 часов - это так много? Утешь меня, ананас, ну или говном покорми.
>>341137
>часов за 6-7
Как же я проиграл. Кстати, кто мешал тебе спизднуть, что ты справился за 3 минуты?
>но где мне опыта набраться, если никуда не берут?
Писать всякую хуйню самостоятельно, джуниор ты билять комнатный?
>>341137
Единственная твоя ошибка - что ты позволяешь этому отбирать у тебя время, нервы, и вычислительный ресурс.
Об говно не надо спотыкаться - его надо переступать или обходить стороной. Ищи дальше.
>>341146
Смысл врать? Я этого не люблю. Работа у меня есть, я развиваться просто хочу в другом направлении и работа рубистом мне именно для этого. На данном этапе на деньги практически пох. Писать хуйню самостоятельно я могу, но я как в вакууме - сделал, не сделал, хорошо сделал, плохо - всем похуй, нету фидбэка, не от чего оттолкнуться и непонятно в каком направлении грести.
>>341151 Да не, я не чувствую себя униженным там и не думаю, что он так самоутвердиться хотел, просто, по всей видимости, я недооценил требования в профессии
>>341137
Хорошо, что ты не пошёл в ту контору, сразу видно что они неадекваты. А какой-никакой опыт от выполнения задания ты получил, следующее гораздо быстрее сделаешь. Ищи дальше работу, скоро найдёшь.
>>341155
Неужели ты не понимаешь? Это для джуниора работа на час максимум.
Ты оправдываешься, а значит ты неправ.
>>341263
А почему они кстати неадекваты? Задание относительно простое.
Только слишком много верстки, непонятно зачем на неё столько внимания в тз.
Что делать, если получил первый отзыв плохой на одеск? Заказчик написал, что типа хороший программист, но сорвал дедлайн. Что делать?
Какое-то ебануто задание.
Написал первый скрипт на Ruby. http://pastebin.com/MnKezHZJ
Конвертирует csv файл в xml по шаблону вида:
<awdawd>
<ghkj>%{1}</ghkj>
<vb>%{2}</vb>
<cvbn>
<bnm>%{3}</bnm>
<zxc>%{4}</zxc>
</cvbn>
</awdawd>
>>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]}]
>>341749
Забрал вариант
outputFilePath = options[:output] || options[:input] +'.xml'
>>341806
Я как то сразу подумал, что авторы хотели запилить свой питон.
Привет, рубяши. Пришло на Одеске приглашение на ruby programmer position. Причем именно руби, без рельсов. Есть идеи, что там может быть за кодинг?
Привет, ананасы, я столкнулся с проблемой и прошу вас помочь. Проблема такова: поскольку я студент-первокурсник, нормальную работу программиста на бэкенде найти не могу, и кодить дома мне еще придется некоторое время перебиваюсь версткой и клиентской стороной, которую доверяют, я стою на месте и не развиваюсь. Прошу дать совет, где можно вычитать новой инфы по методам программирования всяких полезных штук в руби и рельсах, можно только в рельсах. Я делаю свой блог уже второй месяц в свободное время, сейчас реализовано почти все основное (аякс, сокеты, wysiwyg-редактор даже приделал, хотя не очень разобрался, как он работает). Мне кажется, я стою на месте уже некоторое время, не могу точно сказать сколько; да и неспособность нормально разобраться в документации redactor-rails немного расстроила. В базовых вещах я разбираюсь, мне нужно что-то уровня intermediate и выше. Заранее спасибо за помощь.
>>344034
Блог он два месяца делает. Вордпресс устанавливается ровно 5 минут, 3 из которых на скачку по мухосранскому интернету.
>>344145
Я делаю блог не для того, чтоб его вести, а для того, чтобы разобраться в фреймворке. Серьезно, это не ответ, а высер пхп-программиста.
>>344179
Забей на него, ты всё нормально делаешь. Только попробуй не блог, а что-нибудь ещё сделать, посложнее.
>>344179
Как ты используешь сокеты в своём блоге, расскажи пожалуйста.
Посоны крутые кодеры, помогите. Нужно реализовать на руби: в массиве три стека,ограниченные в совокупности.
Подкиньте идею хотя бы. Ведь если в массиве есть пустое место значит его может использовать любой из стеков или я не понимаю задание?
Вот два стека, по сути сюда нужно что то дописать.
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
>>313906
Нубище на связи.
Что скажете об этом для начала изучения? http://railstutorial.ru/
Немного могу в ООП и MVC (2 года работаю с Друпалом).
№344529
Годный туториал
Это нормально, что в гайдах (конкретно, Why's poignant guide to ruby) код не рабочий? Вот взялся повторить пример, оказалось, что если делать require, локальные переменные не переносятся, а у него написана именно локальная. Сделал глобальную - сразу все заработало. И такие примеры довольно часто встречаются.
Или это автор так заставляет меня самостоятельно исправлять ошибки?
Только начал учиться программированию
>>345544
выкинь эту хуйню вместе с рубями лол и возьми нормальную книгу
>>345551
Я уж эту закончу сначала. Тем более, в оп-посте ее советуют.
>>345694
код для руби 1.8 не работает в руби 1.9
MAXIMA UNTERMENSH
>>345694
А, все понял, спасибо. Если что-то не работает, просто буду смотреть в актуальную документацию.
>>344034
Мне очень помогла книга Rails Antipatterns и параллельное углубленное изучение руби. Особенно книга metaprogramming ruby. Рикаминдую. И найди работу уже
>>345715
об этом давно известно, покажи мне лучше язык который совместим между версиями\стандартами.
>>345690
>в оп-посте ее советуют
Охуенный аргумент. Это книга для дегенератов и хипстеров хотя это одно и тоже. Что-то из разряда книжек head first.
>>345860
А разве они не держат либы еще с третьей версии?
Ну и в любом случае поддержка старых версий там самая наверное обширная, энтерпрайз же
>>345881
>А разве они не держат либы еще с третьей версии?
кто они? оракл? просто 1.8-1.5 не совместима с 1.4 <
>>313906
Стоит ли задрачивать руби, хуярить на нём что-то большое и сложное, или лучше задрочить рельсы и хуярить на них? Хочу устроиться джуниором, думаю, руби изучил неплохо, но чего-то весомого чисто на руби не делал. Может и не стоит, руби без рельсов нужны вообще?
>>345912
>Может и не стоит, руби без рельсов нужны вообще
>>345860
Четвертая в 2002 году вышла. Не очень корректное сравнение.
>>345771
Я не умею даже то, что там есть, так что без разницы, кто введет в курс дела.
Есть строка. В ней фамилия, имя, отчество, разделены пробелами. Есть ли более кошерный способ привести её в формат "Фамилия инициалы", кроме как разбить в массив по словам и джва последних элемента заменить на первую букву+точка и потом склеить в строку?
>>346003
да хоть до иисусова пришествия она вышла, вопрос был о совместимости между версиями\стандартами. такого языка не было найдено, пока что.
>>346179
Взять срез от пробела до пробела и первый символ по индексу? Или в руби так нельзя?
питонщик мимопроходил
>>346198
Неплохой вариант. Правда выясняются некоторые особенности, в частности - перечень всяких "оглы" и иже с ними, которые обрезать до первой буквы ессна ненадо. Ну и еще некоторые особо упоротые в двойных фамилиях дефис пробелами отделяют, тоже учитывать...
>>346260
Припекло
мимо-оглы
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))
class Size < Vector2; end
class Position < Vecor2; end
Player(Position pos, Size soze)
>>346349 ох, то-есть
define_method(:initialize, position: .., size: ..)..
хотел спросить, кто-то использует что-то такое? super_duper_define_method написать не сложно, но может уже есть что готовое?
>>346349
>для того, что бы named args работали нужно указать значения по умолчанию:
не обязательно. можно так def foo(a:, b:42) и так далее. То есть запятая вместо значения по умолчания ебануто да, проебали руби
>>346371
спасибо
нашел вот type checker для ruby:
http://www.cs.umd.edu/~jfoster/papers/oops13.pdf
typesig "self.find: (Integer) -> User"
def self.find(id) ...
Посоветуйте какой-нибудь проект на гитхабе с тестами, чтобы посмотреть его и научиться в тестирование. Желательно rspec.
Подскажите, как взять из текстового файла первую строку, с удалением из файла.
>>349439
моча может согреть тебя
пописай в кострюлю и сразу макни ступни
отвечаю еще захочешь
>>349447
Но из говна может получиться сытный и питательный обед.
Помогите нубу, почему ruby не выполняет код?
a=gets
b=gets
c=a*b
puts c
Вот вывод:
cant convert String into Integer (Type error)
from C:\Users\user\ruby\newdocument.rb:3:in '(main)'
Тред явно мертвый, но спрошу.
Как освоить ActiveRecord и ассоциации? Ничего не понимаю, не могу понять как это работает. Слишком много всего, что нельзя понять а приходится запоминать, соответственно не могу делать сложные связи/выборки, делаю все неэффективно и наобум. Нигде ничего не написано, во всех гайдах и доках только КОКОКО хезмэни-белонгсту, инклюдс-джоинс. Чего несут блять поехавшие? Нахуй мне эта ебаная простыня методов без понимания, как это работает.
>>351861
Почитай чутка про SQL, связи между таблицами, оные джойны и т.п.
AR лишь няшная обертка над всем этим.
>>351870
Да я вроде нормально в SQL разбираюсь. Я не понимаю что происходит в рельсах, когда начинаются сложные запросы.
И вообще этот эктив рекорд меня бесит. Нихуя он похоже нормально не делает, а городит кучу запросов. Что чистым кастомным запросом решалось бы в два запроса, через эктив рекорд будет сделано в 5-6 запросов. Плюс куча нечитаемой цепочечной ебалы. Нахуй это нужно все.
>>351947
Читай metaprogramming in ruby, там поясняются за АР. Да и вообще есть другие орм, бери и пользуйся.
>>351947
Приведи пример цепочечной ебалы. Явно делаешь что-то не так.
Привет аноны
Тут вопрос: как с нуля поставить окружение на чистый впс для развертывания рельсового приложения. В линухе понимаю на уровне лс, кат и еще кой-какой мелочи. И как развернуть? Тут вижу место для новичков есть? Так что хотелось бы помощи, а не анального вторжения
>>352124
Изучи линукс сначала, хотя бы на уровне - структура файловой системы, создать-удалить юзера, права на запись-чтение-исполнение. А потом уже брать capistrano и разворачивать.
>>352124
Два года назад начал писать туториал для хабра, возможно что-то устарело уже. Ну и он недописан, продолжение частично по ссылке.
http://pastebin.com/Zm6jE9az
По результатам у меня был настроен продакшн сервер с нулевым временем редеплоя и синхронизацией с битбакетом.
Господа, помогите, пожалуйста, найти в исходниках штуку, которая превращает where, join, order и т.д. в SQL.
>>354939
вся суть рельсоблядей, зазубрили магию своего фреймворка, а в кишки залезть не в состоянии
Посоны, я буквально на днях начал делать первый сайт на рельсах и у меня вопрос. В туториалах пишут про миграции, как способ наращивания БД. Однако в начале разработке база будет меняться очень часто и я не хотел бы плодить миллион миграций. Как мне это сделать?
>>355462 плоди миллион миграций.
позже:
rake db:schema:dump
rm -rf db/migrate/*
>>355469
Тебе что мешают эти файлы?
Не слушай того анона выше. Если уж удалять, то делать это частично и ручками, а не так хардкорно как он тебе предложил.
>>355551
сегодня день тупых людей? то один утверждал что так надо, не пытаясь задать себе элементарный вопрос - "почему?"
вот еще один. зачем тебе древние migrations?
>>355462
В начале разработки (правда, разработка была в одно лицо) я делал одну миграцию с созданием всех таблиц сразу, рыба создавалась из seeds.rb, и был запилен таск, подцепляющий все нужные таски, чтоб можно было в одну команду пересоздавать бд и наполнять рыбой.
Это сэкономило множество телодвижений в первый месяц разработки. А далее, после первого бета-релиза, я уже делал обычные миграции, чтобы не иметь проблем с обновлением на продакшене, да и вместо рыбы у меня под рукой уже появилась реальная бд с нормальными данными вместо рыбы.
Heroku vs DigitalOcean на какой стул сесть? И подскажите какой нибудь сервис для защиты от дудоса.
>>356509
Я хероку начал использовать в своем проектике (только начал неделю назад). О ддосе у меня пока речи не идет, но разобрался и вроде несложно с ним пока что.
>>356509
digitalocean конечно же, там всё сам накатываешь, делаешь как нужно, а не хероку, которое если что-то не так то будешь сидеть и думать, что же блять они от меня хотят. И да в океане у тебя всё бесплатно, кроме сервера, то есть редис, постгрес, эластик, а в хероку это деньги и не малые. Ну и дижиталокеан вроде новее дистры, а на хероку раньше был древний говнодибиан
Двачую digitalocean или любой другой VPS. Хероку дорогой и, по моим ощущениям, пердолинга там не меньше чем при настройке собственного VPS. Нужно выбирать и настраивать внешнее хранилище, делать специфические настройки для приложения, заниматься еще какой-то хуйней, и все это за какие-то страшные деньги – двухъядерный dyno с гигом памяти стоит ебаных 35 баксов/месяц, плюс еще постгрес минимум за 9.
>>356551
>и по каким ключивым словам погуглить
rails linux deploy
Я использую Puma + Nginx и Apache + Passender на другом проекте.
>это сложнее чем git push
После того как все настроишь – можно и через git push (вернее pull).
>И что там насчет дудоса?
Так же как и на остальных серверах.
тред не читай, сразу вопрошай mode-on.
Друзья, на каком то форуме для погроммистов столкнулся с мнением, что чтобы начать изучать Руби нужно уметь в командную строку и прочий линукс. Скажите, насколько были правы эти говноеды. Просто я дальше винды никуда нос не сувал и желания такого у меня нет. фанаты линксов не дуйтесь, душки, но я винда меня вполне утраивала всегда и в командную строку я не лазил. мне никогда не быть прогромистом теперь?
>>356551
>не деплоил проект на сервак
ну в обшчемто если у тебя есть сервер, ты там ставить гит, и потом просто клонируешь, или тянешь из репозитария, ну или хардкорно это scp, потом просто в конфиге нжикса дописывашь пару строк, и потом если у тебя пума, RAILS_ENV=production bundle exec puma -e production -d -b unix:///home/name/site/site.sock
и всё. я рекомендую пуму, как наиболее простую.
с ддосом можешь там подкрутить настройки нжикса. или обратиться в спец компании, которые предоставляют защиту.
>>356752
ну в обшчемто там сложного ничего нету. командная строка мне максимум нужна, чтобы перейти в директорию с проектом и всё. ну и если скрипт запускать, то передать аргументы и всё. школьников не слушай. ставь себе на виндоус комэму и всё будет норм. но смотри не запеки анус, если какой-либо гем не рабоает как нужно на шиндоус.
>>356752
>чтобы начать изучать Руби нужно уметь в командную строку и прочий линукс
А как у вас в шиндошсе вообще руби работает? Я, бегло погуглив, нашел только railsinstaller с еще третьей версией rails и руби 1.9. Хуй знает как это говно работает. Я думал, спермобляди ставят прыщеблядикс в виртуалку и там с ним пердолятся.
Изучать руби можно хоть в браузере, вообще нихуя не устанавливая. Но для работы с ним все равно нужно всю эту хуйню уметь. Настраивать nginx, ставить софт, делать скрипты для capistrano, желательно уметь немного в вим. В общем, знать это говно хотя бы на уровне хуевого сисадмина.
>>356851
> А как у вас в шиндошсе вообще руби работает? Я, бегло погуглив, нашел только railsinstaller с еще третьей версией rails и руби 1.9. Хуй знает как это говно работает. Я думал, спермобляди ставят прыщеблядикс в виртуалку и там с ним пердолятся.
Railsinstaller не нужен. Ставится руби, всё остальное стандартно.
Всё у нас нормально. Руби последний доступен. Нативные джемы собираются без проблем при помощи ruby-devkit. Так что обычные проекты запускаются на ура прямо в винде.
Но без знаний линукса на уровне хуёвого сисадмина в руби-мирке и правда нечего делать.
Ребят, мне в принципе очень нравиться веб, мне похуй на всякие сисадминские холивары. html, css, js -активно вникаю, весьма доставляет. сейчас хочу еще обмазаться бэк -эндом, но все так лохматят php и нахваливают ror и django, вот и уперся в камень на распутье. друзья, неужели, руби и пайтон настолько круче пхп? стоит ли вляпываться в пхп ньюфагу или сразу лучше изучать руби или же питон, as the best practics?
>>356893
>> А как у вас в шиндошсе вообще руби работает?
>Всё у нас нормально.
Нихуя у нас не нормально, производительность крайне низкая, большое приложение ощутимо медленнее работает на хорошем железе. То же приложение на линупс-виртуалке на том же железе летает.
>>356894
Руби как язык + стандартная библиотека в целом сильно качественнее пхп. В пхп чётче ООП из-за своей строгости и отсутствия особо динамических возможностей как рубях, но пхп как язык хуже, а его стандартная библиотека кал.
Рельсы скорее не фреймворк в классическом смысле, а среда разработки веб-параши. Объясняю на пальцах: нет энтерпрайзного ооп, чётких компонентов-классов и АРХИТЕКТУРЫ, тебе дают готовый набор мест, в которые можно вписывать кодоподобные штуки разного вида. Конечно, пространство для обычного кодирования остаётся, но рельсы тебе выкрикивают прямо в лицо: здесь заведено вот так, здесь особая магия местами, здесь каждая функция-хэлпер имеет веер вариантов вызова и ты их все будешь задрачивать. Подобная ситуация царит почти во всех библиотеках, дсл на дсле и дслем погоняет, единообразия мало, каждый кодит как душа просит, но иногда выходят удобные вещи.
Я такой атмосферы как в рельсах нигде не видел. Мне в целом не особо нравится, но решение стандартных задач веб-параши идёт легче, а местами прямо-таки с комфортом, после того как я пообвык. Нравится руби как язык, очень удобны некоторые штуки в рельсах и некоторые парадигмы, которые тебя заставляют соблюдать.
Совет: начни с пхп, сделай три проекта на yii, три на symfony. Если сразу начнёшь с рельсов, станешь геем-хипстором, я гарантирую.
>>356912
> производительность крайне низкая, большое приложение ощутимо медленнее работает на хорошем железе. То же приложение на линупс-виртуалке на том же железе летает.
Ну это ты перегибаешь. Рельсы под виндой на среднем кор ай 5 работают в 1.5-2 раза медленнее линукса на среднем кор ай 7. На линуксе волшебно ничего не летает, на мелких впсах запускать рейк таски, например, - боль и страдание.
Говорю про руби 2.x. Где-то читал, что СЕРЬЁЗНЫЕ ВЕНДОТОРМОЗА были во времена 1.8.
Аноны, поясните за перспективы работs на руби (естессно с рельсами)? Насколько сейчас востребованы спецы, входной порог?
И ещё вопрос - популярная книжка по рельсам, читал восторженные посты на хабре http://www.ozon.ru/context/detail/id/26011201/
Но по оглавлению слегка напоминает "Сайт за 24 часа". Действительно годнота?
хочу обмазаться раби и стать динамико-няшулей
посоветуйте книжек
>>356920
Базовое ознакомление с процессом разработки на рельсах простенького шопа.
>>356920
>448 стр.
>по оглавлению слегка напоминает "Сайт за 24 часа".
>>357178
>448 стр.
Седжвик, Кормен, Страуструп, Хорстманны ссали тебе на ебло
>>313906
Анончик, дописываю проект для сборки пекарни. Хочется, чтобы разбирающийся человек оценил код. Но вот не хочется палить весь исходный код сразу. Можно я залью куда-нибудь один круд, а вы посмотрите и конструктивно покритикуете?
Антон, а стоит ли ставить никсы? Просто я с этим чудом знаком мало, а на мастдае вроде рельсы стоят как надо. Разубеди меня.
>>358192
поставь в виртуалке или второй ОС
FreeBSD рекомендую, т.к. от всяких линуксов красноглазость повышается, а Ubuntu - это вообще второй Windows
>>358192 да. я даже не парюсь подумать, будет то, что пишу где-то еще работать кроме linux или нет.
ну и деплоить то будешь не на windows систему.
Работу-то найти можно на вашей параше теперь?
И дебаггер уже завезли толковый или как всегда?
>>358192
Конечно стоит. Тебе все равно придется с ними работать. На сервере на котором будет крутится твое приложения 99% будет что-нибудь с линуксовым ядром. Да и сама работа над рельсовым приложением это не только сам рельсы, это redis (есть только неофициальный билд для винды), memcached (есть только какой-то древний неофициальный билд), nginx (только бета с обрезанным функционалом) и куча других приложений которых под винду может вообще не быть. Ну и сразу готовься к тому что, если ты скажешь что у тебя какой-то гем не работает под виндой всем может быть на этой похуй. Так что ставь убунту или покупай мак.
Блин, рельсаинсталлер на завезли на никсы?
Как инстальнуть - есть гайд?
>>358192-кун
>>358351
А все, сделал, пачаны, спасибо.
Когда нужно было (как я понял) обновить библиотеки через bundle install, я забыл sudo вначале и протыкал по кругу 3 часа, лол.
Рельсач, есть один круд по имени OpticalDrives. Для круда прописаны стандартные маршруты через
resources: optical_drives
И проблема в том, что основанные на этом ресурсе имена маршрутов пидорасит! Например, для show получается маршрут optical_drife, для edit - edit_optical_drife. >>358413
Открой config/initializers/inflections.rb и добавь/откомменть это
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'drive', 'drives'
end
>>358423
Ну и вообще почитай тут http://api.rubyonrails.org/classes/ActiveSupport/Inflector/Inflections.html
Я не рельсобог.
>>358435
И еще одну.
Как заиметь такую же консольку?
На пикреле rails console. Вы посмотрите как охуенно. Как так сделать? Увидел это тут http://railscasts.com/episodes/181-include-vs-joins. Запись 2009 года. Неужели за это время стало хуже?
>>358440
Мне кажется, или девушка страдает лёгким пиздоглазием?
Рельсобоги, скажите дураку, будьте любезны, ответьте на пару вопросов полного нуба.
1)Что за язык вообще такой - руби? В чем он себя полностью раскрывает? Я пока только веб-сайты на нем видел.
2)Что необходимо учить помимо рублей и рельс для полноценной работы на них? Желательно сразу со списочком литературы, если не затруднит.
Заранее спасибо.
>>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)
Ребята, помогите советом. Я использую 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 }
Бумп.
Вот уже два года, как перестал кодить на Руби и пользоваться андроидопланшетом, а ruboto всё тормозит, но это пока.
>>359996
>обертка на тормознутом языка над тормознутым поделием
Ну я даже не знаю.
Вообще все эти обертки аля рубото, рубимошн - говно ебаное.
Помогите, какие то проблемы с совместимостью гемов. Когда добавляю гем в гемфайл и перезапускаю сервер, то начинают лезть какие-то ошибки, связанные с моделями 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
>>360034
Черт, ну совсем не смущало меня то, что оба гема, а также моя модель имеют в названии слово Twitter.
ary = []
while from < ends_at
from = ...
ary << do_smth
end
ary << do_smth
ary = while ... end
Есть ли хоть один нормальный форум на рубях? Я просто не хочу браться за пыху.
>>360230
посмотри тут https://www.ruby-toolbox.com/categories/forum_systems
>>359934
ну ты наворотил. анти-руби-код. хотя бы с блоками do end сделал. так еще и точка с запятой есть.
еще меня беспокоит order_line_items.find . Find возвращает первый попавшийся элемент, отвечающий условию. Не может быть такого, что в order_line_items будет несколько таких элементов?
>>360096
скинь полный код.
>>360284
>(from..ends_at)
У тебя точка отвалилась. (from...ends_at)
Подскажите, как реализовать в контроллере подобный метод:
def Follower
if params[:provider] == 1
TwitterFollower
elsif params[:provider] == 2
InstagramFollower
end
end
>>360308
Что значит реализовать, он у тебя уже реализован.
>>360348
Ну уж наверное эта реализация не работает, раз я спрашиваю.
>>360349
>название метода с заглавной буквы
>название метода как существительное
>сравнение строки с цислом
Ну я даже не знаю с чего начать, алсо
>TwitterFollower
>InstagramFollower
И что они делают? С виду обычные константы. Вообще хуйня у тебя какая-то.
>>360358
Говорю же, классы сервисов. Мне нужно, чтобы работала именно эта реализация: чтобы можно было в контроллере вызывать методы класса Follower и не задумываться, какой из этих двоих нужно использовать.
>>360358
> >сравнение строки с цислом
Это да, я уже переделал.
>>360380
Просто так название класса ничего делать не будет, как у тебя. Это же константа. Тебе надо как-то работать с этими классами, инициализировать или вызывать соответствующие методы у них, я не ебу что у тебя там.
>>360387
В том то и дело, что константа. В методах контроллера методы классов TwitterFollower и InstagramFollower вызываются без проблем.
>>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
>>360431
Когда обращаешься к Follower, то ошибка:
uninitialized constant FollowTasksController::Follower
>>360432
Так напиши с маленькой буквы - это ж метод должен быть
>>360433
Тогда, если пытаешься метод вызвать, то другая ошибка:
undefined method `follow_by_hashtag' for nil:NilClass
>>360435
Блядь, ну значит он nil возвращает, а это значит, что в params[:provider] нет ни 1, ни 2
>>360437
Бля, забыл совсем, что я сменил тип этого параметра, скопировал из треда метод. Спасибо.
На этот раз у меня обезумела FactoryGirl.
Сначала для тестов был написан кривоватый, но нормально сохраняющийся вариант фабрики и модели компьютера:
http://pastebin.com/pwF44E8G
Потом, когда захотелось заполнять базу рандомными данными, всплыл баг: при множественном вызове фабрики связи :packs в паксетах компьютера не сохранялись, а оставались пустым массивом. Попутно возникло желание запилить полиморфную связь между Computer и PackSet. После запиливания классы выглядят уже так:
http://pastebin.com/rCSJpqtw
Теперь и при единственном, и при цикличном вызове фабрики :published компьютера все PackSet одного компьютера содержат 1 пак с одним экземпляром Ram. Помимо мозоли от фейспалмов, это еще и вызывает вопросы:
1) Почему после запиливания полиморфных связей нормально сохраняется только PackSet с Ram?
2) Правильный ли у меня подход к добавлению повторяющихся элементов в сборку?
3) А может, ну нахер эти полиморфики? Может, в моем случае
нужно было развивать и фиксить 1й вариант?
Программисты, кто использовал gem xmpp4r или Blather? нужно для сайта написать чатик. Но что то я не могу заставить нормально работать этот xmpp4r. Кто нибудь пользовался?
Рор еще не умер?
Я вижу шумиха уже поулеглась
>>360499
Лично я стараюсь избегать колбеков в фабриках.
Лучше писать создание ассоциаций непосредственно в тестах: во-первых, избегаешь головняка с тем, что что-то там не сохранилось или сохранилось неправильно, во-вторых, для каждого теста могут понадобится разных набор данных.
>>360568
> Я вижу шумиха уже поулеглась
>>360564
откуда инфа? у меня на данный момент работает регистрация жабер клиента, коннект, авторизация, отправка реквестов и сообщений. Короче все основное. Но не срабатывают колбеки при получении сообщений. Хотя может я просто что то не так делаю, поэтому и задал вопрос.
>>360741
У меня не работала отправка сообщений в 1.9.3
У них в багтрекере есть пара багов связанных с тредами, там что-то поменялось в 1.8-1.9 переходе. И было написано, что никто пока не портирует на новые версии. Поройся на багтрекере на их гитхабе, поищи, может что изменилось.
Блатхер поновее полюбому. Но ехал дсл через дсл.
>>360745
убил сегодня пол дня на этот блатнойХер, но в итоге он мне не очень понравился. отдельный скрипт на нем хорошо писать. а мне жаббер клиент нужно именно в модель Юзера встроить. Ну у меня то в итоге получилось. Но я испугался того, что blather-клиент нужно там как то в отдельном треде запускать в ручную, иначе он блокирует основной поток. В итоге очканул и удалил его
>>360762
> Но я испугался того, что blather-клиент нужно там как то в отдельном треде запускать в ручную, иначе он блокирует основной поток.
лил
>>360773
сегодня все таки попытался еще раз с blather сделать. на этот раз получилось. Блатхер клиент крутится в своем треде, который создается в контроллере вебсокета (websocket-rails). В отличии от хуевого xmpp4r его колбеки работают правильно, и сообщения принимаются и посылаются сразу по вебсокету в браузер, где сообщение выводится жаваскриптом.
Но теперь проблема такая, что если перезагрузить пару раз эту страницу в браузере, то все перестает работать. Тем не менее жаббер сервер показывает, что этот клиент еще подключен. Видимо он остается жив в отдельном треде, даже после перезагрузки страницы? Я запутался и плохо понимаю как работают все эти треды-потоки-клиенты-сокеты-хуекеты...
>>360835
>плохо понимаю как работают все эти треды-потоки-клиенты-сокеты-хуекеты...
Ну так разберись хули ты.
>>360836
Вроде разобрался, но легче не стало.
Суть такова. Браузер подключается по вебсокетам к серверу. Создается инстанс блатхер клиента. Потом его нужно .run, запустить в новом Thread. Чятик работает. Но если просто нажать F5 в браузере, то произойдет переподключение и клиент пересоздастся, и за одно запустится в новом Треде. Из за этого треды плодятся при каждой перезагрузке страницы. (проверял выводом Thread.list.count).
Если запускать Тред с клиентом один раз, при первоначальном подключении по вебсокету, то при перезагрузках страницы перестает работать код, который принимает сообщения (прием ведь идет как раз в том отдельном треде). Тем не менее, судя по админке жаббер-сервера, блатхер-клиент продолжает оставаться подключенным.
В общем я уже заебался, и подумываю сделать чятик на каком нибудь mongoDB, один хуй jabber сервер не хранит историю. Есть идеи?
Что задают на собеседовании рубисту (рельсы) без опыта?
>>361036
Спрашивают только диаметр ануса. Дальше всему научат.
>какие гемы стоит знать?
>capybara, rack, rspec, devise, cancan, simple_form, solr, sinatra, тысячи их.
Еще раз посоны, какие гемы must know без вот этого "тысячи их".
Гемы авторизации, cells, работа с формами, пагинация, работа с изображенями carrierwave, админка aсtiveadmin.
Что еще нужно знать, чтобы претендовать на вакансию рельсиста. Понятно что тысячи их и что какие-то изучаются за 1 час. Но вот база, типа devise и cancan - это то что уже нужно знать. Вот что еще уже нужно знать?
>>361505
Devise, will_paginate, carrierwave, rspec (если пишешь тесты).
>Что еще нужно знать, чтобы претендовать на вакансию рельсиста
Вообще можно ни один не знать. Гораздо важней хорошо знать руби и хорошо знать основные компоненты рельсов. И не просто слепо верить в "магию", а понимать, как это примерно все сделано. А еще не писать пхп-стайл код. Уметь рефакторить, следовать принципу DRY. Ознакомиться с рельсовыми антипаттернами. Это гораздо ценней знания гемов.
Гемы, как и любые библиотеки, просто инструменты для помощи, которые всегда можно быстро подобрать под задачу и изучить. В конце концов, rails это тоже гем.
В общем не заморачивайся, а иди лучше лишний час почитай Metaprogramming Ruby
>>361540
>will_paginate
Есть же kaminari.
>и хорошо знать основные компоненты рельсов. И не просто слепо верить в "магию", а понимать, как это примерно все сделано
Я вот нихуя не понимаю до сих пор. Хуй проссышь, особенно этот ебучий эктиврекорд.
>>361550
Ну вот это потому что ты Metaprogramming Ruby не читал))
Помогите отрефакторить этот скам.
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
>>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
>>361991
Ох в глаза ебусь, не заметил переменные объекта.
Какие перспективы у РоР? Учу потихоньку, нравится, но щас глянул вакансии и что-то совсем не ахти, тем более на джунов. Не сосну ли?
>>362026
Удваиваю вопрос. За пхп дают столько же, а вакансий в 10 раз больше.
>>362026
Пхп больше, но и на рельсах есть что выбрать. Зачем тогда долбиться в пыху? Ну закончатся рельсовакансии, вернемся все на свою пыхопарашу.
Я вот например в прошлом опытный битриксоид. До сих пор каждую неделю мне на скайп и почту где то по 3 предложения падает. Но я их всех нахуй посылаю. Нет больше желания в этом говне копаться
>>361992
Как можно не заметить? Ты что, блять, полудурок?
>>360941
Ты еще тут? У меня похожая задачка есть, я правда не слишком далеко продвинулся. Так же использую websocket-rails и вот этот пример https://blog.pogoapp.com/websockets-on-rails-4-and-ruby-2/ но мне надо с десктопа(прога на C#) подключаться к этому чатику, у тебя есть какое нибудь решение уже?
>>362227
>у тебя есть какое нибудь решение уже?
какая именно часть тебя интересует?
>но мне надо с десктопа(прога на C#) подключаться к этому чатику
Ты используешь xmpp (jabber)? Тогда просто подключайся к своему jabber серверу (я использую http://www.ejabberd.im/) и посылай/принимай сообщения как любой другой жаббер клиент. Плюс еще в том, что подключаться можно по сути откуда угодно. Проблемы - нужно решить мою проблему, лол.
Кто работал с elasticsearch?
Дело в том что есть два API:
Официально-рекомендованное https://github.com/elasticsearch/elasticsearch-rails
Совсем недавно объявленное устаревшим самим автором http://karmi.github.io/retire/
Автор retire объясняет это тем, что его библиотека не гибкая и сам он присоединился к проекту elasticsearch-ruby. Но elasticsearch-ruby говно какое-то непонятное, а retire красивый и понятный.
Что же делать? Что использовать в проекте? Вы сами как?
>>362355
Философскай камень. Использовать устаревшую но ламповую либу или новую, но бездушную.
>>362312
Для меня защита передачи данных будет критично, но вроде жаббер умеет в шифрование. Но сейчас я подключаюсь напрямую, проблема в том, что у websocket-rails есть только GET маршрут, но нет POST и я пока не понял как передавать данные.
А насчет твоей проблемы, почему бы не сделать сервер в отдельном потоке, который бы принимал сообщения от клиенов и при их простое убивал их, и не надо было каждый раз создавать новый слушатель. Я делал что то подобное на яве давно, но пока не знаю как это на рельсах сделать.
>>362448
>и я пока не понял как передавать данные.
Из c# клиента? ну надо как то симулировать передачу данных так же, как это делает браузер, подключаясь по вебсокету. Пишет там как то в поток подключения наверное. Я не вникал в концепцию.
Поясните почему модель User, а контроллер Users?
>>362563
Ньюфаг в треде.
В файле config/routes.rb можно создавать связи между запросами на определённый адрес и экшнами контроллеров.
Также там можно создать такую штуку, как resources, когда речь идёт о чём то перечисляемом (фоточки, пользователи). Это создаст пути как на пике (ресурсы во мн. ч -> контроллер во мн. ч.).
Согласно стандартам, если мы говорим о пользователях, то и пишем resources :users, а не resources :user.
А это норм? https://ideone.com/HofMnK
>>362563
Не слушай долбоеба ниже. Типичный рубироид.
Модель User - потому что класс описывает пользователя (не пользователей). Контроллер Users, потому что такое соглашение именования. Основой для это лежит то, что контроллер действительно в большинстве случаев работает с множеством сущностей конкретного типа.
>>362724
А почему конвенция такая? Потому что контроллер управляет юзерами, а модель описывает юзера.
>>362712
Ты лучше скажи что это делает? Каша какая-то. Метод в 26 строк, конечно не норм. Почитай про рефакторинг, clean code, хуе-мое, разделяй и властвуй на мелькие методы.
>>362727
Да. Вы оба правы. Просто тот чувак тоже прав.
Кстати. А ведь можно
UserController
resource :user
но это уже другая история.
Я имею ввиду, как оно вообще устроено? Вот будет допустим модель Govno, значит контроллер Govnos?
>>362731
Делаю статистику, нужны данные о количестве отправленных товаров, разбитые по месяцам и локациям. Например, в мае из места А ушло 5к бутылок, из места Б 4к, всего 9, столько-то налога заплачено, столько-то всего литров. Конкретно этот метод создаёт хеш месяц => отправленные товары. Потом идёт что-то типа:
months_with_items.each do |month, order_items|
locations.each do |location|
тут общей к сумме плюсуются данные о локации и создаётся объект для отображения во вьюхе
end
end
>>362738
В рельсах есть хелпер pluralize, ну и это, конечно http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html
>>362743
А что там трудного-то? Один метод достает товары за определенный месяц, другой собирает какие-то там ид судя по коду и т.д., т.е. каждый делает что-то одно и возвращает какой-то результат или меняет состояние, а потом собираешь все эти мелькие в этот и работаешь дальше.
Начни хотя бы с вынесения каждого блока в отдельный метод. У меня глаза вытекают от этого, как будто код на жабе читаю. Я пасс.
>>362724
Он прав, но спросили почему так называется. Этот начал нести какую-то хуиту про ресурсы и роутинг. Чего, про что несет? Вот такие как он и пишут документацию, что потом нихера понять нельзя. Руки бы отрывал.
>>362731
>разделяй на мелькие методы
Да-да, превращай код в шизо-лапшу. Пусть потому дизасемблируют его.
Иногда лучше написать большой не dry метод, но ясно описывающий логику, чем строить изощренную хуиту, которую придется изучать под лупой. А какое блаженство вносить изменения в такой код - половиная dry-методов становится ненужна, другую половину нужно модифицировать и еще половину дописывать.
>>362772
Я конкретно про его случай говорил, там "ясно описывающей логикой" не особо и пахло, по крайней мере для меня. Не будем превращать тред в кодорефакторингосрач.
>>362767
Удваиваю. Он мог бы с тоже же правдивостью и информативностью написать что небо голубое.
Рубигоспода, помогите начинающему!
Есть контроллер товаров. Добавление товара должно происходить через 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 %>
>>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
Читаю книжку, выполняю задания по гайду. Что делаю я примерно понимаю, но вот в голове оседает немного. Как быть, это у всех так?
>>363306
Продолжай читать, но и в код который перепечатываешь/пишешь тоже вникай. Тоже так было, но потом в нужный момент все вспоминается.
>>363342
Интересно, сам хочу начать учить рельсы просто.
bump
http://www.schneems.com/ut-rails/
Короткий и понятный курс.
Только что закончил читать туториал Хартла, информации очень много, поэтому в голове мало что осело, но примерно запомнил. В конце книги есть задания, но допиливать чужой проект, который я просто копипастил по ходу чтения не хочется. Буду пилить свой собственный и уже его шлефовать по полной.
>>364721
Будут какие-то советы\напутствия? Алсо, что писать то посоветуете, блог или имиджборду?
>>364748
Я просто сложил блог и борду и получился форум. В форуме фичи и от бложика и от борды.
>>364749
>Я просто сложил блог и борду и получился форум.
Я просто сложил хуй с говном и получился ты.
Посоветуйте годных гемов для бложика.
Украл скринкаст Хартла. Нормально же его просто смотреть, а не повторять? А то там рельсы старые и гемы не ставятся.
>>365128
Чето попробовал поставть дивайс и тут же обосрался.
Как вывести имя автора поста?
>>365332
Всмысле есть модель User и модель Post, юзер может отправлять\редактировать\удалять посты, но вот вывести рядом с заголовком поста имя автора у меня чего-то не получается.
>>365334
Ассоциации то есть между ними? Как-то @post.author.name наверное.
>>365348
>Ассоциации
Ну belongs_to и has_many, если ты об этом.
>@post.author.name
Ну суть примерно такая, только метода author нету, а @post надо правильно определить. Я представляю примерно так
<%= link_to @post.user.name, @post.user %>
>>365352
link_to создает ссылку, надеюсь ты это знаешь.
Если ты создаешь ссылку, то куда он у тебя должен вести?
А если просто вывести имя, то link_to не нужен. Выложи модели куда-нибудь, точнее скажем.
>>365356
http://ideone.com/B1lznI - user.rb
http://ideone.com/6BaiId - post.rb
Недавно что-то слышал про микросервисы. Говорят лучше монолитных рельсовых приложений. Весь бэк-энд разбивают на микросервисы, которые общаются друг с другом через API без фрон-энда. Я новичёк и стоит ли мне про это дальше читать, или продолжать делать своё приложение для портфолио в Хартл-стайл? Я просто хочу быть особенным и удивить работодателя своим умным кодом.
Давайте пойифимся.
Я предупредил.
#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
class SignUpPage < SitePrism::Page
element :sign_up_form, :xpath, ".//form[@class='form-vertical register-form']"
end
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
Then(/^I should see '(.*)' page$/) do |page|
if page.eql? 'Sign Up'
@projectname.sign_up_page.sign_up_form.should be_visible
end
end
>>365425
Похоже ты не подключил файл, содержащий SignUpPage класс к projectname.rb. Алсо, мне Cucumber не нравится. Я нашёл turnip от создателя Capybara, позволяет исполнять фичи через RSpec, заместо движка Cumumber. И степы писать в сто раз удобнее.
Мимо новичёк.
>>365434
У меня в env.rb есть следующее
require 'pages'
Dir["#{File.dirname(FILE)}/pages/*_page.rb"].each {|r| load r }
Что бы связать модель Comment с моделями User и Post, коммент помимо прочих колоноки belongs_to должен иметь так же user_id и post_id, верно?
>>365437
отмена. Я долбоеб. У меня файл не в той папке лежал, лол.
>>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
Рубаки, а кто где хостит свои проекты?
Подскажите, как правильно составить correct_user, ну или где почитать об этом.
В общем в CommentsController стоит
before_action :correct_user, only: [:edit, :update, :destroy]
def correct_user
@comment = current_user.comments.find_by(id: params[:id])
redirect_to root_url if @comment.nil?
end
Есть один самодельный твитор, как запилить лайки к твитам? Будет хорошо, если ткнете где почитать.
>>365908
Хули там читать? Модель Like со связями с твиттом и юзером, который сделал лайк. Если хочешь лайкать ещё комменты какие-нибудь, то делаешь полиморфную связь вместо связи с твиттом.
>>365910
Ну вот про это и прочитать, какие колонки в модели лайк и дизалйк и тд.
>>365911
Алсо может лучше гем какой? Я пилю первый проект в учебных целях, он получается почти без гемов, вот как раз и разберусь как гемы ставить.
Все уже, запилил гемом кароче, заебись че. Так бы пердолился весь день, как обычно, а тут за 5 минуток.
Как теперь эти лайки сделать через аякс? Пробовал примерно так, через like.js.erb, но чего то не сработало.
$("#likes-count").html('<%= tweet.get_likes.size %>')
<%= @tweet.get_likes.size %>
<%= tweet.get_likes.size %>
>>365910
Я бы лучше добавил дополнительное строковое поле с id, лайкнувших твит пользователей.
Когда создаю rails petuh
→ ruby 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
>>366088
Бля, кажется что-то начинаю понимать. Сука, блядь. Поясните.
>>366132
Ох ебать, это смотря как ты рельсы ставил. Обновись, хуле ты как слоупок.
>>365927
>like.js.erb
Вспомнил один вопрос, который давно меня волнует. Что, если я использую слим иои хамл, а не ерб? Понятно, что последний будет работать из коробки, но мне не хочется писать ерб-код, хочу няшный слим/хамл в жс-партиалах.
>>366148
Добавляешь нужный гем в gemfile, меняешь .erb на .haml или .slim и ынжой.
Заебал уже. Гугл для кого придумали?
>>366072
Подойдет и такой вариант, если не планируется делать какие-то хитрожопые sql запросы с группировкой и агрегацией.
>>366150
Вообще правильно говорят, js-темплейты проще на erb поддерживать - со slim и haml из-за их отступов потом получается нечитабельная каша
бамп
Я прошел тест на одеске, набрав 0,7 баллов из 5. Год как работал с платформой. Вот я лох, однако.
Как правильно приделать бб-коды? Я поставил bbcoder гем, в show.html.erb прописал
<%= @post.body.bbcode_to_html %>
<%= simple_format(@post.body.bbcode_to_html) %>
>>366415
Спасибо, решило проблему. Только теперь тег <br> не срабатывает, можно исправить?
>>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
>>366428
Оно конфликтует с truncate, получается пикрелейтед. Есть идеи, как пофиксить?
>>366436
Впилил, чтобы всякое nil говно в случае чего не падало. Поясни пожалуйста, что не так.
Могу предположить, что такое следует делать в модели, но мне показалось, что проверку лучше впилить в одном месте, чем во всех моделях.
>>366473
ну или как вариант выделить функциональность в модуль, а потом его инклудить в нужные модели. Короче расскажи, что не так.
Перекат пилите, хули вы.
Есть статьи и комментарии. Статья имеет много комментариев.
При загрузке какой-то определённой статьи с комментариями всё хорошо, создаётся 2 sql запроса - для статьи и комментариев.
Но когда я хочу сделать отдельную страницу со всеми комментариями из всех статей, и для выбора всех комментариев пишу Comments.all, создаётся куча sql запросов, по одному для каждого комментария.
Как это исправить? Не могу понять как тут eager loading использовать.
>>366615
Точнее комментарии выбираются нормально (SELECT "comments".* FROM "comments"), но также создаётся n запросов вида (SELECT "articles".* FROM "articles" WHERE "articles"."id" = ? LIMIT 1), где n = количеству комментариев.
>>366473
Ну как бы это bad practice. Через respond_to? можно или тупо вызвать to_s на сontent'e.
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