Ребята огонь, курс огонь, всё огонь!!! Начиная с самых азов и переходя к более сложным вещам, курс даёт как теоретическую базу, так и много практики. Курс нацелен на то, чтобы ученик выстраивал у себя в голове правильное мышление с точки зрения программиста. Мне этот курс очень понравился, всем советую, как новичкам, так и тем, кто уже знаком с азами программирования. Спасибо ребятам за их ценный труд и опыт!
Очень хороший курс - ребята молодцы. Постепенно в мозг укладывают весь необходимый для жизни программиста минимум и еще докидывают более продвинутыми плюшками.
Подача материала - просто огонь, настолько интересно было смотреть все видосы и потом проходить домашки, одно только признание пхпшника чего стоит а там все такое.
Индивидуальный подход при приеме ДЗ (не по формальному признаку) - в зависимости от твоей успеваемости учителя могут усложнить тебе задание или попросить сделать с применением более продвинутых технологий.
Что очень клево - круглосуточная поддержка в слаке!
Офигенные вебинары на которых проходит разбор полетов и не только - некоторые пересматривал по несколько раз, потому что очень важный материал и очень хорошо объяснен.
Но самое значимое для меня было то что курсы погружают в совсем другое состояние - состояние постоянного постижения чего нового, стремления к знаниям - и это важнее всего - это как мотор который во мне завели и теперь я двигаюсь благодаря ему. Спасибо огромное учителям за то что подарили новую жизнь, наполненную стремлением к знаниям, огорчениями от того что не работает, и радостью от того что починил.
Курс просто замечательный! Понятное объяснение материала независимо от его сложности. Огромное спасибо преподавателям! Быстро отвечают на вопросы и дают обоснованный и конкретный фидбек на выполняемые задания. Результат говорит сам за себя: 5 месяцев, и я успешно прошла собеседование. Отличный курс! Стоит того, чтобы его пройти!
Ruby on Rails разработчик, Таганрог, github
Потрясный курс. Насыщенный, не скучный, по делу. Отличные учителя. Я минусов вообще не нашел. Относятся по человечески. Я пришел полным новичком. Теперь я супер-новичок! Написал программку на ruby (не одну), написал приложение на rails (не одно), настроил сервер, развернул приложение, прикрутил разный функционал к приложению, разобрался в доменах, сертификатах ssl, dns, авторизациях и многом многом другом. Рвусь в бой, берусь за самостоятельный проект. В общем, спасибо вам большое, Хорошие Программисты!
Ruby on Rails разработчик, Москва, github
Я в принципе не собирался проходить курсы, однако то как преподносят материал эти ребята вызывает огромное желание с ними поработать, поучиться, да и просто общаться.
Ключевым достоинством курса является тот факт что ребята очень любят и хотят учить людей. Курс НЕ формата "Ну мы там материал вам дали, а дальше сами разбирайтесь", люди вкладывают душу и переживают за то, как Вы восприняли материал. После окончания данного курса можно смело идти работать Rails developer-ом.
Ruby on Rails разработчик, Краснодар, github
Доступно объяснены основные моменты используемые при разработке веб приложения. Так же рассмотрены наиболее популярные гемы в рельсах.
Хорошо проверяют домашки и высказывают подробные замечания. Ценю то что ребята не забивают на тебя после окончания курса и поддерживают связь, помогают словом и делом)) Не совсем удобен сайт в плане поиска инфы, особенно когда заканчиваешь все 71 урок, но думаю ребята доработают в остальном придраться не к чему.
Тимлид в AirBnB, San Francisco
Имею значительный опыт в онлайн обучении - это лучший онлайн курс из тех, что я когда-либо встречала. Проработано все - качественно подобранный материал, отличная подача. И главное, после курса действительно можно стать программистом!
Живу в Кремниевой долине, хожу на различные митапы и воркшопы, встречаюсь с выпускниками хваленых местных буткемпов (стоимость которых, к слову, от 12 тыс дол за 4 мес) и понимаю, что мои знания после курса в разы превосходят многих выпускников этих знаменитых буткемпов Кремниевой долины, несмотря на то, что я начинала с нуля и до «Хороший программист» терминал ни разу не открывала))
Дождусь разрешения на работу и обязательно буду устраиваться на работу. После курса чувствую в себе силы на это, знаю, что это возможно! Спасибо Вам, ребята!
На мой взгляд, ребята создали шикарный курс, который подходит как совсем начинающим программистам, так и тем, кто уже имеет опыт за плечами при работе с другими языками и библиотеками.
Отличный материал и подача, отношение в целом, и атмосфера на вебинарах. Ребята усердно работают, чтобы помочь каждому студенту, при необходимости разжевывают до мелочей. После курсов чувствуешь уверенность в своих силах, понимаешь, что устроиться на работу в сферу IT вполне реально, было бы желание.
Прекрасно даны основы для базового понимания программирования. Даются интересные и реальные задачи, решение которых в дальнейшем поможет и пригодится.
Резюмирую. Считаю данный курс одним из самых лучших, и обязательно рекомендую всем, кто решил посвятить свою жизнь сфере программирования. В данный момент в активном поиске работы, спрос довольно большой, поэтому, все в ваших руках! Ребятам выражаю большую благодарность, и желаю успехов в дальнейшем!
Ruby on Rails разработчик
Курс помог, научился программировать на Ruby и на рельсах, я не супер-крутой программист, но знаю, что могу написать все, что угодно, возможно, потребуется что-то дополнительно почитать.
Задача была «научиться программировать и найти работу». Задача выполнена на 100%, программировать научился, на работу взяли.
«Привет! Чем занимаешься?» — «Да так, одну штуку на руби программлю.» — «Это заразно:-)»
Вот такой диалог состоялся у меня сегодня с одним приятелем. Почему ruby?
Зачем учить Ruby
Этот вопрос касается тех, кто уже долго и успешно программирует на PHP. Вы освоились в одном языке, это здорово, но не надо останавливаться на достигнутом. Многие могут возразить, что они знают язык, ориентируются в нёи и уже изучили все грабли с ним. Я назову несколько причин для изучения Ruby.
- Любопытство . Мне, например, было очень интересно поработать с открытыми классами. Вот так вот взять и инжектировать свой метод в системный класс — по моему это здорово. А не будет ли путаницы? А как это сделать? Вообщем интересно всё новое.
- . Т.к. я давно программлю на PHP, мне интересно чем же Ruby может похвастаться перед PHP/
- Скорость работы Ruby . На Ruby сделан твиттер (хотя в последнее время от него и отказались). Хочется в реальности проверить его производительность.
- Класс решаемых задач . Руби хорош для веб-приложений. А так ли это?
- Метапрограммирование. Пожалуй самая главная причина.
Как изучать Ruby. Учебный план.
Вот здесь моей первой ошибкой было то, что я начал изучать фреймворк не зная язык. Теперь я понял, что так делать не надо. Забыв на время о Ruby on Rails я начал изучать сам Ruby, благо в тикет-системе долгое время висела системная задача, которую на php решать было тяжело. Уж очень не хотелось давать ему права root Итак план такой.
- Функции, классы, открытые классы. Атрибуты (аксессоры и мутаторы).
- Работа со строками, с массивами. Поиск и замена подстрок и т.д. Преобразование типов.
- Работа с файлами.
- Работа с системным окружением.
- Оформление приложения, работа с гемами (модулями).
- Работа с БД.
- Установка Ruby on Rails, .
В этом посте я опубликую своё первое приложение на Ruby и приглашаю всех желающих к обсуждению. Указывайте на ошибки, предлагайте best practice, задавайте вопросы.
Давайте учить Ruby вместе!
Урок 1. Первое приложение на Ruby.
Задача стоит такая. Есть DNS сервер на хостинге и надо при вызове консольной утилиты на ruby добавлять зону для домена а также запись зоны в список зон (domains.list) и изменять одну запись в БД, куда прописывать этот домен. Настройки доступа к БД хранятся в php приложении, а конкретно в его INI файле. После всех действий надо перезагрузить DNS сервер (bind).
Рабочая среда для Ruby
В качестве IDE буду использовать RubyMine от JetBrains. Уж очень мне понравился их . Хоть он и был про phpStorm, но качество видно сразу. Руби ставим через RVM сначала для всех юзеров, потом настраиваем для рута и своего юзера.
Расширение открытых классов Ruby
Для работы с INI файлами в Ruby используем gem inifile. Но в нём есть небольшая проблема. В ZF INI файле можно спокойно использовать константы, и строки получаются такого вида:
IncludePaths = APPLICATION_PATH "/../vendors/Doctrine/"
Вот от APPLICATION_INI то и сносит парсер гема. А конкретно то, что эта строка не подходит ни под один паттерн:
@rgxp_comment = %r/\A\s*\z|\A\s*[#{@comment}]/ @rgxp_section = %r/\A\s*\[([^\]]+)\]/o @rgxp_param = %r/\A([^#{@param}]+)#{@param}\s*"?([^"]*)"?\z/
Вот и ситуация для применения открытых классов. Заменим фунуию IniFile::parse на свою. Все дополнения я буду складывать в файл fucntion.rb
Class IniFile private # # call-seq # parse # # Parse the ini file contents. # def parse return unless File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # create tmp variables to indicate that a multine has started # and the next lines of the ini file will be checked # against the other mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # the mutline end-delimiter is found # clear the tmp vars and add the param / value pair to the section elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # anything else between multiline start and end elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # ignore blank lines and comment lines elsif line =~ @rgxp_comment then next # this is a section declaration elsif line =~ @rgxp_section then section = @ini[$1.strip] # otherwise we have a parameter elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "parameter encountered before first section" end elsif line =~ %r/APPLICATION_/ then next else raise Error, "could not parse line "#{line}" end end # while ensure fd.close if defined? fd and fd end end
Также я расширю класс String, чтобы можно было валидировать домены.
Class String def valid_domain_name? domain_name = self.split(".") name = /(?:+)+/.match(domain_name).nil? tld = /(?:{2}|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info|me|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil? (domain_name.count > 1 and name != false and tld != false) end end
Исходники
Ну а теперь покажу вам собственно исходники.
index.rb
#coding: utf-8 require "mysql2" require "socket" require "inifile" require "./functions.rb" # Хэш адресов серверных машин hosts = { :production => "83.168.22.1", :test => "84.22.11.1" } util = Util.new(hosts) util.releative_config_path="/site.com/application/config/application.ini" # Проверка параметров quit if (ARGV.count != 2) domain = ARGV hostname = ARGV.split(".") quit("Invalid domain name") if (not domain.valid_domain_name?) # Поиск компаниив БД result = Mysql2::Client.new(util.get_db_settings).query("SELECT id FROM `sites` WHERE `hostname` = "#{hostname}"") quit("Company not found") if result.count != 1 # Обновление её hostname rows = Array.new result.each{|row| rows << row} company_id = rows["id"] result = Mysql2::Client.new(util.get_db_settings).query("UPDATE `dbname`.`sites` SET `domain` = "#{domain}" WHERE `dao_companies`.`id` =#{company_id};") # Добавление зоны bind_config_path = "/etc/bind" default_zone_file = bind_config_path + "/zones/DEFALT" new_zone_file = bind_config_path + "/zones/#{domain}.zone" zones_list_file = bind_config_path + "/domains.lst" quit("File with default zone does not exists") unless File.exist?(default_zone_file) quit("File with zones list does not exists") unless File.exist?(zones_list_file) zone = IO.read(default_zone_file).gsub("SERIAL",Time.now.strftime("%Y%m%d%S")).gsub("DOMAIN", domain) if not File.exist?(new_zone_file) then File.open(new_zone_file, "w") {|f| f.puts(zone) } else quit("Domain "+domain+" zone already exists!") end # Добавление зоны в список zone = "zone \"#{domain}\" { type master; file \"/etc/bind/zones/#{domain}.zone\"; };" if not IO.read(zones_list_file).include?(domain) then File.open(zones_list_file, "a") {|f| f.puts(zone) } end # Перезапуск сервисов (bind9) system("service bind9 restart") puts "Completed"
Gemfile
В этом файле описываются зависимости проекта.
Source:rubygems gem "mysql2", "0.2.6" gem "inifile"
Ну и собственно включаемые функции.
functions.rb
#coding: utf-8 class String def valid_domain_name? domain_name = self.split(".") name = /(?:+)+/.match(domain_name).nil? tld = /(?:{2}|aero|ag|asia|at|be|biz|ca|cc|cn|com|de|edu|eu|fm|gov|gs|jobs|jp|in|info|me|mil|mobi|museum|ms|name|net|nu|nz|org|tc|tw|tv|uk|us|vg|ws)/.match(domain_name).nil? (domain_name.count > 1 and name != false and tld != false) end end class IniFile private # # call-seq # parse # # Parse the ini file contents. # def parse return unless File.file?(@fn) section = nil tmp_value = "" tmp_param = "" fd = (RUBY_VERSION >= "1.9" && @encoding) ? File.open(@fn, "r", :encoding => @encoding) : File.open(@fn, "r") while line = fd.gets line = line.chomp # mutline start # create tmp variables to indicate that a multine has started # and the next lines of the ini file will be checked # against the other mutline rgxps. if line =~ @rgxp_multiline_start then tmp_param = $1.strip tmp_value = $2 + "\n" # the mutline end-delimiter is found # clear the tmp vars and add the param / value pair to the section elsif line =~ @rgxp_multiline_end && tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # anything else between multiline start and end elsif line =~ @rgxp_multiline_value && tmp_param != "" then tmp_value += $1 + "\n" # ignore blank lines and comment lines elsif line =~ @rgxp_comment then next # this is a section declaration elsif line =~ @rgxp_section then section = @ini[$1.strip] # otherwise we have a parameter elsif line =~ @rgxp_param then begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "parameter encountered before first section" end elsif line =~ %r/APPLICATION_/ then next else raise Error, "could not parse line "#{line}" end end # while ensure fd.close if defined? fd and fd end end def quit(message=nil) banner = " ============================ | DNS Addition tool | ============================ Usage: ruby ./index.rb domain.com olddomain.site.com" if not message.nil? then banner = message end puts banner exit end class Util attr_accessor:hosts, :releative_config_path, :environment def initialize(hosts =Array.new) self.hosts = hosts end # Получение локального IP-адреса def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily UDPSocket.open do |s| s.connect "64.233.187.99", 1 s.addr.last end ensure Socket.do_not_reverse_lookup = orig end # Получение среды окружения def get_environment if @environment.nil? then hosts = self.hosts.invert if(hosts.include?(self.local_ip)) then @environment = hosts else @environment = "development" end else @environment.to_s end end def get_config_path local_username = get_local_username "/home/"+local_username+"/sandbox"+self.releative_config_path end # Возвращает имя пользователя, в случае если утилита запущена через rvmsudo или напрямую def get_local_username if ENV["SUDO_USER"].nil? quit("Util should be run over rmvsudo, \r\nexample: rvmsudo ruby ./index.rb domain.ru some.subdomain.ru") else ENV["SUDO_USER"] end end def get_db_settings config = IniFile::load(self.get_config_path) section_name = self.get_environment.to_s + " : bootstrap" quit("No suitable section in config file") unless config.has_section?(section_name) dsn = config.to_h["resources.doctrinedata.connections.default.dsn"] # Parse dsn dsn.sub!("mysql://", "") arr = dsn.split("@") dbconfig = { :username => arr.split(":"), :password => arr.split(":"), :host => arr.split("/"), :database => arr.split("/") } end end
А как же PHP?
Этот пост не сводится к тому, что надо бросить PHP и начать изучать руби. PHP — самый популярный язык веб-программирования, на нём реализованы тысячи интересных вещей и алгоритмов, в т.ч. даже и нейросети. И я его люблю) За многие годы, можно сказать, что я с ним сроднился, несмотря на все его недостатки. Но это не значит, что не надо изучать для себя что-то новое.
Мне в последнее время задают вопрос, по каким книжкам учить Ruby. Я сейчас читаю вот эту.
Эта книга — официальное руководство по динамическому языку программирования Ruby. Авторский состав воистину звездный: Дэвид Флэнаган — известнейший специалист в области программирования, автор ряда бестселлеров по JavaScript и Java; Юкихиро «Matz» Мацумото — создатель и ведущий разработчик Ruby.
В книге приведено детальное описание всех аспектов языка: лексической и синтаксической структуры Ruby, разновидностей данных и элементарных выражений, определений методов, классов и модулей. Кроме того, книга содержит информацию об API-функциях платформы Ruby.
Издание будет интересно опытным программистам, знакомящимся с новым для себя языком Ruby, а также тем, кто уже программирует на Ruby и хочет достичь более высокого уровня понимания и мастерства работы. Найти книжку можно на озоне или библио-глобусе.
Жду ваших комментов по коду и любые интересные идеи!)
Спасибо!
Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:Я уже давно хотел изучить Ruby on Rails на каком-то базовом уровне. Без конкретной цели. Скорее просто для себя, чтобы лучше понять, что же в нем такого особенного (в отличие от 100500 других технологий и фреймворков), что позволяет быстро создавать и масштабировать довольно нагруженные интернет-проекты. Вторичной причиной стало желание попробовать новые подходы к обучению. Когда я учился на программиста, у нас были только книги и форумы, где можно спросить совета. Сейчас есть интерактивные учебники и онлайн-школы программистов, огромное количество скринкастов (почти мечта: смотреть, как программируют гуру), базы знаний вроде stackoverflow.com и тонны исходных кодов на GitHub, где можно часами изучать исходники настоящих профи. Следующие несколько ночей (а днем банально некогда) я решил выделить на то, чтобы попробовать новые способы обучения в действии.
Ночь первая
Начинать учить Ruby on Rails без хотя бы минимального знания непосредственно Ruby было бы странным. Я уже когда-то брался за интерактивный гид ruby-lang.org . Но как прошел его, так и сразу все забыл. Его создатели обещают, что на прохождение и усвоение синтаксиса Ruby уйдет пятнадцать минут. У меня ушло тридцать. Правда, с постоянным отвлечением на Twitter. Процесс выглядит примерно так. Тебе говорят: «Массивы в Ruby объявляются так, а данные из массивов извлекают вот так. Теперь давай попробуй сделать массив и извлечь из него N элементов. А мы проверим». Читаешь, как все устроено, и сразу пробуешь. Ruby ты так, конечно, не выучишь. Лучше это воспринимать как супер-экспресс-курс, который работает.
И все-таки сам Ruby - это очень далеко от фреймворка Ruby on Rails. Хотелось освоить именно рельсы. Из нашей статьи про образование онлайн я точно помнил о нашумевшем курсе Zombie for Rails railsforzombies.org . Это так же, как и Try Ruby, интерактивный учебник, который прямо с места в карьер начинает тебя учить готовить рельсовые приложения. Сначала тебе читают мини-лекцию (на английском, но все предельно понятно - включи субтитры) о структуре файлов рельсового приложения, CRUD-подходе для работы с данными, объясняют, как реализована модель MVC в рельсах, и так далее. После каждого видео тебе предлагают выполнить задания на закрепление материала. Все кажется простым и понятным, курс пролетает незаметно за час-другой (он небольшой). Но! Почувствовал ли я после курса, что смогу написать рельсовое приложение? Увы, нет!
Ночь вторая
Одна из причин, почему после Rails for Zombies появляются некоторые базовые знания, но не появляется уверенности, - это виртуальная среда, в которой проходит обучение. С одной стороны, она до предела уменьшает порог входа: можно не заботиться об окружении. С другой стороны, ничего реального по ходу дела ты не создаешь - никакого тебе «Hello World» на выходе. И главное, с какой стороны подступаться к его созданию, непонятно. С этого момента я хотел попробовать Ruby on Rails в деле, реально установив его в системе (до этого можно было даже не стараться), и с нуля создать простое приложение.
Уже не помню как, но совершенно случайно я наткнулся на очень удачный курс скринкастов на русском языке rails.hasbrains.org . Спасибо автору за грамотное изложение: он методично объясняет принципы работы рельсового приложения в деталях, по ходу погружая тебя во все необходимые тонкости. Короче говоря, всю вторую ночь эксперимента я смотрел первую половину из более чем тридцати эпизодов этих скринкастов.
В голове окончательно закрепилась картинка, как генерируется приложение, как работать с рельсовой консолью, как создать модели и миграции, как обновлять модели и как валидировать в них данные, RESTful- контроллеры и так далее. Смотря каждый из эпизодов, я сразу пробовал все в действии, выстраивая полностью рабочее рельсовое приложение. Стало понятно, как в принципе устроены рельсы.
Ночь третья
На третью ночь остались последние эпизоды скринкастов, которые удалось посмотреть в один присест: работа с рельсами уже не казалось такой дикой. В этот момент мне кто-то рассказал о том, что у курса Rails for Zombies есть толковое и гораздо более глубокое продолжение. Правда, курс уже платный и хостится в рамках школы программирования Code School www.codeschool.com . Отдать 25 баксов, чтобы получить доступ ко всем курсам школы, было не жалко. Это стоимость на месяц, поэтому, если не понравится, не забудь отменить подписку.
Курс Rails for Zombies 2 действительно оказался очень удачным. Правда, многое стало повторением того, что я увидел в скринкастах, - но это было даже отчасти приятно. Пять уровней и пять блоков упражнений, которые делаешь прямо в интерактивной консоли. К этому моменту рельсы уже казались логичными, понятными и пригодными к использованию.
В Code School можно программировать прямо в браузере, выполняя задания курса
Что дальше?
Научился ли я делать сложные проекты? Нет. Но точно осознал подходы, используемые в рельсах, и понял их удобство. Научился быстро создавать простые приложения и в суперкороткий срок наращивать его функционал с помощью гемов, написанных сообществом. Я поймал кураж и дальше с удовольствием учусь лучшим практикам по программам Code School (сейчас смотрю курс по юнит-тестам). И меня чертовски радует то, что изучать технологии стало так просто.
Ruby - мощный и популярный язык программирования. Помимо своей популярности на нём основывается известный фреймворк , который позволяет создавать крутые и динамические веб сайты различной тематики. Если взглянуть на рейтинг TIOBE , то язык входит в двадцатку самых популярных языков мира.
Язык появился в 1995 году и считается молодым языком в сравнении с Си или же C++, которые появились в 1972 и 1983 году соответсвенно. Язык имеет ряд преимуществ и специфичных возможностей, которые реализованы исключительно в нем, если брать в сравнение другие популярные языки программирования.
План курса
В ходе видеокурса вы изучите язык Ruby без использования дополнительных фреймворков. Дополнительные курсы по Ruby вы можете найти на .
За курс мы изучим как установить и работать с языком, изучим синтаксис Руби (переменные, циклы, условные операторы), а также более сложные вещи: ООП, работа с файлами, исключения, методы и затронем еще множество других тем.
Установка Ruby на Windows
Для установки Руби на Виндовс используйте RubyInstaller , который можно скачать на официальном сайте по этой ссылке . Скачивайте последнюю версию и устанавливайте её как обычную программу. После завершения установки перед вами будет похожее окно:
На этом окне проследите чтобы галочка обязательно была проставлена, тогда далее откроется другое приложения для установки Ruby в систему.
В открывшемся окне введите поочередно 1 и нажмите Enter , дождавшись конца установки нажмите 2 и Enter и в конце выполните третью команду нажав 3 и Enter .
Установка Руби на Мак
На маке Руби установлен по-умолчанию, поэтому вам не нужно ничего дополнительно делать. Вы можете проверить версию языка в терминале при помощи следующей команды:
Если версия устаревшая, то можно выполнить загрузку новой. Для начала необходимо загрузить менеджер версий Ruby. Это делается через терминал при помощи команды:
Curl -L https://get.rvm.io | bash -s stable
После установки менеджера необходимо перезапустить терминал. Выполните следующую команду:
Rvm list known
После перезапуска вы можете установить ту версию, которую пожелаете. В нашем случае была установлена версия 2.4.2:
Rvm install ruby-2.4.2
В конце вы можете еще раз проверить версию и если она по прежнему старая, то просто установите по-умолчанию новую версию.
Доброго времени суток!
Предисловие
Когда-то я хотел познакомиться с Rails поближе, но не знал с чего начать, пока мне на глаза не попалась эта статья. Далее вы увидите перевод, смешанный с собственным опытом и свойственными мне лексическими и фразеологическими оборотами. Итак, поехали.Введение
У меня за спиной огромный опыт работы с PHP, но сейчас я работаю Rails разработчиком. Огромную сложность для большинства людей, которые пытаются освоить что-то новое - это сам процесс обучения. Когда вы владеете каким-либо языком или фреймворком и знаете его вдоль и поперёк, переход на что-то новое не представляется необходимым.Однако, изучение Ruby on Rails является достаточно простым занятием. Это невероятно мощный фреймворк, который имеет огромное сообщество, продвигающее его вперёд. Итак, у нас возникает вопрос: какой способ изучить Rails является лучшим? Вот он - план занятий.
Данная статья представляет собой полный план необходимых занятий для того, чтобы ознакомиться с Rails и приступить к работе с ним в кротчайшие сроки. Всё, что вам нужно - следовать пунктам ниже, которые перечислены по порядку.
Пункт 1: работа с упражнениями в «Try Ruby»
Вы можете подумать, что изучение Ruby является здесь самым важным шагом, но это не так. Часть из тех, кто приступает к детальному изучению Ruby, прекращает изучение и просто остаётся работать с текущим языком и фреймворком. Не делайте этого! . Не бойтесь изучать этот язык (или любой другой). Ruby - весёлый, великолепный и простой для изучения язык. Плюс ко всему, не стоит забывать о том, что вам не обязательно изучать его на все 100%. Вам достаточно лишь знать основу.Наиболее рекомендуемым инструментом для погружения в синтаксис Ruby является сайт TryRuby . Он представляет собой интерактивную среду, которая позволяет попробовать синтаксис в действии. Если вы наберёте help , то будете приглашены ознакомиться с пятнадцатиминутным руководством, который обучит вас базису. Не стоит забывать, что у руководства две главы, с которой вы можете ознакомиться набрав help 2 .
Если вы хорошо поработаете над этими заданиями на протяжении некоторого времени, то у вас появится хорошая база знаний. Всё, что сделал я сначала, это изучил эти два руководства. Остальное же я познавал в процессе разработки сайтов на Rails, а также путём гугления и упражнениями с IRB.
Пункт 2: установка Ruby и Ruby on Rails
Если вы хотите изучить Rails, то вам без сомнений придётся установить его на ваш компьютер. Здесь представлено несколько решений, исходя из того, какая у вас ОС. Если у вас Mac или Linux-based компьютер, то я рекомендую вам использовать RVM. Это великолепный инструмент, предназначенный для установки Ruby. Собственно, вот инструкция по самой установке. Если же у вас Windows, то вам придётся воспользоваться RubyInstaller.Следующим шагом является установка самого Rails. Для этого вам необходимо установить RubyGems. Если же вы используете RVM, то примите мои поздравления - у вас RubyGems уже установлен. Если же у вас Windows, то советую проследовать сюда. Чтобы установить Rails, вам необходимо воспользоваться командой gem install rails и, тада, всё сделано!
Пункт 3: ознакомление с введением в Rails от Jeffrey Way
В этом 40-минутном скринкасте Jeffrie Way расскажет вам о том, что необходимо знать для того, чтобы использовать Rails. В нём вы найдёте много полезной информации, включая такие темы, как:
- Models and generators
- Test-driven development (TDD)
- ActiveRecord
- RSpec and Capybara
- Partials
Пункт 4: изучите курс Rails For Zombies
Я всегда думал, что изучение по примерам является самым лучшим способом изучить язык или фреймворк. Бесплатный и невероятно мощный курс, с которым вы должны обязательно ознакомиться - Rails For Zombies, созданный ребятами из EnvyLabs. Данный курс является интерактивным, что означает, что после просмотра каждого видео вы будете работать над полезными и интересными упражнениями.До этого времени я рассказывал вам об инструментах интерактивных и бесплатных. Время халявы прошло! Сейчас вам следует приобрести книгу под названием Agile Web Development with Rails . Она призвана научить вас использовать Rails путём строения веб сайта с нуля. Она проходит базовые основы, такие как контроллёры, модели, «scaffolding», функциональное тестирование, а также немного AJAX. Приобретите хотя бы последнее издание.
Пункт 6: постройте простой блог
Я знаю, что это звучит довольно скучно (покрайней мере для меня), но это великолепный пример, который используется везде по причине того, что он является довольно простым и быстрым для написания. Пойдя таким путём, вы будете способствовать закреплению ваших знаний и навыков. Но я предлагаю вам не заниматься копипастом (этим вы ничего не добъетесь, разве что 10 минут лишней траты электроэнергии), а попытаться написать его постепенно, по памяти, иногда лишь подглядывая в книгу затем, чтобы посмотреть как работает тот или иной метод.Пункт 7: добавьте новые возможности в ваш блог
Великолепно! Вы всё-таки построили свой собственный блог. Но всё-таки в нём нет полновесного функционала, а лишь представлены базовые функции, присущие каждому блогу. Хорошо, давайте чуть-чуть поработаем и добавим систему аутентификации.На самом деле я не хочу сейчас заставлять вас делать что-либо сложное, ведь вы уже порядочно потрудились. В качестве системы аутентификации вы можете использовать какой-нибудь готовый гем (Omniauth, например). Заодно и с имплементацией гемов в ваш проект разберётесь.
Также советую посмотреть этот скринкаст от Ryan Bates, в котором описывается создание простой системы аутентификации с нуля. После имплементации системы, следует добавить возможность удаления/редактирования постов, если вы ещё не сделали этого. Если же задание уже выполнено, то пора переходить к следующему пункту.