자체 제작 된 Rails 플러그인 Gem을 여러 버전 환경에서 자동 테스트
Travis CI
CI에는 여러 가지 유형이 있지만 Travis CI을 사용하면 설정만으로 여러 Ruby 및 Gem 버전을 결합하여 테스트를 자동화 할 수 있습니다. Travis CI의 기본적인 사용법이나 Github 리포지토리와의 연계 방법 등에 대해서는 많은 정보가 있으므로 여기에서는 생략합니다.
여러 Ruby 버전에서 테스트
.travis.yml
의 rvm
에서 대상 Ruby 버전을 정의합니다.
travis.ymlrvm:
- 2.1.10
- 2.2.7
- 2.3.4
- ruby-head
matrix:
# ruby-headはテストの失敗を許容する
allow_failures:
- rvm: ruby-head
위의 예에서는 Ruby의 2.1계, 2.2계, 2.3계를 테스트의 대상으로 하고 있습니다. ruby-head
는 개발중인 Ruby 버전이므로 테스트가 실패하는 경우가 있습니다. 따라서 allow_failures
실패를 허용합니다.
여러 종속 Gem 버전에서 테스트
예를 들어 여러 Rails 버전을 테스트 대상으로 합니다.
먼저 Gem이 지원하는 버전을 정의한 gemspec 파일과 종속 Gem 버전마다 Gem 파일을 준비합니다.
mygem.gemspec # Rubyのバージョンを指定する
s.required_ruby_version = '>= 2.1.0'
# Gemに本当に必要なモジュールのみをgemspecに記述する
s.add_dependency 'railties', '>= 4.2.0', '< 5.1'
s.add_dependency 'activerecord', '>= 4.2.0'
gemfiles/Gemfile.rails-5.0source 'https://rubygems.org'
gemspec path: '../'
gem 'rails', '~> 5.0.0'
gemfiles/Gemfile.rails-4.2source 'https://rubygems.org'
gemspec path: '../'
gem 'rails', '~> 4.2.0'
그런 다음 .travis.yml
의 gemfile
에 대상 Gem 파일을 정의합니다.
travis.ymlgemfile:
- Gemfile
- gemfiles/Gemfile.rails-5.0
- gemfiles/Gemfile.rails-4.2
matrix:
exclude:
- rvm: 2.1.10
gemfile: gemfiles/Gemfile.rails-5.0
위의 예에서는 Rails의 4.2계와 5.0계를 테스트의 대상으로 하고 있습니다. Rails5.0은 Ruby2.2계 이상에 의존하기 때문에 exclude
에 의해 Ruby2.1계와 Rails5.0계의 조합을 테스트 대상에서 제외하고 있습니다.
로컬 테스트
Gem 버전에 의존하는 처리를 개발할 때는 로컬 개발 환경에서도 여러 버전의 테스트가 통과하는지 확인해야 합니다. 이 때 환경 변수에 Gem 파일을 지정하여 테스트를 실행할 수 있습니다.
※이하는 테스트에 RSpec를 사용하고 있는 경우의 예입니다. 적당히 읽어 주세요.
# Rails 5.0でのテスト
BUNDLE_GEMFILE=gemfiles/Gemfile.rails-5.0 bundle exec rspec
# Rails 4.2でのテスト
BUNDLE_GEMFILE=gemfiles/Gemfile.rails-4.2 bundle exec rspec
여러 환경 변수(ORM 등)에서의 테스트
ActiveRecord
및 Mongoid
와 같은 여러 ORM을 지원하는 Gem은 각 ORM에 대해 테스트를 돌릴 수 있습니다. 이 경우 .travis.yml
의 env
에 환경 변수를 설정하여 테스트 환경을 정의합니다.
travis.ymlenv:
- MYGEM_ORM=active_record
- MYGEM_ORM =mongoid
matrix:
exclude:
- env: MYGEM_ORM =mongoid
gemfile: Gemfile
services:
- mongodb
테스트 코드에서 환경 변수에 따라 Gem에 ORM을 env
로 설정합니다. rvm
및 gemfile
와 마찬가지로 Matrix에서 조건 조합을 정의할 수 있습니다. 응용 프로그램 내에서 환경 변수 MYGEM_ORM
에 따라 사용할 ORM을 전환하는 프로세스가 필요합니다. .travis.yml
의 services
에 mongodb
라고 기술하면 CI 상에서 MongoDB 를 사용할 수 있게 됩니다.
테스트 결과
최종적으로 기술되는 .travis.yml
는 다음과 같이 됩니다.
travis.ymllanguage: ruby
rvm:
- 2.1.10
- 2.2.7
- 2.3.4
- ruby-head
gemfile:
- Gemfile
- gemfiles/Gemfile.rails-5.0
- gemfiles/Gemfile.rails-4.2
env:
- MYGEM_ORM=active_record
- MYGEM_ORM=mongoid
matrix:
exclude:
- rvm: 2.1.10
gemfile: gemfiles/Gemfile.rails-5.0
- rvm: 2.1.10
gemfile: Gemfile
- env: MYGEM_ORM=mongoid
gemfile: Gemfile
allow_failures:
- rvm: ruby-head
fast_finish: true
services:
- mongodb
# 中略
script: bundle exec rspec
소스 코드가 Github 리포지토리에 푸시되면 Travis CI에서 여러 환경에서 자동으로 테스트가 실행됩니다.
Reference
이 문제에 관하여(자체 제작 된 Rails 플러그인 Gem을 여러 버전 환경에서 자동 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/simukappu/items/3a536ba55ff4b8066908
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
.travis.yml
의 rvm
에서 대상 Ruby 버전을 정의합니다.travis.yml
rvm:
- 2.1.10
- 2.2.7
- 2.3.4
- ruby-head
matrix:
# ruby-headはテストの失敗を許容する
allow_failures:
- rvm: ruby-head
위의 예에서는 Ruby의 2.1계, 2.2계, 2.3계를 테스트의 대상으로 하고 있습니다.
ruby-head
는 개발중인 Ruby 버전이므로 테스트가 실패하는 경우가 있습니다. 따라서 allow_failures
실패를 허용합니다.여러 종속 Gem 버전에서 테스트
예를 들어 여러 Rails 버전을 테스트 대상으로 합니다.
먼저 Gem이 지원하는 버전을 정의한 gemspec 파일과 종속 Gem 버전마다 Gem 파일을 준비합니다.
mygem.gemspec # Rubyのバージョンを指定する
s.required_ruby_version = '>= 2.1.0'
# Gemに本当に必要なモジュールのみをgemspecに記述する
s.add_dependency 'railties', '>= 4.2.0', '< 5.1'
s.add_dependency 'activerecord', '>= 4.2.0'
gemfiles/Gemfile.rails-5.0source 'https://rubygems.org'
gemspec path: '../'
gem 'rails', '~> 5.0.0'
gemfiles/Gemfile.rails-4.2source 'https://rubygems.org'
gemspec path: '../'
gem 'rails', '~> 4.2.0'
그런 다음 .travis.yml
의 gemfile
에 대상 Gem 파일을 정의합니다.
travis.ymlgemfile:
- Gemfile
- gemfiles/Gemfile.rails-5.0
- gemfiles/Gemfile.rails-4.2
matrix:
exclude:
- rvm: 2.1.10
gemfile: gemfiles/Gemfile.rails-5.0
위의 예에서는 Rails의 4.2계와 5.0계를 테스트의 대상으로 하고 있습니다. Rails5.0은 Ruby2.2계 이상에 의존하기 때문에 exclude
에 의해 Ruby2.1계와 Rails5.0계의 조합을 테스트 대상에서 제외하고 있습니다.
로컬 테스트
Gem 버전에 의존하는 처리를 개발할 때는 로컬 개발 환경에서도 여러 버전의 테스트가 통과하는지 확인해야 합니다. 이 때 환경 변수에 Gem 파일을 지정하여 테스트를 실행할 수 있습니다.
※이하는 테스트에 RSpec를 사용하고 있는 경우의 예입니다. 적당히 읽어 주세요.
# Rails 5.0でのテスト
BUNDLE_GEMFILE=gemfiles/Gemfile.rails-5.0 bundle exec rspec
# Rails 4.2でのテスト
BUNDLE_GEMFILE=gemfiles/Gemfile.rails-4.2 bundle exec rspec
여러 환경 변수(ORM 등)에서의 테스트
ActiveRecord
및 Mongoid
와 같은 여러 ORM을 지원하는 Gem은 각 ORM에 대해 테스트를 돌릴 수 있습니다. 이 경우 .travis.yml
의 env
에 환경 변수를 설정하여 테스트 환경을 정의합니다.
travis.ymlenv:
- MYGEM_ORM=active_record
- MYGEM_ORM =mongoid
matrix:
exclude:
- env: MYGEM_ORM =mongoid
gemfile: Gemfile
services:
- mongodb
테스트 코드에서 환경 변수에 따라 Gem에 ORM을 env
로 설정합니다. rvm
및 gemfile
와 마찬가지로 Matrix에서 조건 조합을 정의할 수 있습니다. 응용 프로그램 내에서 환경 변수 MYGEM_ORM
에 따라 사용할 ORM을 전환하는 프로세스가 필요합니다. .travis.yml
의 services
에 mongodb
라고 기술하면 CI 상에서 MongoDB 를 사용할 수 있게 됩니다.
테스트 결과
최종적으로 기술되는 .travis.yml
는 다음과 같이 됩니다.
travis.ymllanguage: ruby
rvm:
- 2.1.10
- 2.2.7
- 2.3.4
- ruby-head
gemfile:
- Gemfile
- gemfiles/Gemfile.rails-5.0
- gemfiles/Gemfile.rails-4.2
env:
- MYGEM_ORM=active_record
- MYGEM_ORM=mongoid
matrix:
exclude:
- rvm: 2.1.10
gemfile: gemfiles/Gemfile.rails-5.0
- rvm: 2.1.10
gemfile: Gemfile
- env: MYGEM_ORM=mongoid
gemfile: Gemfile
allow_failures:
- rvm: ruby-head
fast_finish: true
services:
- mongodb
# 中略
script: bundle exec rspec
소스 코드가 Github 리포지토리에 푸시되면 Travis CI에서 여러 환경에서 자동으로 테스트가 실행됩니다.
Reference
이 문제에 관하여(자체 제작 된 Rails 플러그인 Gem을 여러 버전 환경에서 자동 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/simukappu/items/3a536ba55ff4b8066908
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# Rubyのバージョンを指定する
s.required_ruby_version = '>= 2.1.0'
# Gemに本当に必要なモジュールのみをgemspecに記述する
s.add_dependency 'railties', '>= 4.2.0', '< 5.1'
s.add_dependency 'activerecord', '>= 4.2.0'
source 'https://rubygems.org'
gemspec path: '../'
gem 'rails', '~> 5.0.0'
source 'https://rubygems.org'
gemspec path: '../'
gem 'rails', '~> 4.2.0'
gemfile:
- Gemfile
- gemfiles/Gemfile.rails-5.0
- gemfiles/Gemfile.rails-4.2
matrix:
exclude:
- rvm: 2.1.10
gemfile: gemfiles/Gemfile.rails-5.0
# Rails 5.0でのテスト
BUNDLE_GEMFILE=gemfiles/Gemfile.rails-5.0 bundle exec rspec
# Rails 4.2でのテスト
BUNDLE_GEMFILE=gemfiles/Gemfile.rails-4.2 bundle exec rspec
ActiveRecord
및 Mongoid
와 같은 여러 ORM을 지원하는 Gem은 각 ORM에 대해 테스트를 돌릴 수 있습니다. 이 경우 .travis.yml
의 env
에 환경 변수를 설정하여 테스트 환경을 정의합니다.travis.yml
env:
- MYGEM_ORM=active_record
- MYGEM_ORM =mongoid
matrix:
exclude:
- env: MYGEM_ORM =mongoid
gemfile: Gemfile
services:
- mongodb
테스트 코드에서 환경 변수에 따라 Gem에 ORM을
env
로 설정합니다. rvm
및 gemfile
와 마찬가지로 Matrix에서 조건 조합을 정의할 수 있습니다. 응용 프로그램 내에서 환경 변수 MYGEM_ORM
에 따라 사용할 ORM을 전환하는 프로세스가 필요합니다. .travis.yml
의 services
에 mongodb
라고 기술하면 CI 상에서 MongoDB 를 사용할 수 있게 됩니다.테스트 결과
최종적으로 기술되는 .travis.yml
는 다음과 같이 됩니다.
travis.ymllanguage: ruby
rvm:
- 2.1.10
- 2.2.7
- 2.3.4
- ruby-head
gemfile:
- Gemfile
- gemfiles/Gemfile.rails-5.0
- gemfiles/Gemfile.rails-4.2
env:
- MYGEM_ORM=active_record
- MYGEM_ORM=mongoid
matrix:
exclude:
- rvm: 2.1.10
gemfile: gemfiles/Gemfile.rails-5.0
- rvm: 2.1.10
gemfile: Gemfile
- env: MYGEM_ORM=mongoid
gemfile: Gemfile
allow_failures:
- rvm: ruby-head
fast_finish: true
services:
- mongodb
# 中略
script: bundle exec rspec
소스 코드가 Github 리포지토리에 푸시되면 Travis CI에서 여러 환경에서 자동으로 테스트가 실행됩니다.
Reference
이 문제에 관하여(자체 제작 된 Rails 플러그인 Gem을 여러 버전 환경에서 자동 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/simukappu/items/3a536ba55ff4b8066908
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
language: ruby
rvm:
- 2.1.10
- 2.2.7
- 2.3.4
- ruby-head
gemfile:
- Gemfile
- gemfiles/Gemfile.rails-5.0
- gemfiles/Gemfile.rails-4.2
env:
- MYGEM_ORM=active_record
- MYGEM_ORM=mongoid
matrix:
exclude:
- rvm: 2.1.10
gemfile: gemfiles/Gemfile.rails-5.0
- rvm: 2.1.10
gemfile: Gemfile
- env: MYGEM_ORM=mongoid
gemfile: Gemfile
allow_failures:
- rvm: ruby-head
fast_finish: true
services:
- mongodb
# 中略
script: bundle exec rspec
Reference
이 문제에 관하여(자체 제작 된 Rails 플러그인 Gem을 여러 버전 환경에서 자동 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/simukappu/items/3a536ba55ff4b8066908텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)