24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
1. C чего мне начать, чтобы стать рубистом? Отличным началом будет Eloquent Ruby. Для тех, кто хочет сразу понять суть - Why's (Poignant) Guide to Ruby.
Затем читаем Metaprogramming Ruby. На протяжении чтения вы должны писать код, конечно же. Чтобы не задавать глупых вопросов уровня дибилоида, который не нашёл доки > http://www.ruby-doc.org/core-2.0 Вопросы уровня >метод чтобы разбить строку в массив игнорируются, автора исключают из школы и отправляют в биореактор.
2. Какой gem посмотреть, чтобы понять, как писать код? Лучше всего посмотреть небольшие gem'ы вроде cancan, devise, camping.
3. Есть ли GUI для руби? Да. Есть обвязки к Qt, GTK, wxWidgets, Shoes, fxruby (одобренный).
4. Можно ли писать на руби мобильное ПО? Да. Для iOS есть RubyMotion промышленного качества, для Android - весьма тормозной(ну это пока) ruboto. Для WinPhone традиционно ничего нет, но его ценителям не привыкать.
7. Хорошие практики по руби и рельсам? Читаем Rails AntiPatterns, буквально на неделе вышли Rails Best Practices, также неплохо посмотреть Rails Recipes.
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, плагины к эклипс и нетбинс.
>>384098 Тесты были где-то в 60% встречавшихся мне проектов. В основном тестируют какую-то сложную логику в моделях, даже 50%-го покрытия ни разу не встречал. На какие гемы стоит взглянуть: rspec, rspec-its, factory girl, guard, capybara, vcr (если пользуешься каким-нибудь API), faker, database cleaner
Сейчас поддерживаем проект, в котором тесты моделей и прочего говна написаны на рспеке, а фичи капибара+кукумбер. Думаю так и надо делать, что скажете?
Посоны, я этот ваш "буквально на неделе вышел..." из ОП-поста читаю уже второй год, по-моему. Не могли бы обновить? А то мне обмазаться потребовалось, а тред протух.
Объясните еще, зачем нужен RSpec, когда есть модульные тесты? Выглядит как долбоебизм - "Сэмулируем клик на Sign In, поищем на странице Success". Почему бы мне просто не протестировать метод авторизации? А то эдак получается я весь стек рельс протестировал - и авторизацию, и вывод сообщений, и переадресацию, и рендер шаблона. И на самом деле хуй знает, авторизировался юзер или нет. Может просто сообщение вывел контроллер.
>>384242 Да, /b/ро, это очевидно, и конечно я буду делать так, как мне удобней. Просто не зря же куча народу его использует, разрабатывает. Скорее всего, я что-то не догоняю. Вот мне и интересно.
>>384251 >Делай, как делали до тебя, очевидно же. Если будешь нарушать устоявшиеся правила, будут лишние проблемы и вопросы. >Живи в пещере и ешь сырое мясо, как делали до тебя, очевидно же. Если будешь нарушать устоявшиеся правила, будут лишние проблемы и вопросы.
>>384221 Не нравится мне его стиль изложения материала. Говорить быстро и монотонно (не то чтобы это плохо) будто робот читает, код пишется на перемотке, да и плюс большинство его видео - это тупо пересказ доков.
Алсо, оп, указывай в следующий раз ссылку на архивач, а то старые треды уже метрвы.
>>384251 >Делай, как делали до тебя, очевидно же. Если будешь нарушать устоявшиеся правила, будут лишние проблемы и вопросы. Я имел ввиду не текущий проект, а вообще тестировку. Сам я джун зеленый и не знаю как правильно, но так кажется справедливо.
Ну что, анончики, есть тут с кем поговорить? Я все еще мечусь между выбором серверного языка, и будущего success успеха на всяких одесках. Короче, убедите меня учить рельсы, убедите что я не проебу время зря, и не проебу свою жизнь. мимо мечущийся между нодой и рельсами
>>384275 Да нахуй нам тебя убеждать? И так макак с каждым днем больше. Того глядишь и через пару лет анон отберет у тебя работу. Так что, пиздуй в свою ноду.
>>384277 Обещаю не макакить на рельсах же. Просто я боюсь, что к тому времени как я отлично осовоюсь в рельсах, нода уже так разрастется, что затемнит рельсу.
>>384287 >нода уже так разрастется, что затемнит рельсу Не затемнит. Рельса одна, у ноды таких рельс целый локомотив с 3.5+ инвалидами в комьюнити. А вообще что мешает дрочит оба?
>>384294 У рельс - гемы, у ноды - модули. Одно и тоже ведь? И оба лишь перделки к основному языку. У ноды по моему мониторингу довольно большая комьюнити, кучи модулей, и прочего, и она постоянно развивается, но даже при этом рельсы со стороны выглядят внушительней, но это пока. А я боюсь обосратся со своим вложением времени в язык. Оба учить лень, не надрочу нормально ни то, ни другое.
>>384297 Попробуй оба, серьезно. По книжке на один язык будет достаточно. По ходу чтения/писания сам поймешь что тебе больше подходит, всяко лучше чем предвзятого мнения анона.
Ребята, а что у вас есть из асинхронного/параллельного и реалтаймового для рубей(рельсов?)? И желательно актуальное, а не протухшее. Или это решается какими-то другими="не руби/рор" средствами?
>>384328 Там надо ебашить вложенностью, типа [code] routes.rb
resources :news do resources :comments end [/code] потом если ты хочешь создавать комменты под новостями, на news#show, то получится прмерно следующий код [code] news#show
def show @news = News.find(params[:id]) @comment = Comment.new end [/code] [code] comments#create
def create @news = News.find(params[:news_id]) @comment = @news.comments.create(comment_params) @comment.user_id = current_user.id end [/code] и форма выглядит вот так [code] news/show.html.erb
Как лучше назвать API враппер? Просто название сервиса уже есть (там первая версия API, а я делаю для второй), сервис-api тоже забито, но тот гем имеет один фатальный недостаток. Что лучше - сервис_ruby, сервис-v2 или ещё что-нибудь?
>>384447 Зависит от задачи. В некоторых случаях - это пара строчек в конфиге. В некоторых случаях придется писать много кода. Но никто не мешает вынести код в модуль и потом писать пару строчек в конфиге... ну ты понел.
>>384370 Удваиваю вопрос интеграции с приложениями, поддерживающими веб-сокеты или SSE. >>384518 Не забудь теленка на зиму забить, избу утеплить и дров запасти, а то чего доброго помрешь в средневековье то.
>>384556 МЫ ВАМ ПЕРЕЗВОНИМ >>384517 Он и так мечется, а после трайхачкеле будет сомневаться ещё больше. Я от так и не определился и каждый день решаю учить что-то другое.
Установил себе последний rspec и он почему то все время ругается на мой устаревший синтаксис, хотя я пишу в новом, еще падла почему то ругается на spec_helper.rb если я в нем пытаюсь писать конфигурацию, получается только в rails_helper.rb ее писать. Ну вообщем скажите где тут у меня устаревший синтаксис, ну и обоссыте код попутно, и скажите как его улучшить.
require 'rails_helper'
RSpec.describe User, :type => :model do context '#delete' do before(:example) do @user = User.new( #:name => "user_1", :email => "[email protected]", :password => '123' ) @user.save!(:validate => false)
#@user = FactoryGirl.create :user end
it 'delete user' do #pending '1' expect { User.delete(@user) }.to change { User.count }.by(-1) end it 'delete user`s messages' do #pending '1' expect { User.delete(@user) }.to change { Message.count }.by(-3) end end end
>>385370 gem 'rspec-rails', '~> 3.0.0' Вот так ругается http://pastebin.com/va3jkezi но как я сейчас заметил такое он мне пишет только в рубимайн, в консоли все нормально, видимо совет удалить из .rspec вывод warning сработал только для консоли. Ну и норм.
>>385373 Перекатываюсь в рельсы из ынтырпрайз-ява-параши, так что рубимайн мне удобная, все есть в одном программе.
>>385376 Устанавливал эту срань, там еще какиех то конфликтов повыскакивала целая куча, я уж думаю что у меня версия рубей слишком старая 2.0.0-p353. Это норм или лучше обновить?
>>385375 То ругается почему на require 'spec_helper' в rails_helper
>>384370 Есть такая замечательная штука, как Faye, также есть websocket-rails, а еще есть tubesock, а еще можно прям из EventSource брать эвенты (у меня нормально с ним не получилось).
Котаны, можно ли через remote: true ссылки задавать несколько разных действий в файле .js.erb? То есть например мне нужно подгружать аяксом форму, а потом еще дополнительные поля к ней(партиалом, несколько за раз) как такое лучше сделать?
>>386174 Лучше не использовать js.erb с кучей jquery лапши, а использовать фреймворк для фронтенда. На твой выбор angular/ember/knockout/react (я в курсе, что это не фреймворк).
Парни, нужна помощь по рельсам. Даже может не по рельсам, но в их конексте.
В общем проблема такая. Есть пользователи и они при регистрации запоняют анкеты. Пользователи регаются как ИП, ООО и т.д., несколько видов в общем. У кажого вида свой набор полей в анкете, частично пересекающийся. Причем это не просто текстовые поля. Полем может быть, например, список сотрудников (имя, профессия), ответственное лицо (имя, контакты), для физ. лица - его образования. А есть еще тип пользователя "объединение" - это когда помимо прочих реквизитов, еще и состав этого объединения, т.е. как-бы has_many :organizations. То есть по сути это как has_many/has_one ассоциации. Только ничего из этого в виде отдельных сущностей хранить не нужно, смысл делать это отдельными полями заключается только в валидации и наглядом предоставлении анкет администратору.
Как с этим быть? Во-первых полей очень дохуя. Во-вторых поля получаются составными, и при этом их нужно валидировать. Подскажите, как это правильно орагнизовать?
>>386551 Если используешь postgres и не хочешь создавать таблицы для некоторых ассоциаций, то просто используй json поля. Можешь сделать одно для всех или для каждой ассоциации свое поле по-вкусу.
Котаны, хочу контрибутить в опенсорс, а на opensourcerails.com полтора проекта и те какие-то неинтересные. Есть еще подобные ресурсы или может кто хочет пилить совместный проект?
http://pastebin.com/BbuU9FpD Resource.get - однострочник, смотрит на входящие данные и посылает их либо в get_all, либо в get_one. Оба метода немного колдуют над параметрами и в конце концов вызывают Tradegecko.api.get.
Первый тест зелёный, второй выплёвывает бугурт webmock'a, мол, незарегистрированный реквест. Почему не срабатывает allow(...) и как это исправить?
Посоны, такой вопрос. Учу сейчас рельсы, больше ничего не знаю. Стоит ли позиционировать себя как бэкэнд программиста, или не выёбываться и сразу учить ещё и JS? Работать собираюсь в ДС.
И ещё вдогонку вопрос. В учебниках советуют читать чужой код для образования. Посоветуйте годного кода. Желательно рельсовых приложений, со всякой ООП-поебенью там наследование зависимостей и прочее хуё-моё. Чтобы вот в это вот въехать. С комментариями.ю
>>389379 Где-то читал, вроде у Макконнелла, что если не подразумевается пользовательский ввод и изменение данных (как в случае с состояниями постов, комментариев, сообщений), то константы и всё такое - отличный выбор, они решают проблему и минимизируют сложность.
>>389474 Подтяни жс до среднего уровня хотя бы. Это как быть поваром и не уметь резать фрукты. Я, мол, только по овощам спец.
>>389518 Когда будешь пилить что-нибудь своё, тебе непременно встретится целая куча неизвестных доселе слов в гемфайле. Оче рекомендую пройти на гитхаб и посмотреть код этих гемов. Начать можно со спек, чтобы вообще было понятно, за что отвечает каждый класс или модуль. Еще полезно и код рельсов посмотреть, ООП и метапрограмминга там хоть жопой жуй.
>>384220 Меня такое обилие незнакомых английских слов в книжке "Why's (Poignant) Guide to Ruby" вгоняет в депрессию, хоть там и забавные картиночки. Все-таки скучная с первого взгляда "Eloquent Ruby" намного проще в понимании.
Привет, аноны, ньюфаг ИТТ. Пересел со Спермы на Убунту и установил Руби через рвбм. Все вроде работает, но с хуя ли Джини не видит интерпретатор рубишный? ЧЯДНТ?
>>390822 Ну там есть такая штука, которая позволяет компилировать и запускать программу прямо в джиниевской среде. С другими языками эта хрень работает, а когда пытаюсь скомпилировать простейшую программку, вылазит ошибка, мол "Руби нот фоунд".
>>390838 Если кому интересно, решил проблему как эталонный долбоеб: установил еще один Руби, уже через apt-get install ruby-full. Делать так пиздец как тупо, но зато теперь все работает как положено.
Хочу получать деньги. не брать у мамки Немного покурил руби на рельсах. Какой сайт запилить, чтобы опыта себе набить. Я не спрашиваю стартап идею не посылайте нахуй, а просто какой сайт скопировать? Не хочу магазин пистать, хочется на чем нибудь интереснее потренироваться. И чтобы можно было это потом добавить в несуществующее резюме.
>>391107 По моему оператор || выполняется перед ? и у тебя получается выражение if ((str.include? "01") || str.include?) "02" попробуй расставить скобки или используй оператор or.
>>391108 Хотя я сам похоже скобки не так расставил, но вот что я нагуглил: Use &&/|| for boolean expressions, and/or for control flow. (Rule of thumb: If you have to use outer parentheses, you are using the wrong operators.)
>>391118 and/or не тоже самое что && c ||, так что следовать всяким гайдам я бы не стал не разобравшись как они работают, иначе потом хуй выявишь откуда баги лезут.
Курсера не подходит. Там нет рельс, иначе я бы сюда не пришел. Вобщем, что можно сделать себе в портфолио ни разу не работав? И чтобы не магазин.
Интересны нейронные сети, роботы и прочие. Но я перевелся с заебись специальности 3 курса в универе на заочку вебов и плюс взял академ на год. Мне просто грустно было, и я не смог учиться. Так что теперь мне нужны деньги, чтобы никто не кукарекал, что мне нужно в универ и еда, и будущее. И тогда можно будет заняться тем, что нравится.
Тогда сразу еще один вопрос по поводу скобок - >>391107 Если проблема в скобках, то почему тогда написав if str.include? "01" - то есть только одно условие, мы не получим ошибок? Когда нужно было бы написать str.include? ( "01" ) ?
>>391227 Тому что каждый раз, когда чуешь, что в коде может возникнуть путаница при парсинге и все пойдет по пизде, ставь скобочки когда вызываешь метод.
А по теме операторы выполняются перед вызывами методов и у тебя происходит следующее:
>str.include?("01" || str.include? "02")
В скобках || выполняется перед вызывом str.include? "02", т.е. получается "01" || str.include? "02" (заметь, "02" в этом случае идет не как аргумент к include, а как аргумент к || от чего и ошибка.
>>391226 Математика. Анализ и моделирование информационных систем. (Квалификация – Математик. Системный аналитик)1-31 03 01-06 Там были и нейронные сети, и UML и бд, и все что хочется. Для меня хорошая специальность.
>>391367 А. Просто она мне находила которые скоро начнутся и фильтровала которые уже идут давно и кончаются почти. Олсо то что там указано я вроде уже смогу сделать. Мне просто бы идею. Но я короч наткнулся на гениальную мысль и решил перестать ныть и начать делать, но не магазин. И не блог. If you want to work in app development, develop an app or 2, or 3...or 7! If you want to work in web development build your own website and blog. Post your experiences.
Поясните мне про javascript, jquery, coffeescript. Вот как это понимаю я: 1. javascript - просто ЯП 2. jquery - фреймворк для жаваскрипт, который позволяет работать с ГУИ сайта 3. coffeescript - препроцессор для жаваскрипт, который сокращает кол-во кода, который надо написать и делает процесс более удобным. Где я ошибся? Или мне стоит задать этот вопрос в жаваскрипт-треде?
>>391675 > 2. jquery - фреймворк для жаваскрипт, который позволяет работать с ГУИ сайта Скорее делает этот процесс более удобным. Манипулировать элементами можно и начистом ЖС, иногда это даже удобнее. Остальное норм.
>>391675 > jquery - фреймворк для жаваскрипт Я бы скорее сказал что библиотека, "фреймворк" всё-же подразумевает структурированную основу для написания проекта. но это маловажная битва терминов, суть правильная
Посоны, вопрос такой. Я тут несколько дней учу основы руби, прохожу потихоньку руби koans, чувствую, что душа лежит у меня к этому языку и хочу дальнейшую судьбу связать с ним. Но сейчас халява повернулась ко мне обратной стороной лишился стипухи и соответственно возникла необходимость пойти работать, чтобы получать хоть небольшую зарплату, но стабильную. Да и еще одна причина - нужно набираться опыта. Вот я подумал, не пойти бы мне по началу на фронтэндскую должность, ибо HTML, CSS и JS ну это же вообще легко. Подучу jQuery с JS, пойду во фронтэнд, наберусь там опыта и параллельно буду углубляться в руби/рельсы. А дальше уволюсь уже спокойно пойду на должность рубиста. Как вам план моего успеха?
>>391827 Говно, тебя затянет в парашу фронтэндов, из нее не выплысть. У меня был такой же план, как у тебя, но я уже 2 год клепаю формочки под ие 8 блять в ооо вектор.
>>391852 >Говно, тебя затянет в парашу фронтэндов, из нее не выплысть. У меня был такой же план, как у тебя, но я уже 2 год клепаю формочки под ие 8 блять в ооо вектор. Двачую. Сам только что бросил фронтенд парашу. Это ебанное дно.
Ребят,подскажите. Хочу начать учить новый язык программирования,ибо заебалось уметь только в паскаль,стыдно мне.Так вот.Хотел поначалу учить C++,но узнал об этих ваших руби и питонах,даже интересно стало.Актуальнее ли руби/питон чем С++ на сегодняшнее время?Будет ли актуален в будущем?Универсален ли он?Обычно в каких областях он используется? П.С. Английский знаю,
>>392183 Самые АКТУАЛЬНЫЕ языки(искал работу в конце сентября, в основном на hh.ru и oDesk): Для веба - Javascript(PHP у нас, RoR - не у нас), для тырпрайза - Java/C#(1С епта), для байтоебли, графики-хуяфики - C++(С).
Работу с руби без рельсов хуй найдешь, а на рельсах тебя вероятнее всего посадят поддерживать легаси говнецо от людей, которые про руби без рельс вообще не слышали. Да и предлагают модным RoR-девелоперам иногда меньше, чем грязным PHP-макакам. Конечно, я могу ошибаться(есть тут кто не на рельсах?) да и тебя может не пугать такой расклад, дело твое.
Я считаю, учить руби стоит для души, чтобы посмотреть как можно красиво и правильно сделать ООП с метапрограммированием, а потом писать свои небольшие проекты вечером под клетчатым пледом. А чтобы деньги зарабатывать - выучи JS или тот же C++, они вряд ли когда-нибудь потеряют актуальность.
Питон, кстати, сдает позиции, по-моему. Совсем не то, что было пару лет назад.
Кстати поясните мне про ПЫХУ, я просто перекатываюсь в рельсы и до этого не сталкивался с веб-программированием. Из любопытства посмотрел фреймворк yii. Но что то я там не увидел применения MVC паттерна, только php файлы по всюду. Так что рельсы гораздо удобнее структурированы. Но чем еще рельсы лучше любого фреймворка на пыхе? Наверняка тут есть те, кто пришел в рельсы из php.
>>392202 Фреймворк для веба >>392204 Из любопытства посмотри Laravel, почти всё спиздили с рельсов и получилось вполне отлично. Сам с пхп слез два года назад, но увидив Laravel даже частично вернулся, по крайней мере пару проектов взял с радостью.
>>392196 >>392188 Спасибо,друзья.Решил всё-таки выучить Си-шку++,ибо язык очень универсальный и вроде как нетрудный.Я скачал первую книжку-самоучитель Лафоре.Годный ли это самоучитель?Или есть более гибкие и информативные аналоги?
>>392294 Я бы начал со след. книг: Б. Керниган, Д. Ритчи — «Язык программирования Си» А. Ахо, Д. Хопкрофт, Д. Ульман — «Структуры данных и алгоритмы» Р. Стивенс — «Программирование UNIX» (там разобраны системные ф-ции) Всё есть на русском.
>>392250 >А то Ну и пусть кто-нибудь отзовется здесь, кто реально работал с руби без рельсов больше чем на один проект. >>392270 >А если на одеск.ком податься? Добро пожаловать в мирок $5/h и легаси говнеца от индусов. RoR стал чем-то вроде PHP там. Да даже на PHP адекватнее позиции.
>>392386 А что вообще поменялось в объектной системе руби с какого-нибудь 2005го года? Основа все та же, разрешение методов такое же, метод миссинг есть, синглтон-классы есть, пердолься - не хочу. Разве что базовый класс поменялся.
>>392393 А, ну тогда хуй знает. Вряд ли где-то придется использовать эти знания, но зато вся "магия" пропадет, если она еще осталась в голове, все должно стать просто и понятно.
>>392524 >Промокод дается после реги на нюрелик, так? Не только реги, но и деплоя. >А номер и прочие данные просит во время реги. Я фейковые указал, кроме мыла.
Сап, пацаны, делаю рогалик на руби для терминалов, делаю не потому, что хочу опять создать какую-то игру, а просто набираюсь опыта. Так вот, хотелось бы узнать, как лучше отрисовывать псевдографику? Сейчас все рисуется через матрицу, но мне бы хотелось сделать так, чтобы создавались рандомные комнаты, соединяющиеся тоннелями, и чтобы комнаты при выходе из них, были невидимы игроку, прямо как в старом добром Rogue. Смысл есть переходить на curses или другие библиотеки, или все-таки лучше работать через матрицу?
>>392845 В хохлоДС JS джуном зарабатывал 1k$, миддлом 2k$. Стремиться надо к 4-5k$ хотя бы. Никогда не понимал обиженок, которые годами сидят на одной работе и охуительно поднимают себе зп с 500$ до 700$. Просить адекватную зарплату сразу - это же так просто.
Учу я этот ваш Ruby: прочитал Eloquent Ruby, Rails Tutorial, продолжаю обмазываться. Мне всё это очень нравится, но я боюсь, будут ли рельсы актуальны и найду ли я интересную работу? У тебя интересная работа, анон? Чем ты занимаешься?
Вообщем пытаюсь учить по книжке, возникла проблема. Если я переименовываю application.css в application.css.scss то никакие стили кроме тех что в application.css.scss больше не отображаются. Вот например store.css.scss нужно потом как-то отдельно подключать или же application.css не нужно приписывать scss?
Собственно вопрос как и в теме поста. Хочу понять всю магию рельсов: как они взаимодействуют с сервером. В каком моменте создается каждый контроллер. Как каждая модель и в какой момент выполняет запросы с БД. Как хранятся сессии пользователей и как сервер понимает какому клиенту какой ответ отправить. В сорцы рельсов не гоните, хочу туда нырнуть, как ознакомлюсь хотя бы с базовой теорией. Приветсвуются статьи или книги на русском или английском языке. Не дайте остаться в мартышках, а прокачать скиллы до мастера.
>>393431 Тебе нужно найти и прочитать "The Rails 3 Way", или если с английским плохо - "The Rails Way" на русском про вторые рельсы. Узнать, что такое rack, middleware, middleware stack и какое отношение это все имеет к рельсе.
>>393545 Использую эту книгу чаще как справочник, ибо она слишком подробная. Может скажешь какие разделы из нее прочитать? Или просто искать по тем ключевым словам что ты написал? Или все таки прочитать ее от корки до корки?
>>393205 Нет, лол. Я так привык к тому что рельсы и сами все делают что даже не подумал просто @импортом подключать, да и не написано об этом нигде. >>393206 Почитаютал, ещё перечитаю, а то все как-то запутано.
>>392367 Поясните, пожалуйста, новичку за ньюрелик!
Я зарегался, скачал гем, установил его через бандл, что дальше? В видео-инструкции на сайте сказано: "А дальше просто задеплойте и все", как это сделать? Деплоил раньше только на хероку.
>>393609 Если тебя интересуют курсы на кс, то достаточно создать пустое приложение, прописать гем в гемфайле, установить его, скинуть тот конфиг, что тебе дали в /config/, запустить локальный сервер и перейти на главную страницу твоего сайта. После этого на почту код придёт.
Анон, питоноеб в треде. Ни разу не уэб-девелопер. Почитал эта ваши руби, поиспользовал и понял, что дохуя удобная штука для системных скриптов. И как питоноеб могу сказать, что в целом руби куда удобнее в этом плане, чем пистон, который задумывался как "маленькая интерпретируемая джава". Интересно, выйдет ли когда-нибудь руби на те же позиции, что и пистон, учитывая, что гвидована пидорнули из гуголя и мощного(ТМ) маркетиногового пеара теперь нет.
>>393622 Есть подозрение, что как только рельсы закатятся (это когда-нибудь случится), руби пойдет на хуй, что будет обидно. В противовес питону - руби куда менее многословен и располагает к быстрому решению задач. И в отличии от перла не противоречит сам себе и куда более понятен. Жаль, если проебется, но без маркетинга никуда. Хотя ходят сплетни, что оракель хочет прибрать руби и на базе JRuby поддерживать его. Вот тогда питонокапец более осязаем.
>>393623 Я и сам потихоньку изучаю рельсы, но не знаю, нужно ли, может лучше удариться в ноду или тот же пэхапэ... Будем ждать чего то нового и взрывного от разработчиков руби. Время покажет.
>>393626 рельсы это веб. А веб это такая штука, где модно свежо и молодежно каждые 2-3 года появляется. И это потом переписывается скучными ребятами на скучную джаву. Так что гнаться за инструментами для веб-стартапа это как-то сомнительно.
>>393592 Ее лучше целиком прочитать, но конкретно про rack там "Chapter 4 Working with Controllers" Еще пониманию рельс способствует "Crafting Rails Applications"
>>393627 Сейчас за рельсой большая инфраструктура и отлаженная методология разработки - от проектирования до массового деплоя и CI. Так что RoR еще не скоро из своей ниши уйдет.
>>393623 >руби куда менее многословен Да ну? Насколько помню, у некоторых стандартных методов есть хуевы тучи синонимов, а организовать к примеру цикл можно как минимум 6 способами. мимонуб в руби
Ребяты, есть ли смысл устанавливать Bitnami Ruby Stack для знакомства с языком, да и вообще с технологией? https://bitnami.com/stack/ruby
Или лучше ставить все компоненты самому и с нуля? Использую Kubuntu, если что.
Спрашиваю же потому, что довольно продолжительное время использовал LAMP Stack от Bitnami и он показался мне очень удобным, т.к. все заводилось искаропки за 2 минуты.
>>394108 Этот стек включает в себя много ненужного хлама. Поставь сам по мануалам (они обычно однострочные) RVM, руби и рельсы. Для первых проектов тебе больше ничего не понадобится.
>>394122 RVM тоже не понадобится, т.к. больше одной версии руби пока не планирую использовать. А gems'ы начиная с версии Ruby 1.9 поставляюстя искаропки. Ты прав, под Linux'ом нет смысла юзать стеки, типа Bitnami, т.к. все что идет из пакетов уже, как правило, готово к использованию.
>>393816 ruby-way не подразумевает тонны кода. Потому, что сумасшедший японец делал ruby под влиянием perl, где краткость - сестра таланта. python-way ~ java-way Плевать на то, что ты пишешь уйму кода. Главное, что понятно и недвусмысленно.
Нюфак в тренде. Перекатываюсь с десктоп-ынтырпрайз-параши в няшные рельсы. Имеется вопрос, например я хочу добавить на форму новую кнопку, пусть она прибавляет к цене товара 10уе. То для этого мне придется: 1. добавить новый маршрут c POST методом 2. добавить метод в контроллер товаров 3. добавить кнопку во вьюху, и эта кнопка должна передавать какие то переменные в params[ ], и отсылать их по указанному марштуру
Я все правильно понимаю? Или есть еще какой то метод реализации кнопки(не используя яваскрипт, хотя если такое сделать проще через яваскрипт то тоже скажите, лишним не будет)?
>>394220 Это я просто пример привел, вдруг мне не надо будет апдейтить что то, а просто вывести на экран или апдейтить стразу несколько моделей. Мне нужен общий алгоритм.
>>394236 У меня есть <div id="chasiki"><%= Time.now %></div>, который, я так понимаю, нужно вынести в партиал и рендерить с помощью того же setInterval.
>>394237 добавляешь то что я написал в app/assets/javascript/application.js и делаешь чтобы срабатывало на событие onload или ready если у тебя там джеквери, или просто тыкаешь в конец страницы скрипты партиал никакой ненадо, нужен просто элемент
>>394237 ах да партиал можно, но если ты втыкнёшь в глобальный темпалйт (апликатион) как он там называется, я не помню layer чтоли то можно без партиала канеш
>>394241 >Если вставить прямо в application.html.erb (о котором ты, видимо, и говоришь), то работает, но это же ужасно ой меньше слушай кто так говорит это норма
>Чтобы срабатывало в application.js на событии ready, нужно так? да или поместить скрипты в конец страницы
>>394243 Ок, работает из app/assets/javascripts/timer.js, спасибо. Но я всё же хочу, чтобы скрипт обновлял мой партиал, где уже есть Time.now, а не сам писал туда текущее время. Я полагаю, мне нужен .load() метод, но я как-то в него не могу.
>>394333 Я бы там красиво сделал типа <% time = Time.now %> <%= "Точное время: #{time.hour} часов, #{time.min} минут, #{time.sec} секунд"%> И всякое такое. С яваскриптом я так не умею. Ну и может мне бы понадобилось пикчу, например, менять раз в минуту. А я вот не знаю как.
Анон, есть вопрос по книге Metaprogramming Ruby. Там есть такой пример (пикрил). Дальше говориться что в этом коде есть баг и его надо найти. Проблема в том, что этот код порождает бесконечный цикл. Далее баг объясняется так:
The variable number is defined within a block (the block that gets passed to times( )) and falls out of scope by the last line of method_missing( ). When Ruby executes that line, it can’t know that the number there is supposed to be a variable. As a default, it assumes that number must be a parentheses-less method call on self.
Т.е. интерпретатор считает что number это метод, пытается вызвать его, но поскольку такого метода нет, опять попадает в method_missing, где происходит то же самое и т.д до stackoverflow. Так вот, анон, как развести тян на секс в пердачелло?почему он считает number методом? Не могу понять, что я упустил.
>>394605 Алсо, попробовал так: [CODE]class Roulette def a(name) person = name.to_s.capitalize number = 0 3.times do number = rand(10) + 1 puts "#{number}..." end puts "#{person} got a #{number}" end end
>>394605 Потому что в руби правила такие. Если не находит такую переменную, то думает что ты хочешь вызвать метод с таким именем (потому что в руби методы можно вызывать без скобок), т.к. метод тоже не находится то вызывается missing_method и так по циклу.
>>394619 Нет, она не сохраняется после блока times. Все что обявлено внутри блока исчезает после его выполнения (если конечно переменная не была обявлена до блока, ну это ты наверное уже понял) >the variable number is defined within a block (the block that gets passed to times( )) and falls out of scope by the last line of method_missing
>>394621 Чёрт... До меня только сейчас дошло, что ошибка возникает в последней строке метода. Просто думал почему-то, что она возникает внутри блока и пропускал мимо вот это: >falls out of scope by the last line of method_missing( ). Тогда всё совершенно ясно, спасибо, анон.
Привет рубиняши, есть вопрос, можно ли на рубях написать такую штуку как генератор сайтов, нет не так, конструктор сайтов, чтобы заказчик мог, например, выбрать галочками, что ему надо и сайт сгенерировался?
Сап, рельсаны. Есть бакет на AWS S3, на который должны грузиться картинки. Для обработки картинок используется гем paperclip в связке с aws-sdk. Но картинки на сервер амазона почему-то не грузятся.
Делал все по мануалу гема на гитхабе. Файл [CODE]/config/initializers/aws.rb[/CODE]
Скажите как сделать простую вещь - групповые действия. То есть отмечаем чекбоксами записи и "с выбранными: [удалить, опубликовать, и т.п.]". Ну то есть вопрос как красиво сделать? Лобовой вариант, который я вижу, это типа # routes.rb put 'bulk_actions', on: :collection
# controller.rb def bulk_actions case params[:action] when 'publish' ... when 'archive' ... when 'destroy' ... end end
Но есть ощущение, что это слишком топорно.
И еще вопрос, в данном конкретном случае при массовом обновлении стоит инстанциировавать объекты и делать update каждой записи, или делать update_all? У меня сейчас нет колбеков на обновление, но когда-нибудь они могут появиться. Может лучше сразу предусмотреть эту ситуацию?
Поясните такой момент. Как правильно проектировать RESTful в Рельсах, если там постоянно есть угроза, что хитрый пидор сгенерирует прямой HTTP-запрос и вызовет какой-нибудь непредназначенный CRUD в контроллере. Или для всех CRUD'ов в контроллере писать проверки доступа?
Пример навеян туториалом Хартла. Просто выглядит, что Рельсы с радостью дают тебе РЕСТ-апи, а ты потом должен бегать с костылями и затыкать ими дырки.
>>395750 епт, напиши в контроллере before_action :require_user и куда нибудь выше зафигачь require_user который будет редиректить нахуй если пользователь не залогинен
>>395769 Лол. Это-то хуйня, а вот, например, залогиненный пользователь, который шлет прямой post запрос к ресурсу Сессии, например (который тоже CRUD, создается при логине). Я имею в виду скорее такие сложности, а не просто "незалогиненный пользователь и один before_action". Или там админ, который может удалить другого админа (повышенные права, которые работают к одним пользователям, не должны работать на других пользователях). Это все требует каких-то неинтуитивных костылей в RESTful'е. С этим надо мириться или я просто наркоман?
Котаны, я нубас в руби. Пытаюсь распарсить xls с помощью гема roo. Проблема с блядской русской кодировкой. Русские символы конвертируются в нечто подобное \u041D\u043E\u0432\u0438\u043D\u0438.
кодировку указал # encoding: utf-8
"\u041D\u043E\u0432\u0438\u043D\u0438".encode("UTF-8") - выдает тоже самое \u041D\u043E\u0432\u0438\u043D\u0438.
>>395922 не оч понимаю при чем тут руби и рельсы. В других фреймворках это както лучше решено? По поводу прав смотри cancan, он вроде как умер, хз, мы его под себя переписывали, но общую идею даст
>>384220 Дорогие рубисты, как читается Eloquent Ruby на английском ? Знаю на upper-intermediat, но научные тексты не приходилось читать. Есть ли годные книги для ньюфагов в руби на русском ?
>>395967 Братан, у всех книг перевод хуевый. А также редактура. Лучше уж в английском читать, а что не знаешь, переводить. Лично мне режет слух МОДЕЛЬ ПРЕДСТАВЛЕНИЕ КОНТРОЛЛЁР
>>384220 >http://ru.wikibooks.org/wiki/Ruby_on_Rails >Это дает вам возможность писать прекрасный код используя соглашения вместо конфигураций. В данном контексте: Что такое соглашение? Что такое конфигурация?
>>396027 Какой-то пиздоголовый переводил. Подразумевается, что ты часто будешь сталкиваться с общепринятыми вещами. Так что тебе не придётся заново учить гаедлайны при переходе с одного проекта на другой.
>>396033 >>396004 Ты ведь один и тот же человек? Переведи, пожалуйста, "Model, View, Controller" и "Convention over Configuration". Чтобы было не ПИЗДОГОЛОВО, если можно. >>396027 http://en.wikipedia.org/wiki/Convention_over_configuration Смысл в том, что для всего есть принятое умолчание, так что если тебе не нужно что-то особенное - можно ничего не конфигурировать.
>>396034 >Переведи, пожалуйста, "Model, View, Controller" и "Convention over Configuration". Чтобы было не ПИЗДОГОЛОВО, если можно. Я не 33й-кун, но я не знаю как это переводить и главное нахуя. Мне лично комфортней, когда такие названия не переводят.
поясните за использование рельсов с ангуляром. Оправданно ли? Какую маршурутизацю юзать: рельсовую или ангулярную? Как связать рельсовые модели с ангулярными? Или рельсы с ангуляром нужны только как орм?
>>396184 >Или рельсы с ангуляром нужны только как орм? WAT? Пишешь отдельно API на рельсах, отдельно клиентское приложение на angularjs, вот и вся премудрость.
>>396184 >Какую маршурутизацю юзать: рельсовую или ангулярную? Обе придется. >Как связать рельсовые модели с ангулярными? Не надо их связывать - блджад, это проблема всех этих клиентских MVC фреймворков, люди пытаются на них замапить серверное представление данных, и естественно в 99% случаев это заканчивается фэйлом.
Есть задача парсить большие прайсы, которые клиенты присылают в xlsx \ xls \ csv \ txt. При работе с roo столкнулся с тем, что он кушает очень дохуя ресурсов, переписал всё на File.foreach + CSV.parse_line, вроде норм.
>>396245 Легче тестить, например. Ещё, как правило, получается более быстрый фронтенд. Меньше возни с циклами и всем таким во вьюхах, т.к. манипуляцией данными занимается фреймворк.
>>396345 >>396296 Отдавать JSON с бекенда гораздо быстрее, чем рендерить на сервере вьюхи. Ну и сервер он один, а клиентов дохуя. Так почему бы клиентам вьюхи и не рендерить?
Сколько я не видел приложений на JS, все они были медленее и гораздо глючнее, чем простая html c сервера. А если сравнить потребление памяти, разница будет раз в 10. Чтобы сделать удобный, не ломающийся и быстрый фронтенд на JS надо потратить много времени и иметь скиллы (который у JS обезьянок нет), а то что делается наспех, соответственно и работает.
Алсо, возьмем тред на этом сайте который состоит из 600 постов. Если он отдается в виде HTML, браузер конечно подвисает на долю секунды (можно заметить если прокручивать тред параллельно с загрузкой), но потом работает без тормозов. Если дать типичному фронтенд-специалисту сделать то же самое на каком-нибудь ангулар внимательный читатель понимает что это ирония так как ангулар не предназначен для разработки имиджборд то страшно представить сколько времени это будет грузиться и как будет тормозить. И в плане написания и отладки времени уйдет дофига.
> Меньше возни с циклами и всем таким во вьюхах, Это тоже неверно, все эти циклы придется повторить в клиентских шаблонах, то есть работы будет не меньше.
Подозреваю, реальная причина в том, что кто-то прочитал в хипстерском блоге что js фронтенд это модно и хорошо сочетается с трендовым словом REST и решил тоже так делать, при этом выгодно ли это его работодателю он думает в последнюю очередь.
>>396439 ты хуйню несешь. Ты вообще знаешь что ангуляр умеет и как это все работает? У тебя в голове какие то дурацкие и устаревшие стереотипы.
Алсо пользуясь случаем, призываю гуру тестирования. Мне нужно написать тесты для функционала, построенного на стеке технологий: Дроплеты Digital ocean, Docker containers, sidekiq. Функционал уже готов. Там создание, удаление, запуск, и еще параллельно с этим выполняются воркеры sidekiq обновляющие статусы всего этого говна. Я до этого тестировал только стандартные рельсовые модели.
>>397084 спасибо. Докер контейнер, который лежит на дроплете я запускаю. если не работает, то удаляю и перезапускаю
ВЕБ-сервер для RORАноним22/10/14 Срд 13:20:28#365№397721
Аноны-рубисты, подскажите какие веб-сервера используются для ROR'а? И если можно то поясните за преимещества и недостатки, и в каких ситуациях использовать то или иное решение.
Почтенные господа, требуется помощь. При установке thin или unicorn сталкиваюсь с ошибкой: mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h Как разрешить? Нужно ли поменять дистрибутив или установить ruby иначе (через rbenv или rvm)? ruby-2.1.2, elementary os 64-bit
Рельсаны, такая проблема. Есть 2 модели - модель топиков и модель комментариев к ним. Но вот какая проблема - при наличии нескольких топиков абсолютно все комментарии добавляются только к первому из них. Т.е. при попытке ответа в топик с id=2 коммент улетает в топик с id=1. Я уже хуй знает, что делать. По новой все переделывал, один хуй.
>>398388 Посмотри что у тебя передается в params, может там нет topic_id, а есть просто id. И еще, почитай в чем разница между @topic.comments.create и @topic.comments.build, тут тоже может быть ошибка.
>>398418 Ох, так значит ты на сперме сидишь. У меня года два назад именно бутстрап под винду не заработал, с тех пол сижу на линуксе, не знаю заработает ли сейчас у тебя. А вообще ничего скачивать не надо, гем сам все нужное поставит.
>>398436 less ты при всём желании не сможешь использовать, потому что therubyracer под виндовс вообще не заведётся. Там в геме есть инструкция для простого CSS.
Каким образом можно его вызвать только с параметром lobok_hairs_color - vagina('green'), чтобы этот параметр был передан именно в lobok_hairs_color, а не virgin или smell?
Нужно сделать сорт динамической инфографики, одностраничное приложение. Допустим я написал логику, которая собирает данные для инфографики, сверстал шаблон. И тут я растерялся-обосрался. Как выдать данные из собственнонаписанной логики, во вьюху? Подозреваю что через модель. Но во всех руководствах для новичков модель делают через ActiveRecord и CRUD-магию. В моем случае это не нужно. Куда мне совать свою логику? Модель? Что блядь? Как? Ни в одном руководстве нет, как создать СВОЮ модель. Можно конечно в контроллер логику запихать, но это же пиздец.
>>398704 >В контроллере она и должна находиться. >контроллер вообще не должен содержать бизнес логику, а только осуществлять интеракцию между моделью и представлением.
>>398715 Я имел ввиду класс с методами, которые делают некоторые действия и в результате отдают цифры. Наверное это таки модель. Контроллер обращается к методам модели, забирает цифры и отдает их во вью, суть erb-шаблон. Правильно понимаю?
>>398718 >которые делают некоторые действия Смотря какие действия. Код связанный с обработкой данных должен лежать в модели, контроллер забирает обработанные данные и делает с ними все, что необходимо для вида – проверяет, есть ли права у юзера на просмотр, какую модель и где показать, разделяет ее на массивы если нужно сделать какие-то колонки и так далее.
>>398722 Все как у людей у меня. Только данные я не храню в базе, а получаю как результат действия некоего алгоритма. От кого мне наследовать свою модель? Как ее сгенерировать (rails g model генерирует ActiveRecord шелуху с миграциями и прочим)? Как создать объект модели в контроллере? Как он узнает, что нужно подключать мою модель?
>>399091 Просто создай файл в models, назови его по имени своей модели. Внутри будет весь код, обернутый в класс. Юзать его можно как обычную модель (и нужно, кстати, потому что "program to an interface, not an implementation").
>>399862 >>399864 Спасибо. Что-то запутался в руби хэше. Что отдаст each |x|? Массив x[key] x[value]? Как мне сумму последних несколько value посчтитать? last(n).inject работает на массивах только же? глупый-бывший-пхпблядок
>>400125 each у хеша отдает два значения в блок (key, value), если в блоке указать одну переменную, то отдается массив как ты указал. >hash.each { |key, val| ... } vs >hash.each { |ary| ... }
>Как мне сумму последних несколько value посчтитать Не понял. Как-то фигово укладывается хэш и "последние несколько value"
Потихоньку учу руби и рельсы параллельно. Насколько я понимаю существуют реализации javascript CSS и HTML использующие синтаксис руби, так что мне не нужно их учить? А так только javascript немного знаю, и синтаксис у него ужасный, по сравнению с руби.
Есть два стула объекта Date. Нужно проитерировать между ними помесячно. date1.upto(date2) итерирует по дням, это не годится. inb4 скачай гем Daterations 4.5
Рельсаны, как лучше поступить? Планирую сделать 2 типа пользователей с разными атрибутами, у каждого типа будет и своя авторизация. Сначала решил сделать 2 разные модели, со своими таблицами. Но возникает проблема работы с сессиями. Хранилище сессий одно и вся инфа об авторизации хранится там сразу для всех типов. Как их можно разделить? Или придётся делать сложную модель для всех?
>>400732 Если у тебя для разных типов пользователей разные поля нужны, то тогда гугли Single/Multi Table Inheritance. А за саму авторизацию отвечает контроллер, может быть ты даже одним обойдешься. И вообще посмотри гем Devise, может там уже есть нужное для тебя решение.
>>400736 Я просто к чему спрашиваю. Два объекта дейт это, очевидно, два каких-то дня. Соответственно, итерировать у тебя получится только между двумя днями и только по дням. Хочешь жонглировать месяцами - делай массив из названий или номеров. Либо меняй условия и пиши что-то типа "надо проходить по первому (десятому, какому угодно) дню каждого месяца из диапазона".
>>400733 Вот как у меня создаются сессии в sessions_controller.rb
def create client = Client.find_by(token: params[:session][:password]) if client && client.authenticate(params[:session][:password]) sign_in_client client redirect_to client_page else redirect_to error_page flash[:error] = 'Password is wrong!' end
user = User.find_by(email: params[:session][:email].downcase) if user && user.authenticate(params[:session][:password]) sign_in user redirect_to user_page else redirect_to error_page flash[:error] = 'Email or password is wrong!' end end
При попытке входа в роли User начинается поиск в таблице Client, и сессия не создается. Вот я и думаю, что делать.
>>400741 В блоке хочу получить объект Date с годом и месяцем и любым числом. Пусть это будет первое. Если на d1 = Date(2014-03-05) а d2 = Date(2014-09-15) то в блоке должны оказаться 1 марта, 1 апреля ... 1 сентября. Как-то так. Совсем запутался в этом вашем волшебстве map, inject, reject, select
>>400812>>400825 Будет работать неправильно, если разница между датами больше года. >>400741 (date1.beginning_of_month..date2.beginning_of_month).select{|date| date.day == 1}.each{|date| do_something(date) } Этот вариант красивый, но работает не очень быстро, так как проходится по каждому дню. Быстрый вариант: [CODE]enum = Enumerator.new do |yielder| yielder << date = date1.beginning_of_month yielder << date = date.next_month while date < date2.beginning_of_month end enum.each { |date| do_something(date) }[/CODE]
Господа, рельсовые. Возник такой вопрос. Попросили сделать магазин обоев. И тут я охуел в начале от моделей. Есть страны-производители, у страны есть лейблы-заводы. У каждого лейбла есть коллекции. А в коллекциях уже сами обои. Обои могут быть при этом виниловые, хуиловые итд. И делятся по помещению(условно). Если с моделями как-то разобрался, то в контроллерах я завис в подходе. То есть если надо добавить новые обои с новой страной и всем новым? Сначала создаем страну, затем лейбл, потом коллекцию итд. А как это правильно сделать, чтоб вложенность контроллера не превышала один уровень? По отдельности сначала страну и лейбл, потом уже на новом контроллере коллекцию ... ? Или правильнее сразу обоину создавать, а в выпадающем меню уже страну там и всю херню, которую можно отдельно создавать в других разделах или во всплывающих окнах(если заморочиться)? Хочу понять, в каком направлении рыть и по каким критериям судить, что подход правильный?
Просто сразу возник вопрос, а если надо создавать товар с множеством подкатегорий, число которых неизвестно, типа проводов или сверл или подобного говна. Модель будет с self joins, а в контроллерах как? Посмотрел и движки на рубях для магазинов, там своя правда. Ну и няшу всем .
>>400952 Попробуй gem Virtus. Типа создашь form object, который будет ответственен за построение твоей иерархии объектов. Ну или можешь сделать как ты описал. Или воспользоваться nested attributes. Главно не забывай сохранять всю эту хрень в одной транзакции
Привет ребята. Хочу написать борду, вопрос насчет моделей. Как в контроллере комментов методы create/new писать? Что делать с моделями, которые в третьей глубине находятся? Это вообще нормально писать что-то вроде @Board= Board.new Post= @Board.Post.build Post.Comment.build или лучше комментарий и пост как одну модель использовать и просто добавить свойство is_post?
>>402239 Коммент это тот же пост, но с ссылкой на комментируемый пост, так что я думаю что к модели Пост надо добавить поле comment_for и туда записывать id комментируемого поста, либо оставлять его пустым.
Рельсокуны, подскажите, какими вопросами может вальнуть эйчар на собеседовании? Сам рубирельсы знаю хорошо, до этого работал только на удаленке, собеседовался только с разработчиками.
Я на первом курсе, в школе учил паскаль\делфи, сейчас учу Си в универе, стоит вопрос об отчислении, но прога - это единственное, чем я занимаюсь в универе. У меня вопрос. Вот у меня поверхностные знания этих древних никому не нужных ЯП, есть ли мне смысл учить Руби? И может кто-нибудь вкратце объяснить плюсы Руби и его применение?
Есть хеш хешей: h = Hash.new(Hash.new(0)) h["outerkey"]["innerkey"] += 1 Почему h.length равно 0 но h["outerkey"].length равно 1? Как итерировать по внешним ключам?
>Hash.new(Hash.new(0)) cоздает новый хеш, дефолтное значение которого есть другой хеш, дефолтное значение которого 0, т.е. когда делаешь h[:hui] (учитываю что "хуи" не присвоено какое-либо значение заранее) ты получишь именно Hash.new(0) (причем один и тот же объект который создавался при инициализации).
Дальше ты делаешь >h["outerkey"]["innerkey"] += 1 cудя по коду у "outerkey" не значения в хеш, соответственно он возврашает тебе тот самый дефолтный значение (хеш с 0) и уже в него ты добавляешь "innerkey" c +1. Другими словами ты добавляешь ключи во внутренний хеш (с 0), но не во внешний.
Можешь убедится сам если попробуешь в репле > p h.default > p h[:hui].default добавь еще таких внутренних ключей и повтори.
>>403811 Потому что при обращении к одной и той же строке каждый раз создаются разные объекты: "string" != "string". А одинаковые symbol же всегда ссылаются на один и тот же объект: :symbol == :symbol Дело вкуса, на самом деле, если не байтоебствовать. Мне легче symbol читать в тексте программы.
Давайте соберем в кучу те книги, которые нужно обязательно прочитать если хочешь глубого изучить руби.
Пока осиливаю только первую (метапрограммирование) - очень много времени на нее приходится тратить так как а) она на английском б) врубиться в объектно проеграммирование после 4х лет программирования на PHP крайне сложно
>>404371 элошент руби и рельсавай и всё. больше нету книжек по руби которые стоит читать, и твои дезайн патерны и рельса антипатерны я бы тоже не читал, но ты почитай ты лоускилед
>>404392 спасибо, у меня просто лютый дискомфорт ниже спины вызывает то что GoF паттерны в какой-то мере бесполезны в объектной модели руби. Когда пилишь на руби обычные бложики/ гостевухи они, принципе, не нужны. Сложности начинаются когда думаешь запилить свой гем, а знаний в архитектуре ой как не хватает.
>>404371 Ну хуй знает, братишка. Я год писал на руби, прежде чем взялся за метапрограммирование и антипаттерны. Первую книгу прочитал за неделю и понял, что большинство техник уже встречал, а во второй где-то 90% советов либо сам применял, либо находил в коде других, так что только зря потратил время. Вывод: пиши код, мудило, а не книжки читай.
Рельсаны, вопрос теоретический, надо ли прикручивать к рельсам какой нибудь фронтенд-фреймворк: ангуляр, бекбон, эмбер и тд. И в какой ситуации и для каких задач это надо делать? Или же можно обойтись простым jquery и рейсл-тейсплейтами?
Доброго времени суток. Как в рельсах выполнить кучу инсертов, одной транзакцией без использования сырого sql? Использовал ActiveRecord::Base.transaction, работает хоть и быстрее, но все равно выполняет инсерты отдельно и нехило задалбливает базу.
>>406192 Ответ: никак. А что тебя так пугает в сыром SQL? Алсо, если данных ооочень много и они, например, лежат в csv-файлах, то в postgres есть такая вещь как copy, а в mysql - LOAD DATA INFILE.
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/313906.html
http://2ch.hk/pr/res/366707.html