Ruby on Rails на Windows: огляд проблеми та налаштування за допомогою Vagrant і Virtual Box

8 хв. читання

Що не так з Windows?

Розробка на Ruby (та Ruby on Rails зокрема) з-під Windows завжди була проблематичною, якщо не сказати неможливою. Сприяють цьому декілька особливостей:

  • Ruby та Рельси набагато повільніше працюють на Windows, ніж на Unix-подібних системах;
  • багато гемів на Windows не працюють взагалі;
  • стиль програмування на Ruby загалом являє собою «юніксовий»;
  • Ruby спільнота здебільшого працює на Linux та Mac системах.

Однак, є свої причини використовувати Windows як основну операційну систему для веб-розробника. Наприклад, для мене це наявність Photoshop, зручність GUI, можливість грати в сучасні відеоігри тощо. Тому хотілось би працювати з екосистемою Ruby не покидаючи Windows. Якщо вам також хотілося б цього, але розбиратись у питанні самостійно ліньки; або ви починаєте знайомство з Ruby і хочете працювати з-під Windows і готові стрибнути з корабля на бал; або ви теж застрягли в наявних рішеннях й хочете врешті-решт вияснити що до чого — тоді ця стаття до вашої уваги.

Отже, я вирішив зробити свої «сучасні рельси з коробки» на Windows. Але зачекайте, навряд чи я перший, хто задумався над вирішенням цієї проблеми, чи не так?

А які рішення існують?

RailsInstaller. Досить популярне рішення серед новачків, дозволяє встановити не тільки Ruby та Rails, а заодно і bundler, GIT та sqlite3. Все це успішно запуститься командою rails server. Доволі зручно і швидко, а ще можна відразу братися за вивчення світу Ruby on Rails не вилазячи при цьому із затишної Windows.

Однак, як тільки розробник-початківець виходить за межі стартових туторіалів, стає зрозуміло, що це рішення не годиться через описані вище причини. І я це зрозумів у свій час буквально після перших кроків у світі Ruby. Поки що нативно інстальований Ruby погано проявляє себе у Windows системі і нема сенсу морочитися з цим. Тому наступним логічним кроком буде якимось чином встановити Linux-систему всередині Windows...

Ubuntu як підсистема Windows. З останніми оновленнями Windows 10 дозволяє інсталювати всередині себе підсистему Ubuntu. Таким чином, термінал Ubuntu і сама система стають доступними для використання. Здавалося б, ось рішення усіх проблем! Так, користувач може встановити Ruby, його екосистему та навіть налаштувати порти, щоб відображати localhost Ubuntu у браузері Windows.

Однак, редагувати файли цієї Ubuntu не вийде ззовні, використовуючи редактори встановлені у Windows. Тому якщо ви не фанат консольних редакторів nano чи vim і працюєте з GUI редакторами чи повноцінними IDE, то цей варіант не для вас.

Vagrant. Рішення, яке дозволяє розвернути всередині Windows оточення для розробки, використовуючи віртуальну машину, зокрема VirtualBox. Сам по собі VirtualBox дозволяє не тільки встановити майже будь-що всередині себе, а і доступитися до графічного інтерфейсу. За допомогою обгортки Vagrant можна легко запустити віртуальні машини з уже готовою начинкою всередині, використовуючи написані Vagrant бокси. Популярний Vagrant Box rails-dev-box хоч і пропонує рішення «з коробки», але разом з тим встановлює багато зайвих пакетів, намагаючись підлаштуватися під всі варіанти. А головне, особисто я так і не зміг із ним злетіти — rails-dev-box не зміг ні зробити mount потрібної теки (щоб правка файлів через Windows відповідно переносилася на віртуальну машину), ні забезпечити логін через ssh без «костилів».

Також варто підмітити, що Vagrant і віртуальна машина дозволяють «гратися» з системою без страху щось зламати й забезпечують чисту інсталяцію оточення кожного разу. При деплої вашого веб-застосунку вам досить буде чи вручну прогнати bash-скрипт для встановлення оточення на сервері, чи навіть зібрати відповідний Docker-контейнер.

Тому я вирішив написати свій Vagrant бокс і заодно проілюструвати як встановити всі необхідні інструменти як для Windows, так і у віртуальній Ubuntu. В результаті ми отримуємо налаштоване оточення для розробки на Ruby on Rails з-під Windows з використанням останніх версій Ruby, Rails, бази даних PostgreSQL та Webpack як засобу збірки асетів на фронті.

Занурюємось у віртуалізацію

1. Встановлення Vagrant і VirtualBox

  1. Завантажуємо сам Vagrant і віртуальну машину VirtualBox, яку він буде використовувати. Тут не повинно виникнути ніяких проблем, просто запустіть інсталятор і слідуйте за кроками: Завантажити Vagrant, Завантажити VirtualBox

  2. Надалі будемо працювати з командним рядком Windows. Спочатку перевіримо чи встановлений Vagrant командою vagrant --version:

Тепер встановимо необхідний для синхронізації тек плагін командою vagrant plugin install vagrant-vbguest

2. Конфігурація Vagrant і віртуальної Ubuntu

  1. Перейдемо до директорії, в якій ви плануєте тримати файли проекту командою cd. Наприклад, E:, cd Work

  2. Якщо у вас раптом немає GIT, то спочатку завантажте його. Клонуємо з мого репозиторію Vagrantfile та скрипт з налаштування оточення

git clone https://github.com/pixelgoo/rails-on-windows.git

Там усього 2 файли.

Vagrantfile — файл конфігурації.

Vagrant.configure("2") do |config|

  # Вказуємо який Vagrant бокс використовувати. У нашому випадку це пуста система Ubuntu 17.10
  config.vm.box = "bento/ubuntu-17.10"
	
  # Вказуємо, що після запуску віртуальної Ubuntu перший раз потрібно виконати скрипт у відповідному файлі
  config.vm.provision :shell, path: "bootstrap.sh"
  
  # Перекидаємо порт
  # localhost:3000 у браузері Windows покаже нам насправді localhost:3000 нашої віртуальної Ubuntu
  config.vm.network "forwarded_port", guest: 3000, host: 3000 
  
  # Синхронізація тек. Наша тека rails-on-windows у Windows буде відповідати теці workspace у віртуальній Ubuntu
  config.vm.synced_folder '.', '/home/vagrant/workspace', type: "smb", mount_options: ["vers=3.02","mfsymlinks"]

end

bootstrap.sh — shell скрипт для завантаження необхідного оточення.

У цьому shell-скрипті власне відбувається налаштування Ruby-оточення. Для новачка це чудовий стартовий набір сучасних Rails, розробник з досвідом інсталює необхідні пакети/геми для себе без проблем. Список інструментів, що інсталюються:

  • GIT
  • PostgreSQL
  • RVM
  • Ruby 2.5.0
  • Rails gem
  • NPM
  • Yarn

3. Запускаємо віртуальну машину

  1. Вводимо команду vagrant up . Vagrant використає Vagrantfile і почне завантажувати Vagrant бокс з дистрибутивом Ubuntu, виконає все, що вказано в конфігурації. Після встановлення Ubuntu Vagrant під'єднається до неї, перейде до термінала і виконає скрипт (список команд) з bootstrap.sh.
  2. У цей час у командному рядку буде багато чого відбуватися, але вам нічого не потрібно робити, окрім можливо ввести свій логін і пароль для користувача Windows (потрібні для smb синхронізації). Очікуйте за чашечкою кави допоки Vagrant усе налаштує. Для зручності у скрипті я прокоментував усі команди. Це може зайняти деякий час, особливо компіляція Ruby.

4. Встановлюємо ssh зв'язок з віртуальною машиною

Після завершення інсталяції й конфігурації віртуальної машини до неї можна приєднатися командою vagrant ssh. Командний рядок запитає у вас пароль для користувача vagrant. Пароль по замовчуванню vagrant.

Таким чином, ви опинилися у повноформатній Ubuntu з якою можна працювати, як зі звичайною системою. Ми вказали у файлі конфігурації директорію /home/vagrant/workspace яка буде синхронізуватися з директорією rails-on-windows у вашій Windows. Після логіну через ssh ми опинилися у /home/vagrant, тож перейдемо у workspace командою $ cd workspace

Усе, що ви будете робити в цій директорії опиниться у теці rails-on-windows у вашій Windows системі.

5. Створюємо тестовий Rails проект

Перевіримо наше оточення, створивши тестовий rails проект.

$ rails new rails_on_windows --database=postgresql --skip-sprockets --webpack

$ cd rails_on_windows

$ rails server

У Windows перейдіть у вашому браузері на localhost:3000 і зможете побачити, що наш Vagrant перекинув порт і тестовий проект дійсно працює!

Ruby on Rails на Windows: огляд проблеми та налаштування за допомогою Vagrant і Virtual Box

Також можемо бачити синхронізовану теку у Windows провіднику. Використовуйте її для редагування файлів у Rails проектах.

Ruby on Rails на Windows: огляд проблеми та налаштування за допомогою Vagrant і Virtual Box

Власне, це і все. Тепер можна працювати над Rails не виходячи з Windows і користуючись усіма перевагами цієї системи. Не забудьте при перезавантаженні системи знову викликати vagrant up щоб «увімкнути» віртуальну Ubuntu.


Новачкам: зверніть увагу, що ця стаття присвячена виключно тому, щоб налаштувати сучасне Rails оточення. Уся інформація про Ruby і Rails, базу даних PostgreSQL, її підключення до Rails, а також робота з Webpack вже не входять у рамки цієї статті. Розібратися з відповідними частинами екосистеми Rails ви зможете в інших посібниках та документації. Тому, хто не знає з чого почати взагалі, рекомендую відомий туторіал Майкла Хартла.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 6.2K
Приєднався: 7 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація