Нашей целью сегодня является настройка проекта Rails, который использует Semaphore CI для тестирования проекта, а затем автоматически развертывается на сервере Amazon EC2 с использованием Capistrano. Мы будем использовать Nginx, Puma и Postgres, а также Ruby 2.3.0 и Rails 4.2.6.
Что такое семафор?
Семафор позволяет быстро настроить быстрый непрерывный процесс доставки для любого веб-проекта. Вы можете протестировать каждое внесенное вами изменение и легко развернуть новые версии на радость своим пользователям. SemaphoreCI позволяет вам поддерживать свою команду в туалете, интегрируя его с другими сервисами. В настоящее время его используют и высоко ценят сотни компаний по всему миру. Вы можете прочитать больше о предложении здесь.
Преимущества КИ
Некоторые из основных преимуществ непрерывной интеграции:
- Это держит всех в курсе о здоровье сборки. SemaphoreCI сообщает всем, если сборка не удалась, какая фиксация вызвала сбой сборки и кто ее создал.
- Позволяет непрерывно и плавно внедрять новые функции. Когда новый код объединяется в указанной ветви, запускается набор тестов, и, если все тесты пройдены, развертывание запускается автоматически.
Процедура
Убедитесь, что у вас установлен RVM . Я использую Ruby 2.3.0 и Rails 4.2.6 .
Создать новое приложение Rails
Введите следующее в терминале. Я добавляю флаг -d postgresql, чтобы генератор знал, что мы хотим использовать Postgres в качестве БД:
$ rails new ci-test-and-deploy-to-ec2-capistrano -d postgresql
CD в каталог проекта:
$ cd ci-test-and-deploy-to-ec2-capistrano
Создайте базу данных:
$ rake db:create
Создайте каркас для нашего проекта, который будет создавать модель , контроллер , виды и маршруты . Мы назовем ресурс Блог и предоставим имена полей. Это также сгенерирует миграцию для создания таблицы базы данных blogs
:
$ rails generate scaffold blog author title body:text
Перенос базы данных:
$ rake db:migrate
Добавьте эту строку в config / rout.rb. Это устанавливает корень приложения.
root 'blogs#index'
Запустите сервер приложений, выполнив эту команду в терминале:
$ rails server
Посетите http: // localhost: 3000, чтобы убедиться, что наше приложение настроено нормально. Вы должны увидеть этот экран:
Отлично! Наша базовая настройка приложения работает нормально.
Контроль версий проекта на BitBucket
Почему я выбрал Bitbucket вместо широко распространенного GitHub?
Ценообразование. Bitbucket дает вам неограниченное количество бесплатных репозиториев. Практически все те же мощные функции, что и в GitHub, плюс гибкая ценовая политика. Мы собираемся использовать это, поскольку я хотел продемонстрировать, как люди могут быстро запустить частный проект, который бесплатно контролируется версиями, а также может обеспечить непрерывную бесплатную доставку (100 частных сборок в месяц) с SemaphoreCI.
Однако, если вы хотите использовать Github, то, что мы здесь делаем, легко сделать на этой платформе.
Давайте начнем с BitBucket
Зарегистрируйтесь на BitBucket.
Создайте и назовите свой репо. Здесь мы будем использовать пример проекта / приложения, созданного на предыдущих этапах, и перенесем его в этот недавно созданный репозиторий.
Вы уже должны быть в каталоге вашего проекта в окне терминала. cd
в каталог, если вы еще этого не сделали:
$ cd /path/to/my/repo
Инициализируйте пустой репозиторий git в каталоге вашего проекта:
$ git init Initialized empty Git repository in /Users/sarmad/projects/ci-test-and-deploy-to-ec2-capistrano/.git/
Теперь запустите эти команды. Не забудьте заменить [email protected]:sarmadsabih/ci-test-and-deploy-to-ec2-capistrano.git
на тот, который показан в вашем хранилище:
$ git remote add origin [email protected]:sarmadsabih/ci-test-and-deploy-to-ec2-capistrano.git
Добавить и зафиксировать все файлы:
$ git add -A && git commit -m "first commit"
Наконец нажмите на ветку master
вашего репо:
$ git push origin master
Обновите страницу хранилища, и вы должны увидеть страницу обзора. Ваш репо теперь онлайн на Bitbucket.
Настройте сервер Amazon EC2
Теперь нам нужно настроить сервер Amazon EC2 для нашего приложения. Зарегистрируйтесь на Amazon AWS . Он имеет бесплатный уровень, который применяется в течение года после регистрации. Бесплатный уровень дает вам 750 часов (полный месяц) в месяц экземпляра t2.micro до истечения срока действия бесплатного уровня.
Войдите в консоль управления AWS и нажмите на EC2, чтобы перейти на панель мониторинга EC2:
Вы попадете на панель управления EC2. Нажмите на кнопку «Запуск экземпляра»:
Выберите Ubuntu 14.04 LTS 64-bit в качестве ОС:
Выберите экземпляр t2.micro, который подходит для уровня Free. Вы можете выбрать другой экземпляр в зависимости от ваших вычислительных требований. Нажмите «Далее: Настройка сведений об экземпляре»:
Значения по умолчанию будут хорошо работать на этой странице. Изменяйте значения, только если вы знаете, что делаете, и если это ваше требование. Нажмите «Далее: Добавить хранилище»:
Оставьте все как есть и нажмите «Далее: Экземпляр тега»:
Назовите экземпляр и нажмите «Далее: Настройка группы безопасности:
Просмотрите выбранные настройки / параметры и нажмите «Запустить»:
Обратите внимание на этот шаг! Выберите «Создать новую пару ключей» в первом раскрывающемся списке. Введите имя для пары ключей в поле ввода, а затем загрузите пару ключей. Предупреждение! Вы не можете загрузить пару ключей снова после этого экрана. Если вы потеряете этот ключ, вы никогда не сможете подключиться к своему экземпляру Amazon EC2 по ssh (не совсем так, но это трудно). Поэтому загрузите пару ключей (файл .pem) и сохраните ее в безопасности.
Нажмите «Launch Instance», чтобы наконец запустить экземпляр:
Ваш экземпляр запущен:
Это страница, где перечислены все ваши экземпляры. Убедитесь, что ваш экземпляр находится в состоянии «Работает» и все проверки состояния прошли:
Выберите свой экземпляр, и вы сможете увидеть общий IP-адрес экземпляра в нижней части страницы. Скопируйте публичный IP, он нам скоро понадобится:
Перейдите в папку, где находится ваш .pem файл. Мой находится в моем каталоге загрузок . Измените следующую команду, если ваше местоположение файла pem отличается:
$ cd ~/Downloads
Используйте команду pwd
чтобы получить полный путь к каталогу:
$ pwd /Users/sarmad/Downloads
Вы будете использовать этот путь ниже. Не забудьте заменить путь и имя файла на ваш. Также замените публичный IP-адрес, используемый ниже, на публичный IP-адрес вашего экземпляра EC2, который вы скопировали на предыдущем шаге:
$ ssh -i "/Users/sarmad/Downloads/rails-ci-testing-deployment.pem" [email protected] The authenticity of host '54.210.115.143 (54.210.115.143)' can't be established. ECDSA key fingerprint is SHA256:pvhV+Nlz8erA0/crpI7QTNvYigQY2KYNoXDTcaifyBE. Are you sure you want to continue connecting (yes/no)?
Введите «да» и нажмите Enter. Тебе следует увидеть:
Warning: Permanently added '54.210.115.143' (ECDSA) to the list of known hosts. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/Users/sarmad/Downloads/rails-ci-testing-deployment.pem' are too open.
Как следует из сообщения, права доступа к вашему файлу .pem слишком открыты, поэтому нам нужно это исправить. Запустите эту команду:
$ chmod 400 /Users/sarmad/Downloads/rails-ci-testing-deployment.pem
Это решит проблему. Теперь снова запустите команду ssh
:
$ ssh -i "/Users/sarmad/Downloads/rails-ci-testing-deployment.pem" [email protected]
Он должен войти в ваш экземпляр EC2. Сначала обновите существующие пакеты:
ec2$ sudo apt-get update && sudo apt-get -y upgrade
Добавьте нового пользователя, который будет использоваться Capistrano для развертывания. Назовите пользователя как хотите:
ec2$ sudo useradd -d /home/sarmad -m sarmad
Установите пароль для нового пользователя
ec2$ sudo passwd sarmad Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Теперь давайте предоставим нашему новому пользователю права sudo
:
ec2$ sudo visudo
Вставьте эту строку в файл, который открывается:
sarmad ALL=(ALL:ALL) ALL
Нажмите CTRL + o , нажмите Enter и CTRL + x, чтобы сохранить и выйти.
Войти с новым пользователем с помощью этой команды
ec2$ su - sarmad
Введите пароль. Это войдет в систему как пользователь sarmad
(или как вы его назвали):
Создайте ключ SSH с помощью ssh-keygen
. Нажмите Enter в каждом запросе по умолчанию:
ec2$ cat .ssh/id_rsa.pub
Вам необходимо добавить открытый ключ EC2 в свою учетную запись Bitbucket, чтобы пользователь EC2 мог получить доступ к вашему репо. Перейдите по этой и этой ссылке для получения дополнительной информации о добавлении ключа SSH в учетную запись Bitbucket.
Скопируйте закрытый ключ EC2 для последующего использования
Теперь скопируйте закрытый ключ пользователя EC2 sarmad
:
ec2$ cat id_rsa -----BEGIN RSA PRIVATE KEY----- some_long_random_string ----------------------------- ----------------------------- ----------------------------- ----------------------------- -----END RSA PRIVATE KEY-----
Скопируйте это куда-нибудь, так как это понадобится нам позже.
Скопируйте открытый ключ вашей машины разработки в EC2
Теперь нам нужно скопировать открытый ключ вашей локальной машины разработки в EC2. Это будет использоваться Capistrano для SSH в экземпляре EC2 как пользователь sarmad
(пользователь, которого мы создали для развертываний). Запустите это на терминале EC2:
ec2$ nano .ssh/authorized_keys
Вставьте в этот файл открытый ключ локальной машины разработки. Нажмите CTRL + o , нажмите Enter, затем нажмите CTRL + x, чтобы сохранить и выйти. Capistrano на вашем локальном компьютере разработки теперь может SSH подключаться к серверу развертывания как этот пользователь.
Настройте среду EC2
Установите Ruby
Несмотря на то, что мы можем установить Ruby напрямую, он очень популярен и рекомендует использовать какой-то менеджер версий Ruby. Есть два популярных варианта. Рбенв и РВМ . Мы собираемся использовать RVM. Установите RVM с этими командами:
ec2$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 ec2$ \curl -sSL https://get.rvm.io | bash -s stable
Источник RVM согласно этому сообщению установки сообщения:
* To start using RVM you need to run `source /home/sarmad/.rvm/scripts/rvm` in all your open shell windows, in rare cases you need to reopen all shell windows.
Бегать
ec2$ source /home/sarmad/.rvm/scripts/rvm
Установите последнюю стабильную МРТ Ruby:
ec2$ rvm install ruby
В этом случае Ruby-2.3.0 установлен. Вы также можете установить Ruby 2.3.0 с помощью этой команды rvm install 2.3.0
.
Нам нужно установить пакетный гем
ec2$ gem install bundler --no-ri --no-rdoc
Создать каталог проекта
ec2$ mkdir rails-ci-testing-and-deployment-to-ec2-capistrano
Установить NGINX
Вы можете прочитать больше здесь о NGINX.
ec2$ sudo apt-get install nginx
Введите пароль для sarmad
и нажмите Enter для подтверждения. Теперь настройте сайт по умолчанию. Откройте файл конфигурации сайта:
ec2$ sudo nano /etc/nginx/sites-available/default
Удалите существующий контент и вставьте следующее:
upstream app { # Path to Puma SOCK file, as defined previously server unix:///home/sarmad/rails-ci-testing-and-deployment-to-ec2-capistrano/shared/tmp/sockets/puma.sock fail_timeout=0; } server { listen 80; server_name localhost; root /home/sarmad/rails-ci-testing-and-deployment-to-ec2-capistrano/current/public; try_files $uri/index.html $uri @app; location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Connection ''; proxy_pass http://app; } location ~ ^/(assets|fonts|system)/|favicon.ico|robots.txt { gzip_static on; expires max; add_header Cache-Control public; } error_page 500 502 503 504 /500.html; client_max_body_size 4G; keepalive_timeout 10; }
Пройдите через этот файл конфигурации медленно, чтобы понять конфигурацию. Это довольно просто, правда.
Установить Git
ec2$ sudo apt-get install git
Примите значения по умолчанию.
Установить PostgreSQL
ec2$ sudo apt-get install postgresql postgresql-contrib libpq-dev
Снова, примите значения по умолчанию. Вы должны увидеть следующее:
* Starting PostgreSQL 9.3 database server [ OK ] Setting up postgresql (9.3+154ubuntu1) ... Setting up postgresql-contrib-9.3 (9.3.13-0ubuntu0.14.04) ... Setting up postgresql-contrib (9.3+154ubuntu1) ... Processing triggers for libc-bin (2.19-0ubuntu6.9) ...
Создать пользователя базы данных. Я sarmad
мой sarmad
, но вы можете назвать это как-то еще:
ec2$ sudo -u postgres createuser -s sarmad
Войдите в консоль PSQL с помощью этой команды:
ec2$ sudo -u postgres psql
Изменить пароль пользователя:
postgres=# \password sarmad
Введите пароль, который будет использоваться для подключения к серверу базы данных. Подтвердите пароль, и мы настроены.
Выход из приглашения postgres:
postgres=# \q
И нажмите Enter. Теперь давайте создадим производственную базу данных для нашего приложения:
ec2$ sudo -u postgres createdb -O sarmad rails-ci-testing-and-deployment-to-ec2-capistrano_production
Вернувшись в проект Rails, ваш * config / database.yml * должен выглядеть так:
default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: 5 development: <<: *default database: rails-ci-testing-and-deployment-to-ec2-capistrano_development test: <<: *default database: rails-ci-testing-and-deployment-to-ec2-capistrano_test production: <<: *default database: rails-ci-testing-and-deployment-to-ec2-capistrano_production username: sarmad password: sarmad host: localhost port: 5432
Не забудьте заменить любую информацию, которая отличается от того, что вы настроили для себя, например, имя базы данных, имя пользователя или пароль.
Вы можете хранить имя пользователя и пароль БД более конфиденциально. Но так как мы используем частный репозиторий, и цель этого учебника — просто быстро настроить CI с Rails, мы можем поместить эту информацию в этот файл сейчас.
Создать секрет для производства
Запустите эту команду в вашем локальном (не в EC2) каталоге проекта, чтобы сгенерировать секрет:
$ rake secret 80a602e4c5c8c173dd3d00b1492c7f952030552bf747467578be8efdc545d2e8e491497081be4fd4e15627a2e811bf47e89950db6a5162da6932eb2edb204c3a
Скопируйте секрет и поместите его в config / secrets.yml :
production: secret_key_base: 80a602e4c5c8c173dd3d00b1492c7f952030552bf747467578be8efdc545d2e8e491497081be4fd4e15627a2e811bf47e89950db6a5162da6932eb2edb204c3a
Это опять-таки конфиденциальная информация, которую вы, возможно, захотите хранить конфиденциально, но для простоты это будет работать пока.
Настроить Капистрано
Давайте настроим Capistrano в нашем проекте. Capistrano поддерживает Puma и RVM. Скопируйте эти драгоценные камни в свой Gemfile:
gem "therubyracer", platforms: :ruby, group: :production gem "puma" group :developemnt do gem "capistrano3-puma" gem "capistrano" gem "capistrano-bundler", require: false gem "capistrano-rvm" gem "capistrano-rails", require: false end
Запустите bundle install
чтобы установить новые гемы.
Давайте настроим Capistrano, сгенерировав файлы конфигурации для вашей среды, настроив STAGES на работу. Это создаст файлы для развертывания производственной среды.
$ cap install STAGES=production mkdir -p config/deploy create config/deploy.rb create config/deploy/production.rb mkdir -p lib/capistrano/tasks create Capfile Capified
Эти файлы создаются в результате:
- конфиг / deploy.rb
- конфигурации / развернуть / production.rb
- Capfile
Ваш Capfile должен выглядеть так (Скопируйте это, чтобы убедиться в правильности):
# Load DSL and set up stages require "capistrano/setup" # Include default deployment tasks require "capistrano/deploy" # Include tasks from other gems included in your Gemfile # # For documentation on these, see for example: # # https://github.com/capistrano/rvm # https://github.com/capistrano/bundler # https://github.com/capistrano/rails # https://github.com/capistrano/passenger # require "capistrano/rvm" require "capistrano/bundler" require "capistrano/rails/assets" require "capistrano/rails/migrations" require "capistrano/puma" # Load custom tasks from `lib/capistrano/tasks` if you have any defined Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
Ваш файл config / deploy.rb должен выглядеть следующим образом:
# config valid only for current version of Capistrano lock '3.4.0' # Change the application name with your application name set :application, 'rails-ci-testing-and-deployment-to-ec2-capistrano' # Change the repository URL with your repository URL set :repo_url, '[email protected]:sarmadsabih/ci-test-and-deploy-to-ec2-capistrano.git' # Default branch is :master if you need to use some other branch then uncomment the line below # And change the branch name with the name of the branch you want to use # set :branch, :some_other_branch_you_may_want_to_use # Don't forget to change the username (ie sarmad in this case) with your username # And the project directory with the name of your project directory set :deploy_to, '/home/sarmad/rails-ci-testing-and-deployment-to-ec2-capistrano' set :scm, :git # Default value for :format is :pretty # set :format, :pretty # Default value for :log_level is :debug # set :log_level, :debug # Default value for :pty is false set :pty, true set :rvm_type, :user # Edit this if you are using a different Ruby version set :rvm_ruby_version, 'ruby-2.3.0' # Default value for linked_dirs is [] set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system') # Default value for default_env is {} # set :default_env, { path: "/opt/ruby/bin:$PATH" } # Default value for keep_releases is 5 set :keep_releases, 5 # Pume config set :puma_rackup, -> { File.join(current_path, 'config.ru') } set :puma_state, "#{shared_path}/tmp/pids/puma.state" set :puma_pid, "#{shared_path}/tmp/pids/puma.pid" set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock" #accept array for multi-bind set :puma_conf, "#{shared_path}/puma.rb" set :puma_access_log, "#{shared_path}/log/puma_error.log" set :puma_error_log, "#{shared_path}/log/puma_access.log" set :puma_role, :app set :puma_env, fetch(:rack_env, fetch(:rails_env, 'production')) set :puma_threads, [0, 8] set :puma_workers, 0 set :puma_worker_timeout, nil set :puma_init_active_record, true set :puma_preload_app, false
Хорошо, мы почти закончили с сервером. Вернитесь на свой локальный компьютер, чтобы начать развертывание с Capistrano. Отредактируйте файл config / deploy / production.rb, чтобы установить IP-адрес сервера. Откройте файл и вставьте следующее в файл. Измените IP-адрес в соответствии с IP-адресом вашего сервера EC @:
set :stage, :production # Replace this EC2 server's public IP with your EC2 server's public IP # Replace this user ('sarmad') with the one you created on your EC2 instance server '54.210.115.143', user: 'sarmad', roles: %w{web app db}
Передайте и отправьте в наш репозиторий Bitbucket:
$ git add -A $ git commit -m "ready for first deployment" $ git push origin master
Теперь давайте начнем развертывание с использованием Capistrano:
$ cap production deploy
Первое развертывание занимает некоторое время. Плотно держаться. Этот процесс развернет приложение, перенесет БД и запустит ваш сервер приложений.
SSH в ваш экземпляр EC2 и перезапустите NGINX для перезагрузки наших настроек:
ec2$ sudo service nginx restart
Перейдите по адресу http: // [DNS-имя вашего экземпляра EC2 или публичный IP-адрес], чтобы увидеть, как работает приложение:
семафор
Зарегистрируйтесь, если вы еще не зарегистрированы в SemaphoreCI. Вы увидите это после регистрации. Нажмите «Добавить новый проект»:
Нажмите на свое имя пользователя на следующем экране:
Выберите Bitbucket:
Вы увидите список репозиториев из вашей учетной записи Bitbucket. Выберите репо, которое вы хотите добавить в SemaphoreCI. В нашем случае мы выберем тот, который мы создали для этого урока:
Выберите основную ветку в нашем случае:
Это страница настроек вашего проекта. Сопоставьте поля, выбранные на этом экране, с настройками вашего проекта. Ruby 2.3.0 и PG в качестве базы данных:
После настройки нажмите «Build». Вы можете увидеть процесс сборки на следующем экране:
Сборка пройдена в результате прохождения тестов. В случае неудачных тестов сборка завершится неудачно, и вы получите уведомление по электронной почте с подробностями сбоя сборки.
Теперь у нас есть тестовая настройка сервера со 100 бесплатными частными сборками в месяц. Теперь давайте настроим развертывание:
Выберите «Capistrano»:
Выберите «Автоматически». Он будет запускать автоматическое развертывание всякий раз, когда будет успешная сборка в основной (или любой выбранной вами ветви) ветке.
Выберите ветку (мастер) для сборки:
Команды развертывания должны выглядеть следующим образом. Обратите внимание на создание ключевого слова во 2-й команде развертывания:
Вставьте закрытый ключ пользователя экземпляра EC2 sarmad
(или любого sarmad
пользователя, которого вы создали) в следующую текстовую область. Это позволит нашему серверу развертывания SemaphoreCI получить доступ к нашему пользователю sarmad
экземпляра EC2 через Capistrano:
Примите значения по умолчанию и нажмите «Создать сервер»:
Сервер развертывания создан и настроен. Нажмите кнопку Deploy , чтобы начать развертывание с нашими настройками:
Бинго! Развертывание прошло успешно.
Теперь нам нужно убедиться, что если мы отправляем неудачную сборку (нажимаем коммит с неудачными тестами), она не развертывается. Запустите rake test, чтобы проверить, проходят ли тесты в текущей кодовой базе:
$ rake test Run options: --seed 52969 # Running: ....... Finished in 0.509991s, 13.7257 runs/s, 25.4906 assertions/s. 7 runs, 13 assertions, 0 failures, 0 errors, 0 skips
Сделайте тесты неудачными, внеся изменения в test / controllers / blogs_controller_test.rb . Измените строку assert_response
в этом тесте:
test "should get index" do get :index assert_response :success assert_not_nil assigns(:blogs) end
Замените assert_response :success
на assert_response :error
чтобы сделать тест неудачным. Проверьте, запустив rake test
:
$ rake test Run options: --seed 47910 # Running: ..F.... Finished in 0.378145s, 18.5114 runs/s, 31.7339 assertions/s. 1) Failure: BlogsControllerTest#test_should_get_index [/Users/sarmad/projects/rails-ci-testing-and-deployment-to-ec2-capistrano/test/controllers/blogs_controller_test.rb:10]: Expected response to be a <error>, but was <200> 7 runs, 12 assertions, 1 failures, 0 errors, 0 skips
Это терпит неудачу. Давайте внесем это изменение в наш репозиторий Bitbucket и будем следить за Semaphore CI:
$ git add -A $ git commit -m "failing test" $ git push origin master
Сборка че идет. Нам нужно, чтобы эта сборка провалилась.
Сборка завершилась неудачно, и SemaphoreCI не запустил развертывание:
Это страница деталей неудачной сборки. Мы можем увидеть, какие тесты не пройдены и ошибки, если таковые имеются.
Теперь давайте исправим сломанный тест и отправим его в репозиторий Bitbucket. Верните неудачный тест, вернув assert_response :error
обратно в assert_response :success
.
Проверьте прохождение тестов, выполнив rake test
:
$ rake test Run options: --seed 25838 # Running: ....... Finished in 0.455917s, 15.3537 runs/s, 28.5140 assertions/s. 7 runs, 13 assertions, 0 failures, 0 errors, 0 skips
Передайте и подтолкните к нашему репо:
git add -A git commit -m "fix the broken test" git push origin master
Мониторинг SemaphoreCI снова:
Сборка прошла успешно, и развертывание началось сразу после ее завершения.
Вывод
Теперь у вас есть приложение Rails, развернутое на высокомасштабируемом сервере Amazon EC2. Ваша настройка включает в себя сценарий автоматического развертывания, настроенный с помощью Capistrano, а также сервер тестирования и развертывания. Это очень мощный набор инструментов для разработки Rails, который может быть очень продуктивным для большинства проектов. Я собрал их все в одном месте, чтобы вы могли начать работу и заложить основу для дальнейшего развертывания приложения Rails. Я надеюсь, что вы найдете это полезным.