Heroku — Ruby on Rails

Подготовка системы

apt install curl git gnupg2 nodejs

Устанавливаем RVM

Переходим на сайт rvm.io и смотрим команды установки:

gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable

Добавляем пользователя в группу:

vim /etc/group
rvm:x:1001:ubuntu

Имя моего пользователя в системе — ubuntu

 

Затем от пользователя:

source /etc/profile.d/rvm.sh

Узнать версию RVM:

rvm --version

Посмотреть список доступных для установки версий Ruby:

rvm list known

Установим Ruby последней версии:

rvm install "ruby-2.5.1"

Список установленных Ruby версий и используемую по умолчанию можно узнать так:

rvm list

Посмотрим версию gem и обновим ее:

gem -v
gem update --system

Установим Rails:

gem install rails

 

Создание приложения

Создадим тестовое приложение:

rails new example_app -T

Перейдем в директорию нашего приложения:

cd example_app

Создадим для теста index.html

vim public/index.html

 

Вставим туда следующее:

<!DOCTYPE html>
<html>
    <head>
        <title>Ruby</title>
    </head>
    <body>
Example Ruby App
    </body>
</html>

 

Запускаем для теста на всех интерфейсах:

bundle exec rails s -p 3000 -b '0.0.0.0'

=> Booting Puma
=> Rails 5.2.2 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.1-p57), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

 

Проверяем в браузере:

1.2.3.4:3000

Где 1.2.3.4 — IP адрес компьютера, где запущено приложение

Если на компьютере есть графическая оболочка, можно не указывать IP адрес при запуске приложения, и зайти в браузере по локалхосту. Так же без графики локалхост можно проверить курлом или консольным браузером

Можно останавливать приложение — Ctrl-C

 

Git

Находясь в корне нашего приложения инициализируем репозиторий:

git init

Reinitialized existing Git repository in /home/ubuntu/heroku/example_app/.git/

Проверим статус:

git status

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .gitignore
        .ruby-version
        Gemfile
        Gemfile.lock
        README.md
        Rakefile
        app/
        bin/
        config.ru
        config/
        db/
        lib/
        log/
        package.json
        public/
        storage/
        tmp/
        vendor/

nothing added to commit but untracked files present (use "git add" to track)

 

Добавим все файлы:

git add .

 

И делаем комит:

git commit -am "Add Ruby files to repo"

 

Проверим:

git status

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   .gitignore
        new file:   .ruby-version
        new file:   Gemfile
        new file:   Gemfile.lock
        new file:   README.md
        new file:   Rakefile
        new file:   app/assets/config/manifest.js
        new file:   app/assets/images/.keep
        new file:   app/assets/javascripts/application.js
        new file:   app/assets/javascripts/cable.js
        new file:   app/assets/javascripts/channels/.keep
        new file:   app/assets/stylesheets/application.css
        new file:   app/channels/application_cable/channel.rb
        new file:   app/channels/application_cable/connection.rb
        new file:   app/controllers/application_controller.rb
        new file:   app/controllers/concerns/.keep
        new file:   app/helpers/application_helper.rb
        new file:   app/jobs/application_job.rb
        new file:   app/mailers/application_mailer.rb
        new file:   app/models/application_record.rb
        new file:   app/models/concerns/.keep
        new file:   app/views/layouts/application.html.erb
        new file:   app/views/layouts/mailer.html.erb
        new file:   app/views/layouts/mailer.text.erb
        new file:   bin/bundle
        new file:   bin/rails
        new file:   bin/rake
        new file:   bin/setup
        new file:   bin/spring
        new file:   bin/update
        new file:   bin/yarn
        new file:   config.ru
        new file:   config/application.rb
        new file:   config/boot.rb
        new file:   config/cable.yml
        new file:   config/credentials.yml.enc
        new file:   config/database.yml
        new file:   config/environment.rb
        new file:   config/environments/development.rb
        new file:   config/environments/production.rb
        new file:   config/environments/test.rb
        new file:   config/initializers/application_controller_renderer.rb
        new file:   config/initializers/assets.rb
        new file:   config/initializers/backtrace_silencers.rb
        new file:   config/initializers/content_security_policy.rb
        new file:   config/initializers/cookies_serializer.rb
        new file:   config/initializers/filter_parameter_logging.rb
        new file:   config/initializers/inflections.rb
        new file:   config/initializers/mime_types.rb
        new file:   config/initializers/wrap_parameters.rb
        new file:   config/locales/en.yml
        new file:   config/puma.rb
        new file:   config/routes.rb
        new file:   config/spring.rb
        new file:   config/storage.yml
        new file:   db/seeds.rb
        new file:   lib/assets/.keep
        new file:   lib/tasks/.keep
        new file:   log/.keep
        new file:   package.json
        new file:   public/404.html
        new file:   public/422.html
        new file:   public/500.html
        new file:   public/apple-touch-icon-precomposed.png
        new file:   public/apple-touch-icon.png
        new file:   public/favicon.ico
        new file:   public/index.html
        new file:   public/robots.txt
        new file:   storage/.keep
        new file:   tmp/.keep
        new file:   vendor/.keep

 

Heroku

Регистрируемся на heroku.com и заходим в аккаунт.

Для удобства работы с Heroku установим их CLI

sudo snap install --classic heroku

Установку для дистрибутивов отличных от Ubuntu можно посмотреть на сайте Heroku

Проверяем:

heroku --version

heroku/7.19.4 linux-x64 node-v11.3.0

Авторизуемся в Heroku CLI:

heroku login

Жмем любою клавишу и получаем URL авторизации, копируем ее в браузер, логинимся.

Создадим приложение на Heroku:

heroku create

Creating app... done, ⬢ my-generated-app-name-83844
https://my-generated-app-name-83844.herokuapp.com/ | https://git.heroku.com/my-generated-app-name-83844.git

Теперь нужно в Gemfile заменить "sqlite3" на "postgres", иначе Heroku выдаст следующую ошибку:

remote: An error occurred while installing sqlite3 (1.3.13), and Bundler cannot
remote: continue.
remote: Make sure that `gem install sqlite3 -v '1.3.13'` succeeds before bundling.
remote:
remote: In Gemfile:
remote: sqlite3
remote:
remote: !
remote: ! Failed to install gems via Bundler.
remote: ! Detected sqlite3 gem which is not supported on Heroku:
remote: ! https://devcenter.heroku.com/articles/sqlite3
remote: !
remote: ! Push rejected, failed to compile Ruby app.

Открываем Gemfile

vim Gemfile

Находим в начале файла запись о sqlite3

gem 'sqlite3'

И переносим ее в блок "group :development, :test do"

Чтобы получилось следующее:

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'sqlite3'
end

Перед этим блоком добавим новый блок:

group :production do
  gem 'pg'
end

Сохраняем изменения в файле

Переустанавливаем у себя без postgres

bundle install --without production

Добавляем файлы, делаем коммит и пушаем в Heroku:

git add .
git commit -am "Heroku"
git push heroku master

Проверим:

heroku open

В ответ получим URL, по которому можем проверить приложение на Heroku.

0 0 vote
Рейтинг статьи

Метки: Метки

Подписаться
Уведомление о
guest
0 комментариев
Inline Feedbacks
View all comments