Як налаштувати проект Ruby on Rails v7 з фронтендом React на Ubuntu 20.04

Як налаштувати проект Ruby on Rails v7 з фронтендом React на Ubuntu 20.04

Вступ

Ruby on Rails (RoR) — це фреймворк із відкритим кодом для розробки веб-додатків, що використовує Ruby як мову програмування та базується на архітектурному паттерні MVC (Model-View-Controller). React — це JavaScript-бібліотека з відкритим кодом для створення високопродуктивних користувальницьких інтерфейсів. Поєднання RoR як потужного бекенду та React як ефективного фронтенду забезпечує всебічне рішення для розробки веб-додатків.

Ця інструкція проведе вас крок за кроком через процес налаштування проекту RoR v7 з фронтендом React на сервері Ubuntu 20.04. Ми зосередимося на оптимальній конфігурації та найкращих практиках для того, щоб забезпечити плавну та ефективну розробку вашого веб-додатку.

Передумови

* Сервер Ubuntu 20.04 з повними правами sudo
* Встановлено Node.js (рекомендується версія 16 або вище)
* Встановлено Yarn (рекомендується версія 1.22 або вище)
* Встановлено Ruby (рекомендується версія 2.7 або вище)
* Встановлено Rails (рекомендується версія 7.0 або вище)

Налаштування

1. Створення проекту RoR

У терміналі перейдіть до каталогу, де потрібно створити проект RoR, і введіть наступну команду:

shell
rails new rails-react

2. Додавання React до проекту

Перейдіть до щойно створеного каталогу проекту та виконайте команду:

shell
yarn add create-react-app@latest

Створіть новий React-додаток у каталозі client:

shell
npx create-react-app client

3. Налаштування RoR для React

Додайте gem 'jsbundling-rails' до Gemfile вашого проекту RoR і виконайте установку:

shell
bundle install

Створіть файл config/webpack/environment.js зі следующим вмістом:

javascript
const { environment } = require('@rails/webpacker')

const customConfig = {
resolve: {
fallback: {
"buffer": require.resolve("buffer/"),
"stream": require.resolve("stream-browserify"),
"assert": require.resolve("assert/"),
"crypto": require.resolve("crypto-browserify"),
"http": require.resolve("stream-http"),
"https": require.resolve("https-browserify"),
"os": require.resolve("os-browserify/browser"),
"url": require.resolve("url/"),
"path": require.resolve("path-browserify")
}
}
}

environment.config.merge(customConfig)

module.exports = environment

4. Налаштування React для Rails

У каталозі client React-додатка відкрийте файл package.json і додайте:

json
"proxy": "http://localhost:3000"

У файлі src/index.js React-додатка імпортуйте axios і налаштуйте базову URL-адресу:

javascript
import axios from "axios";

axios.defaults.baseURL = "http://localhost:3000/api/v1";

5. Підключення фронтенду та бекенду

У файлі config/routes.rb проекту RoR додайте:

ruby
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
resources :your_resources
end
end
end

У моделі вашого ресурсу додайте:

ruby

your_model.rb

class YourModel < ApplicationRecord
def api_json
{ id: id, name: name, description: description }
end
end

У React-компоненті додайте:

javascript
import { useState, useEffect } from "react";
import axios from "axios";

const YourComponent = () => {
const [data, setData] = useState([]);

useEffect(() => {
const fetchData = async () => {
const response = await axios.get("/api/v1/your_resources");
setData(response.data);
};
fetchData();
}, []);

return (
<div>
{data.map((item) => (
<p key={item.id}>{item.name} - {item.description}</p>
))}
</div>
);
};

export default YourComponent;

Запуск проекту

1. Запуск сервера RoR

У терміналі в каталозі проекту RoR виконайте:

shell
rails s

2. Запуск React-додатка

У терміналі в каталозі React-додатка виконайте:

shell
cd client
yarn start

Відвідайте http://localhost:3000/ у своєму браузері. Ви побачите фронтенд React, підключений до бекенду RoR.

Висновок

Ви успішно настроїли проект RoR v7 з фронтендом React на сервері Ubuntu 20.04. Ця конфігурація забезпечує оптимальну продуктивність та підвищує ефективність розробки веб-додатків. Використовуючи цей підхід, ви можете створювати потужні та гнучкі веб-додатки, які відповідають потребам ваших користувачів.

Подальше дослідження та експерименти допоможуть вам покращити конфігурацію та оптимізувати проект. Використовуйте можливості RoR і React, щоб створювати виняткові веб-додатки з високопродуктивними інтерфейсами користувачів.

Часті запитання

1. Чим корисно використовувати RoR з React?
RoR забезпечує потужний бекенд із інструментами для управління базами даних, автентифікації користувачів і логікою бізнес-правил. React забезпечує ефективний фронтенд для створення високопродуктивних користувальницьких інтерфейсів. Поєднання цих двох технологій забезпечує всебічне рішення для розробки веб-додатків.

2. Як оновити проект до останньої версії RoR?
Щоб оновити проект до останньої версії RoR, виконайте команду rails upgrade у терміналі в каталозі проекту. Обов’язково прочитайте документи про оновлення, щоб дізнатися про будь-які необхідні зміни.

3. Як додати маршрути React до RoR?
Щоб додати маршрути React до RoR, створіть файл config/routes.rb у вашому проекті RoR і додайте маршрути, використовуючи метод Rails.application.routes.draw.

4. Як використовувати сторонні бібліотеки React у проекті RoR?
Щоб використовувати сторонні бібліотеки React у проекті RoR, додайте їх до файлу package.json вашого React-додатка та встановіть їх за допомогою Yarn. Ви можете використовувати yarn add або yarn add -D залежно від того, чи потрібна бібліотека для розробки або залежності.

5. Як покращити продуктивність React-додатка?
Щоб покращити продуктивність React-додатка, ви можете використовувати методику компонентного підходу, мемоїзацію, планування ключа та інші техніки оптимізації. React DevTools є корисним інструментом для виявлення проблем із продуктивністю.

6. Як забезпечити безпеку React-додатка?
Щоб забезпечити безпеку React-додатка, використовуйте методики безпечного кодування, такі як екранування вхідних даних, фільтрація вихідних даних і захист від атак міжсайтових сценаріїв (XSS). Ви також можете використовувати бібліотеки безпеки React для додаткового захисту.

7. Як розгорнути React-додаток із RoR бекендом у виробниче середовище?
Щоб розгорнути React-додаток з RoR бекендом у виробниче середовище, ви можете використовувати служби хостингу, такі як Heroku, AWS Elastic