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 в інтернеті. Головна перевага - докладне охоплення найнеобхідніших питань, регулярні оновлення та безкоштовність основного змісту.

Правда ресурс повністю англійською. І важливо розуміти, що це побудовано у вигляді книги - у всіх питаннях вам доведеться розбиратися самому. Через це тривалість та складність навчання неможливо прогнозувати.

2. Railscasts

Інший відомий на весь інтернет навчальний ресурс. На ньому виросло не одне покоління Rails розробників. Теж англійською.

Побудований не як цілісний навчальний курс, а у вигляді серії скрінкастів – короткі уроки на конкретну тему. Уроків дуже багато, можна знайти майже будь-яку тему.

На жаль, проект у 2013 році перестав оновлюватись.

3. Rails для Зомбі

Відв'язне введення в рейки для новачків у стилі гри квесту з атмосферою зомбі. Дуже популярно серед новачків.

Зручно, що вам не потрібно нічого встановлювати на свій комп'ютер. Усі завдання вирішуються у браузері. Крок за кроком ви проходите гру і починаєте розуміти ази Ruby on Rails.

Якщо ви зовсім не розумієтеся на програмуванні - це ваш вибір. В курсі немає складних тем, нічого не відволікає від основ. Англійською.

3. Udemy

Велика колекція відеокурсів. Серед них безліч по ruby ​​і ruby ​​on rails. Немає сенсу наводити конкретні посилання - вибирайте на свій смак за ціною чи популярністю.

Формат Udemy передбачає досить короткі курси з акцентом на уроки відео. Не чекайте на серйозні домашні завдання або оперативну підтримку викладачів.

4. Ruby Бурса

Потужний короткостроковий курс з основ Rails розробки. Досвідчені викладачі, гарна програма.

На курсі бажано особисту присутність студента і проходить він лише у великих українських містах.

5. Розробка на Ruby on Rails від Злих Марсіан

Триденний інтенсив від однієї з найдосвідченіших у Росії Ruby on Rails команд.

Проводиться рідко. Коштує дорого (судячи з відгуків, він того вартий). Потребує особистої присутності. Підходить лише просунутим програмістам, новачкам там робити нема чого.

6. Онлайн-інтенсив Ruby on Rails від «Хорошого програміста»

Свіжий проект від команди, відомої в Youtube своїми курсами з Ruby для новачків.

3-місячна інтенсивна програма розрахована на повних новачків і обіцяє зробити з вас junior програміста з портфоліо, не мало не мало, з 12 тлумачних додатків.

Курс складається з відео-уроків, практичних завдань, підтримки викладачів, регулярних вебінарів.

Судячи з youtube каналу та коментарів користувачів - ці хлопці знають що роблять і нудьгувати з ними не доведеться.

Я вже давно хотів вивчити Ruby on Rails на базовому рівні. Без конкретної мети. Швидше просто для себе, щоб краще зрозуміти, що ж у ньому такого особливого (на відміну від 100 500 інших технологій та фреймворків), що дозволяє швидко створювати та масштабувати досить навантажені інтернет-проекти. Вторинною причиною стало бажання спробувати нові підходи до навчання. Коли я навчався на програміста, у нас були тільки книги та форуми, де можна запитати поради. Зараз є інтерактивні підручники та онлайн-школи програмістів, величезна кількість скринкастів (майже мрія: дивитися, як програмують гуру), бази знань на кшталт 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 (зараз дивлюся курс з юніт-тестів). І мене страшенно тішить те, що вивчати технології стало так просто.

Доброго вам дня!

Передмова

Колись я хотів познайомитися з 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, в якому описується створення простої системи автентифікації з нуля. Після імплементації системи слід додати можливість видалення/редагування постів, якщо ви ще не зробили цього. Якщо завдання вже виконано, то час переходити до наступного пункту.

Пункт 8: створення чогось свого

На даному етапі вам час стати більш креативним і подумати про створення якогось сервісу (наприклад, фотохостинг). Не варто зупинятися на дизайні другого веб-сайту. Візьміть щось готове. Наприклад,

"Вітання! Чим займаєшся?" — «Так, одну штуку на рубі програмлю.» - "Це заразно:-)"
Отакий діалог відбувся у мене сьогодні з одним приятелем. Чому ruby?

Навіщо вчити Ruby

Це питання стосується тих, хто вже довго та успішно програмує на PHP. Ви освоїлися однією мовою, це здорово, але не треба зупинятися на досягнутому. Багато хто може заперечити, що вони знають мову, орієнтуються в неї і вже вивчили всі граблі з нею. Я назву кілька причин для вивчення Ruby.

  1. Цікавість. Мені, наприклад, було дуже цікаво попрацювати із відкритими класами. Ось так ось взяти й інжектувати свій метод у системний клас — на мою думку це здорово. А чи не буде плутанини? А як це зробити? Загалом цікаво все нове.
  2. . Т.к. я давно програмлю на PHP, мені цікаво чим же Ruby може похвалитися перед PHP/
  3. Швидкість роботи Ruby. На Ruby зроблено твіттер (хоча останнім часом від нього відмовилися). Хочеться насправді перевірити його продуктивність.
  4. Клас розв'язуваних завдань. Рубі добре для веб-додатків. А чи це так?
  5. Метапрограмування.Мабуть найголовніша причина.

Як вивчати Ruby. Навчальний план.

Ось тут моєю першою помилкою було те, що я почав вивчати фреймворк, не знаючи мови. Тепер я зрозумів, що так не треба робити. Забувши на якийсь час про Ruby on Rails я почав вивчати сам Ruby, благо в тикет-системі довгий час висіла системне завдання, яке на php вирішувати було важко. Дуже вже не хотілося давати йому права root Отже, план такий.

  1. Опції, класи, відкриті класи. Атрибути (аксесори та мутатори).
  2. Робота з рядками, з масивами. Пошук та заміна підрядків і т.д. Перетворення типів.
  3. Робота із файлами.
  4. Робота із системним оточенням.
  5. Оформлення програми, робота з гемами (модулями).
  6. Робота із БД.
  7. Установка 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 що multine ha 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" # mutline end-delimiter is found# tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # anything else між multiline start and end elsif line =~ @rgxp_multiline_value && tmp_param != ""u # 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_ begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "параметр встановлений до першої секції" 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 що multine ha 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" # mutline end-delimiter is found# tmp_param != "" then section = tmp_value + $1 tmp_value, tmp_param = "", "" # anything else між multiline start and end elsif line =~ @rgxp_multiline_value && tmp_param != ""u # 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_ begin section[$1.strip] = $2.strip rescue NoMethodError raise Error, "параметр встановлений до першої секції" 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) ==== | DNS Addition tool | ============================ Usage: ruby ​​./index.rb domain.com olddomain.site.com" if not message.nil 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. Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily UDPSocket.open do s.connect "64.233.187.99", 1 s.addr.last end ensure 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 "/ +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. 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 і хоче досягти вищого рівня розуміння та майстерності роботи. Знайти книжку можна на озоні чи бібліо-глобусі.

Чекаю на ваші коментарі за кодом і будь-які цікаві ідеї!)

Дякую!

Якщо вам допомогла стаття, або ви хочете підтримати мої дослідження та блог - ось найкращий спосіб зробити це: