diff --git a/.gitignore b/.gitignore index e5791c8..4f15859 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ Gemfile.lock pkg/* spec/log spec/tmp -gemfiles/*.lock +scenarios/*.lock diff --git a/Appraisals b/Appraisals deleted file mode 100644 index a2e1454..0000000 --- a/Appraisals +++ /dev/null @@ -1,40 +0,0 @@ -appraise "rails30" do - gem "rails", "3.0.20" - gem "sqlite3" -end - -appraise "rails31" do - gem "rails", "3.1.12" - gem "mongoid" - gem "sqlite3" -end - -appraise "rails32" do - gem "rails", "3.2.21" - gem "mongoid" - gem "sqlite3" -end - -appraise "rails40" do - gem "rails", "4.0.13" - gem "mongoid" - gem "sqlite3" -end - -appraise "rails41" do - gem "rails", "4.1.9" - gem "mongoid" - gem "sqlite3" -end - -appraise "rails42" do - gem "rails", "4.2.0" - gem "mongoid" - gem "sqlite3" -end - -appraise "rails50" do - gem "rails", github: "rails/rails" - gem 'arel', github: "rails/arel" - gem "sqlite3" -end diff --git a/Readme.md b/Readme.md index efa78d6..76334ba 100644 --- a/Readme.md +++ b/Readme.md @@ -88,15 +88,27 @@ end # Developing and Testing -To generate Gemfiles for Rails 3.0, 3.1, 3.2, 4.0, 4.1, and 4.2, run `rake -appraisal:gemfiles appraisal:install`. +This repo uses [Roadshow] to generate a [Docker Compose] file for each +supported version of Rails (with a compatible version of Ruby for each one). -You can then run the tests across all four versions with `rake appraisal`. You -can also manually run the Rails console and server with `rake appraisal -console` and `rake appraisal server`. +To run specs across all versions, you can either [get the Roadshow tool] and +run `roadshow run`, or use Docker Compose directly: -For a specific version of Rails, use `rake appraisal:rails30`, `rake -appraisal:rails31`, `rake appraisal:rails32`, etc. +``` +$ for fn in scenarios/*.docker-compose-yml; do docker-compose -f $fn run --rm scenario; done +``` + +You can also manually run the Rails console and server on each version with +`roadshow run rake console` and `roadshow run rake server`, or run them on a +specific version with, e.g., `roadshow run -s rails40 rake console`. + +To update the set of scenarios, edit `scenarios.yml` and run `roadshow +generate`, although the Gemfiles in the `scenarios` directory need to be +maintained manually. + +[Roadshow]: https://github.com/rf-/roadshow +[Docker Compose]: https://docs.docker.com/compose/ +[get the Roadshow tool]: https://github.com/rf-/roadshow/releases # Alternative diff --git a/gemfiles/rails40.gemfile b/gemfiles/rails40.gemfile deleted file mode 100644 index 981498d..0000000 --- a/gemfiles/rails40.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://rubygems.org" - -gem "rails", "4.0.13" -gem "mongoid" -gem "sqlite3" - -gemspec :path => "../" diff --git a/gemfiles/rails50.gemfile b/gemfiles/rails50.gemfile deleted file mode 100644 index 4151a64..0000000 --- a/gemfiles/rails50.gemfile +++ /dev/null @@ -1,9 +0,0 @@ -# This file was generated by Appraisal - -source "http://rubygems.org" - -gem "rails", :github => "rails/rails" -gem "arel", :github => "rails/arel" -gem "sqlite3" - -gemspec :path => "../" diff --git a/scenarios.yml b/scenarios.yml new file mode 100644 index 0000000..26eed81 --- /dev/null +++ b/scenarios.yml @@ -0,0 +1,27 @@ +project: pryrails + +shared: + from: ruby:2.4 + cmd: "(bundle check || bundle install) && bundle exec rake" + service: + volumes: + - bundle_{{scenario_name}}:/usr/local/bundle + environment: + BUNDLE_GEMFILE: scenarios/{{scenario_name}}.gemfile + volumes: + bundle_{{scenario_name}}: + +scenarios: + rails30: + from: ruby:2.0 + rails31: + from: ruby:2.0 + rails32: + from: ruby:2.0 + rails40: + from: ruby:2.3 + rails41: + from: ruby:2.3 + rails42: {} + rails50: {} + rails51: {} diff --git a/scenarios/rails30.docker-compose.yml b/scenarios/rails30.docker-compose.yml new file mode 100644 index 0000000..78d8fef --- /dev/null +++ b/scenarios/rails30.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails30.dockerfile + image: pryrails_scenario_rails30 + volumes: + - "..:/scenario" + - "bundle_rails30:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails30.gemfile +volumes: + bundle_rails30: {} diff --git a/scenarios/rails30.dockerfile b/scenarios/rails30.dockerfile new file mode 100644 index 0000000..cd39487 --- /dev/null +++ b/scenarios/rails30.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.0 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/gemfiles/rails30.gemfile b/scenarios/rails30.gemfile similarity index 52% rename from gemfiles/rails30.gemfile rename to scenarios/rails30.gemfile index 2c8f4b3..7444abb 100644 --- a/gemfiles/rails30.gemfile +++ b/scenarios/rails30.gemfile @@ -1,8 +1,7 @@ -# This file was generated by Appraisal - source "http://rubygems.org" -gem "rails", "3.0.20" +gem "rails", "~> 3.0.0" gem "sqlite3" +gem "test-unit" gemspec :path => "../" diff --git a/scenarios/rails31.docker-compose.yml b/scenarios/rails31.docker-compose.yml new file mode 100644 index 0000000..8382cab --- /dev/null +++ b/scenarios/rails31.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails31.dockerfile + image: pryrails_scenario_rails31 + volumes: + - "..:/scenario" + - "bundle_rails31:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails31.gemfile +volumes: + bundle_rails31: {} diff --git a/scenarios/rails31.dockerfile b/scenarios/rails31.dockerfile new file mode 100644 index 0000000..cd39487 --- /dev/null +++ b/scenarios/rails31.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.0 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/gemfiles/rails31.gemfile b/scenarios/rails31.gemfile similarity index 56% rename from gemfiles/rails31.gemfile rename to scenarios/rails31.gemfile index 970782f..43c7820 100644 --- a/gemfiles/rails31.gemfile +++ b/scenarios/rails31.gemfile @@ -1,9 +1,8 @@ -# This file was generated by Appraisal - source "http://rubygems.org" -gem "rails", "3.1.12" +gem "rails", "~> 3.1.0" gem "mongoid" gem "sqlite3" +gem "test-unit" gemspec :path => "../" diff --git a/scenarios/rails32.docker-compose.yml b/scenarios/rails32.docker-compose.yml new file mode 100644 index 0000000..2fc141b --- /dev/null +++ b/scenarios/rails32.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails32.dockerfile + image: pryrails_scenario_rails32 + volumes: + - "..:/scenario" + - "bundle_rails32:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails32.gemfile +volumes: + bundle_rails32: {} diff --git a/scenarios/rails32.dockerfile b/scenarios/rails32.dockerfile new file mode 100644 index 0000000..cd39487 --- /dev/null +++ b/scenarios/rails32.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.0 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/gemfiles/rails32.gemfile b/scenarios/rails32.gemfile similarity index 56% rename from gemfiles/rails32.gemfile rename to scenarios/rails32.gemfile index 4f009db..5488d16 100644 --- a/gemfiles/rails32.gemfile +++ b/scenarios/rails32.gemfile @@ -1,9 +1,8 @@ -# This file was generated by Appraisal - source "http://rubygems.org" -gem "rails", "3.2.21" +gem "rails", "~> 3.2.0" gem "mongoid" gem "sqlite3" +gem "test-unit" gemspec :path => "../" diff --git a/scenarios/rails40.docker-compose.yml b/scenarios/rails40.docker-compose.yml new file mode 100644 index 0000000..9ffd3e3 --- /dev/null +++ b/scenarios/rails40.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails40.dockerfile + image: pryrails_scenario_rails40 + volumes: + - "..:/scenario" + - "bundle_rails40:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails40.gemfile +volumes: + bundle_rails40: {} diff --git a/scenarios/rails40.dockerfile b/scenarios/rails40.dockerfile new file mode 100644 index 0000000..7e898d0 --- /dev/null +++ b/scenarios/rails40.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.3 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/scenarios/rails40.gemfile b/scenarios/rails40.gemfile new file mode 100644 index 0000000..2f4b477 --- /dev/null +++ b/scenarios/rails40.gemfile @@ -0,0 +1,6 @@ +source "http://rubygems.org" + +gem "rails", "~> 4.0.0" +gem "sqlite3" + +gemspec :path => "../" diff --git a/scenarios/rails41.docker-compose.yml b/scenarios/rails41.docker-compose.yml new file mode 100644 index 0000000..a7d3232 --- /dev/null +++ b/scenarios/rails41.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails41.dockerfile + image: pryrails_scenario_rails41 + volumes: + - "..:/scenario" + - "bundle_rails41:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails41.gemfile +volumes: + bundle_rails41: {} diff --git a/scenarios/rails41.dockerfile b/scenarios/rails41.dockerfile new file mode 100644 index 0000000..7e898d0 --- /dev/null +++ b/scenarios/rails41.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.3 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/gemfiles/rails41.gemfile b/scenarios/rails41.gemfile similarity index 57% rename from gemfiles/rails41.gemfile rename to scenarios/rails41.gemfile index d6ea7ff..001966c 100644 --- a/gemfiles/rails41.gemfile +++ b/scenarios/rails41.gemfile @@ -1,8 +1,6 @@ -# This file was generated by Appraisal - source "http://rubygems.org" -gem "rails", "4.1.9" +gem "rails", "~> 4.1.0" gem "mongoid" gem "sqlite3" diff --git a/scenarios/rails42.docker-compose.yml b/scenarios/rails42.docker-compose.yml new file mode 100644 index 0000000..e7bb7ba --- /dev/null +++ b/scenarios/rails42.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails42.dockerfile + image: pryrails_scenario_rails42 + volumes: + - "..:/scenario" + - "bundle_rails42:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails42.gemfile +volumes: + bundle_rails42: {} diff --git a/scenarios/rails42.dockerfile b/scenarios/rails42.dockerfile new file mode 100644 index 0000000..8f8ed2c --- /dev/null +++ b/scenarios/rails42.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.4 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/gemfiles/rails42.gemfile b/scenarios/rails42.gemfile similarity index 57% rename from gemfiles/rails42.gemfile rename to scenarios/rails42.gemfile index d0d8a96..a66961e 100644 --- a/gemfiles/rails42.gemfile +++ b/scenarios/rails42.gemfile @@ -1,8 +1,6 @@ -# This file was generated by Appraisal - source "http://rubygems.org" -gem "rails", "4.2.0" +gem "rails", "~> 4.2.0" gem "mongoid" gem "sqlite3" diff --git a/scenarios/rails50.docker-compose.yml b/scenarios/rails50.docker-compose.yml new file mode 100644 index 0000000..b9d3609 --- /dev/null +++ b/scenarios/rails50.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails50.dockerfile + image: pryrails_scenario_rails50 + volumes: + - "..:/scenario" + - "bundle_rails50:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails50.gemfile +volumes: + bundle_rails50: {} diff --git a/scenarios/rails50.dockerfile b/scenarios/rails50.dockerfile new file mode 100644 index 0000000..8f8ed2c --- /dev/null +++ b/scenarios/rails50.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.4 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/scenarios/rails50.gemfile b/scenarios/rails50.gemfile new file mode 100644 index 0000000..79a5069 --- /dev/null +++ b/scenarios/rails50.gemfile @@ -0,0 +1,7 @@ +source "http://rubygems.org" + +gem "rails", "~> 5.0.0" +gem "mongoid" +gem "sqlite3" + +gemspec :path => "../" diff --git a/scenarios/rails51.docker-compose.yml b/scenarios/rails51.docker-compose.yml new file mode 100644 index 0000000..73e2e43 --- /dev/null +++ b/scenarios/rails51.docker-compose.yml @@ -0,0 +1,15 @@ +--- +version: "2" +services: + scenario: + build: + context: .. + dockerfile: scenarios/rails51.dockerfile + image: pryrails_scenario_rails51 + volumes: + - "..:/scenario" + - "bundle_rails51:/usr/local/bundle" + environment: + BUNDLE_GEMFILE: scenarios/rails51.gemfile +volumes: + bundle_rails51: {} diff --git a/scenarios/rails51.dockerfile b/scenarios/rails51.dockerfile new file mode 100644 index 0000000..8f8ed2c --- /dev/null +++ b/scenarios/rails51.dockerfile @@ -0,0 +1,5 @@ +FROM ruby:2.4 +RUN mkdir -p /scenario +WORKDIR /scenario +ENV LANG=C.UTF-8 +CMD (bundle check || bundle install) && bundle exec rake diff --git a/scenarios/rails51.gemfile b/scenarios/rails51.gemfile new file mode 100644 index 0000000..e67d1dc --- /dev/null +++ b/scenarios/rails51.gemfile @@ -0,0 +1,7 @@ +source "http://rubygems.org" + +gem "rails", "~> 5.1.0" +gem "mongoid" +gem "sqlite3" + +gemspec :path => "../"