Введение
Ruby on Rails (RoR) — это среда веб-приложений с открытым исходным кодом, опубликованная под лицензией MIT. Это серверная среда веб-приложений, которая следует концепции Model-View-Controller (MVC).
Rails предоставляет предопределенные структуры для базы данных, веб-службы и веб-страниц.Более 3000 разработчиков внесли код в среду Rails, и существует множество хорошо известных приложений на основе Rails, таких как Github, Airbnb, Soundcloud и т. д.
В этом руководстве мы покажем вам, как создать проект с Ruby on Rails в Ubuntu 20.04 LTS Focal Fossa.
Предпосылки
Для этого руководства вам понадобятся:
- Пользователь с привилегиями sudo.
- NodeJS установлен: как установить Node.js и NPM на Ubuntu 20.04 LTS.
- Yarn установлен: Как установить Yarn на Ubuntu 18.40 LTS.
- Ruby установлен: как установить Ruby on Rails с помощью rbenv на Ubuntu 20.04 LTS.
Если вы хотите создать проект с Ruby on Rails на удаленном сервере, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установите и настройте PostgreSQL.
В этом руководстве мы будем использовать PostgreSQL в качестве базы данных для нашего проекта Rails. И на этом этапе мы установим сервер базы данных PostgreSQL, предоставленный официальным репозиторием Ubuntu.
Установите сервер базы данных PostgreSQL в Ubuntu 20.04, используя приведенную ниже команду apt.
sudo apt install postgresql postgresql-contrib libpq-dev -y
После завершения установки запустите службу PostgreSQL и добавьте ее при запуске системы.
systemctl start postgresql
systemctl enable postgresql
Служба PostgreSQL запущена и работает.
Затем войдите в оболочку PostgreSQL и создайте новую роль «nov_role» с паролем «nov_pass» и привилегиями «createdb» и «login».
sudo -i -u postgres psql
create role nov_role with createdb login password 'nov_pass';
Теперь перечислите всех пользователей, доступных в PostgreSQL, используя следующий запрос.
\du
И вы получите роль «nov_role» для пользователей списка PostgreSQL:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
nov_role | Create DB | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Выйдите из оболочки PostgreSQL:
\q
Для получения дополнительной информации о PostgreSQL читайте: Как установить PostgreSQL на Ubuntu 20.04 LTS.
Создайте проект с Ruby on Rails
По умолчанию Ruby on Rails использует SQLite в качестве базы данных по умолчанию. И для этого руководства мы собираемся начать новый проект Rails с использованием базы данных PostgreSQL.
Создайте новый проект nov_app с базой данных PostgreSQL по умолчанию, используя следующую команду rails.
rails new nov_app -d postgresql
Теперь вы получите каталог проекта «nov_app», перейдите в каталог проекта с помощью команды cd и измените конфигурацию базы данных «config/database.yml» с помощью редактора nano.
cd nov_app/
nano config/database.yml
В разделе development
добавьте конфигурацию базы данных, как показано ниже.
host: localhost
port: 5432
username: nov_role
password: nov_pass
Перейдите в раздел testing
и добавьте конфигурацию базы данных PostgreSQL, как показано ниже.
host: localhost
port: 5432
username: nov_role
password: nov_pass
Когда закончите, сохраните и закройте файл, нажав CTRL+X
, затем Y
и ENTER
, чтобы подтвердить изменения.
Затем запустите приведенные ниже команды rails, чтобы сгенерировать и перенести базу данных для нашего проекта Rails и убедиться в отсутствии ошибок.
rails db:setup
rails db:migrate
После завершения установки запустите веб-сервер puma rails по умолчанию, используя следующую команду.
Приложение будет работать на вашем общедоступном IP-адресе с портом 8080
:
=> Booting Puma
=> Rails 6.0.3.1 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.5 (ruby 2.7.1-p83), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:8081
Теперь откройте веб-браузер и введите IP-адрес вашего сервера с портом 8080
в адресной строке: http://TUO_INDIRIZZO_IP:8080/
Вы получите стандартную страницу Ruby on Rails index.html.
Создайте простой CRUD с помощью Rails Scaffold
На этом этапе мы создадим новое простое приложение CRUD, используя базу данных Ruby on Rails и PostgreSQL.
Создайте простое приложение CRUD с помощью команды ruby scaffold, как показано ниже:
rails g scaffold Post title:string body:text
Вы должны увидеть вывод, подобный следующему:
Running via Spring preloader in process 1578
invoke active_record
create db/migrate/20200527145454_create_posts.rb
create app/models/post.rb
invoke test_unit
create test/models/post_test.rb
create test/fixtures/posts.yml
invoke resource_route
route resources:posts
invoke scaffold_controller
create app/controllers/posts_controller.rb
invoke erb
create app/views/posts
create app/views/posts/index.html.erb
create app/views/posts/edit.html.erb
create app/views/posts/show.html.erb
create app/views/posts/new.html.erb
create app/views/posts/_form.html.erb
invoke test_unit
create test/controllers/posts_controller_test.rb
create test/system/posts_test.rb
invoke helper
create app/helpers/posts_helper.rb
invoke test_unit
invoke jbuilder
create app/views/posts/index.json.jbuilder
create app/views/posts/show.json.jbuilder
create app/views/posts/_post.json.jbuilder
invoke assets
invoke scss
create app/assets/stylesheets/posts.scss
invoke scss
create app/assets/stylesheets/scaffolds.scss
Затем перенесите базу данных с помощью следующей команды.
rake db:migrate
== 20200527145454 CreatePosts: migrating ======================================
-- create_table(:posts)
-> 0.0117s
== 20200527145454 CreatePosts: migrated (0.0120s) =============================
Убедитесь, что ошибок нет, затем снова запустите сервер Puma.
rails s -b 0.0.0.0 -p 8080
Вернитесь в свой веб-браузер и введите IP-адрес сервера с портом 8080
, добавив путь «/posts»: http://TUO_INDIRIZZO_IP:8080/posts
Теперь вы можете создавать, редактировать и удалять записи с помощью простого приложения CRUD и базы данных PostgreSQL, используя Rails Scaffold.
Вывод
В этом руководстве мы увидели, как создать приложение с использованием Ruby on Rails и PostgreSQL в Ubuntu 20.04 LTS Focal Fossa.