From 82bf147a199fe69ab3065782b442b8078f7f21c6 Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Fri, 29 Jan 2016 16:00:12 -0500 Subject: [PATCH 1/8] Add Rails 5 support Closes [#376]. Required changes ---------------- Run test suite against the latest `5.0.0.betaX` and `master` branches of [`rails/rails`][rails]. Since `EmberController` extends `ApplicationController`, which can now extend from either `ActionController::Base` (which implements `helper_method`) and `ActionController::API` (which doesn't implement `helper_method`), we can't depend on that API existing. Remove call to `helper_method` from `EmberController`, as it is no longer supported. Support changes --------------- Rails 5 depends on `rack@2.0.x`, which **requires** Ruby `2.2.2` or greater. In order to support Rails 5, we will no longer support versions of Ruby prior to `2.2.2`. [#376]: https://github.com/thoughtbot/ember-cli-rails/issues/376 [rails]: https://github.com/rails/rails --- .travis.yml | 5 +++-- Appraisals | 8 +++++++ CHANGELOG.md | 3 +++ README.md | 2 +- UPGRADING.md | 6 +++++ app/controller/ember_cli/ember_controller.rb | 5 ----- app/views/ember_cli/ember/index.html.erb | 2 +- gemfiles/5.0.0.beta2.gemfile | 23 ++++++++++++++++++++ gemfiles/master.gemfile | 23 ++++++++++++++++++++ 9 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 gemfiles/5.0.0.beta2.gemfile create mode 100644 gemfiles/master.gemfile diff --git a/.travis.yml b/.travis.yml index 92b45b69..c4a2de70 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,7 @@ notifications: email: false rvm: - 2.3.0 -- 2.2 -- 2.1 +- 2.2.2 - jruby-9.0.3.0 before_install: - echo '--colour' > ~/.rspec @@ -20,3 +19,5 @@ gemfile: - gemfiles/3.2.gemfile - gemfiles/4.1.gemfile - gemfiles/4.2.gemfile + - gemfiles/5.0.0.beta2.gemfile + - gemfiles/master.gemfile diff --git a/Appraisals b/Appraisals index ba0f768d..c4b39a7c 100644 --- a/Appraisals +++ b/Appraisals @@ -9,3 +9,11 @@ end appraise "4.2" do gem "rails", "~> 4.2.1" end + +appraise "5.0.0.beta2" do + gem "rails", "5.0.0.beta2" +end + +appraise "master" do + gem "rails", git: "https://github.com/rails/rails.git", branch: "master" +end diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f1a5d08..882cf863 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ master ------ +* Remove support for Ruby 2.1.x. [#400] + 0.7.3 ----- @@ -22,6 +24,7 @@ master * `EmberCli::Deploy::File` serves assets with Rails' `static_cache_control` value. [#403] +[#400]: https://github.com/thoughtbot/ember-cli-rails/pull/400 [#396]: https://github.com/thoughtbot/ember-cli-rails/pull/396 [#403]: https://github.com/thoughtbot/ember-cli-rails/pull/403 diff --git a/README.md b/README.md index 67677e6c..7843d2aa 100644 --- a/README.md +++ b/README.md @@ -591,7 +591,7 @@ This project supports: This project supports: -* Ruby versions `>= 2.1.0` +* Ruby versions `>= 2.2.0` * Rails versions `>=4.1.x`. To learn more about supported versions and upgrades, read the [upgrading guide]. diff --git a/UPGRADING.md b/UPGRADING.md index 0c75a49c..80c7a1a4 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -8,6 +8,12 @@ Additionally, this codebase makes use of [(required) keyword arguments][kwargs]. From `ember-cli-rails@0.4.0` and on, we will no longer support versions of Ruby prior to `2.1.0`. +`ember-cli-rails@0.8.0` adds support for Rails 5, which depends on `rack@2.0.x`, +which **requires** Ruby `2.2.2` or greater. + +From `ember-cli-rails@0.8.0` and on, we will no longer support versions of Ruby +prior to `2.2.2`. + To use `ember-cli-rails` with older versions of Ruby, try the `0.3.x` series. [kwargs]: https://robots.thoughtbot.com/ruby-2-keyword-arguments diff --git a/app/controller/ember_cli/ember_controller.rb b/app/controller/ember_cli/ember_controller.rb index 7c6835f9..24e21cbb 100644 --- a/app/controller/ember_cli/ember_controller.rb +++ b/app/controller/ember_cli/ember_controller.rb @@ -3,10 +3,5 @@ class EmberController < ::ApplicationController def index render layout: false end - - def ember_app - params[:ember_app] - end - helper_method :ember_app end end diff --git a/app/views/ember_cli/ember/index.html.erb b/app/views/ember_cli/ember/index.html.erb index 6004b207..8ce344e4 100644 --- a/app/views/ember_cli/ember/index.html.erb +++ b/app/views/ember_cli/ember/index.html.erb @@ -1,4 +1,4 @@ -<%= render_ember_app ember_app do |head| %> +<%= render_ember_app params[:ember_app] do |head| %> <% head.append do %> <%= csrf_meta_tags %> <% end %> diff --git a/gemfiles/5.0.0.beta2.gemfile b/gemfiles/5.0.0.beta2.gemfile new file mode 100644 index 00000000..f3024ffe --- /dev/null +++ b/gemfiles/5.0.0.beta2.gemfile @@ -0,0 +1,23 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "5.0.0.beta2" +gem "pry" + +group :development, :test do + gem "high_voltage", github: "thoughtbot/high_voltage" + gem "rspec-core", github: "rspec/rspec-core" + gem "rspec-support", github: "rspec/rspec-support" + gem "rspec-expectations", github: "rspec/rspec-expectations" + gem "rspec-mocks", github: "rspec/rspec-mocks" + gem "rspec-rails", github: "rspec/rspec-rails" +end + +group :test do + gem "poltergeist", "~> 1.8.0" + gem "codeclimate-test-reporter", :require => nil +end + +gemspec :path => "../" diff --git a/gemfiles/master.gemfile b/gemfiles/master.gemfile new file mode 100644 index 00000000..e2276f5e --- /dev/null +++ b/gemfiles/master.gemfile @@ -0,0 +1,23 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", :git => "https://github.com/rails/rails.git", :branch => "master" +gem "pry" + +group :development, :test do + gem "high_voltage", github: "thoughtbot/high_voltage" + gem "rspec-core", github: "rspec/rspec-core" + gem "rspec-support", github: "rspec/rspec-support" + gem "rspec-expectations", github: "rspec/rspec-expectations" + gem "rspec-mocks", github: "rspec/rspec-mocks" + gem "rspec-rails", github: "rspec/rspec-rails" +end + +group :test do + gem "poltergeist", "~> 1.8.0" + gem "codeclimate-test-reporter", :require => nil +end + +gemspec :path => "../" From 18774345a647105794afc8ee01fefb7f5c23487b Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Mon, 8 Feb 2016 18:11:18 -0500 Subject: [PATCH 2/8] Improve `setup_ember` script * Don't overwrite `gemfiles/` changes with `appraisal install` * Localize Ember setup to `bin/setup_ember` * Always invoke, let `bin/setup_ember` decide whether or not to no-op --- bin/setup | 19 ++----------------- bin/setup_ember | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/bin/setup b/bin/setup index dfaa5d24..f66d0f85 100755 --- a/bin/setup +++ b/bin/setup @@ -13,21 +13,6 @@ if ! command -v bower > /dev/null; then npm install -g bower fi -if ! [ -d spec/dummy/my-app ]; then - git clone https://github.com/kellyselden/ember-cli-output.git spec/dummy/my-app +bin/setup_ember spec/dummy/my-app - bin/setup_ember -fi - -# Only if this isn't CI -if [ -z "$CI" ]; then - bin/appraisal install -fi - -root="$(pwd)" - -cd ${root}/spec/dummy/my-app && - npm install --save-dev ember-cli-rails-addon@rondale-sc/ember-cli-rails-addon - bower install - -cd ${root}/spec/dummy && bundle exec rake ember:install +cd spec/dummy && bundle exec rake ember:install diff --git a/bin/setup_ember b/bin/setup_ember index 02692aed..abbb8569 100755 --- a/bin/setup_ember +++ b/bin/setup_ember @@ -2,10 +2,24 @@ set -e -# make router catchall routes -sed -i -e 's/auto/hash/' spec/dummy/my-app/config/environment.js +setup_ember() { + local target="${1-spec/dummy/my-app}" -# add an image to a template -echo '' >> spec/dummy/my-app/app/templates/application.hbs -mkdir -p spec/dummy/my-app/public/assets -cp spec/fixtures/logo.png spec/dummy/my-app/public/assets + if ! [ -d $target ]; then + git clone https://github.com/kellyselden/ember-cli-output.git $target + + # make router catchall routes + sed -i -e 's/auto/hash/' $target/config/environment.js + + # add an image to a template + echo '' >> $target/app/templates/application.hbs + mkdir -p $target/public/assets + cp spec/fixtures/logo.png $target/public/assets + + cd $target && + npm install --save-dev ember-cli-rails-addon@rondale-sc/ember-cli-rails-addon + bower install + fi +} + +setup_ember From ccef11d2529e15681dfc66baffd2f4e6ca08d95b Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Wed, 10 Feb 2016 11:15:20 -0500 Subject: [PATCH 3/8] Fix `EmberCli::EmberController` inheritance The `EmberCli::EmberController` used to inherit from `ApplicationController` in order to reap the benefits of application-wide configurations and behavior (such as authentication-based `before_action` calls and other macros). Unfortunately, with the introduction of Rails 5's `rails new --api`, applications' `ApplicationController` can now inherit from [`ActionController::API`][api], which doesn't serve HTML by default. To support Rails 5's default `--api` behavior, `EmberCli::EmberController` must inherit from `ActionController::Base`, forcing the controller to forfeit all the benefits of sharing behavior with `ApplicationController`. [api]: http://edgeapi.rubyonrails.org/classes/ActionController/API.html --- CHANGELOG.md | 2 ++ app/controller/ember_cli/ember_controller.rb | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 882cf863..cc337aec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ master ------ +* `EmberCli::EmberController` now inherits from `ActionController::Base` instead + of `ApplicationController`. [#400] * Remove support for Ruby 2.1.x. [#400] 0.7.3 diff --git a/app/controller/ember_cli/ember_controller.rb b/app/controller/ember_cli/ember_controller.rb index 24e21cbb..2ad6fd8e 100644 --- a/app/controller/ember_cli/ember_controller.rb +++ b/app/controller/ember_cli/ember_controller.rb @@ -1,5 +1,5 @@ module EmberCli - class EmberController < ::ApplicationController + class EmberController < ActionController::Base def index render layout: false end From fe151a942e92335e603092cc4a2819fc9d623256 Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Wed, 10 Feb 2016 19:28:38 -0500 Subject: [PATCH 4/8] WIP - Include `ActionController::Base` modules --- app/controller/ember_cli/ember_controller.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controller/ember_cli/ember_controller.rb b/app/controller/ember_cli/ember_controller.rb index 2ad6fd8e..6f32e378 100644 --- a/app/controller/ember_cli/ember_controller.rb +++ b/app/controller/ember_cli/ember_controller.rb @@ -1,5 +1,9 @@ module EmberCli - class EmberController < ActionController::Base + class EmberController < ::ApplicationController + (::ActionController::Base::MODULES - ::ActionController::API::MODULES).each do |mod| + include mod + end + def index render layout: false end From 1ddec429e9bf274e2b3ebac36dd41a0fb30ef738 Mon Sep 17 00:00:00 2001 From: Sean Doyle Date: Fri, 22 Apr 2016 11:26:29 -0400 Subject: [PATCH 5/8] update to `5.0.0-beta3` --- Appraisals | 4 ++-- app/controller/ember_cli/ember_controller.rb | 11 +++++++---- gemfiles/{5.0.0.beta2.gemfile => 5.0.0.beta3.gemfile} | 2 +- spec/lib/ember_cli/app_spec.rb | 10 ++-------- 4 files changed, 12 insertions(+), 15 deletions(-) rename gemfiles/{5.0.0.beta2.gemfile => 5.0.0.beta3.gemfile} (95%) diff --git a/Appraisals b/Appraisals index c4b39a7c..851e7a50 100644 --- a/Appraisals +++ b/Appraisals @@ -10,8 +10,8 @@ appraise "4.2" do gem "rails", "~> 4.2.1" end -appraise "5.0.0.beta2" do - gem "rails", "5.0.0.beta2" +appraise "5.0.0.beta3" do + gem "rails", "5.0.0.beta3" end appraise "master" do diff --git a/app/controller/ember_cli/ember_controller.rb b/app/controller/ember_cli/ember_controller.rb index 6f32e378..ebf50bb7 100644 --- a/app/controller/ember_cli/ember_controller.rb +++ b/app/controller/ember_cli/ember_controller.rb @@ -1,9 +1,12 @@ module EmberCli class EmberController < ::ApplicationController - (::ActionController::Base::MODULES - ::ActionController::API::MODULES).each do |mod| - include mod - end - + # ( + # ::ActionController::Base::MODULES - + # ::ActionController::API::MODULES + # ).each do |mod| + # include mod + # end + # def index render layout: false end diff --git a/gemfiles/5.0.0.beta2.gemfile b/gemfiles/5.0.0.beta3.gemfile similarity index 95% rename from gemfiles/5.0.0.beta2.gemfile rename to gemfiles/5.0.0.beta3.gemfile index f3024ffe..efc0dfca 100644 --- a/gemfiles/5.0.0.beta2.gemfile +++ b/gemfiles/5.0.0.beta3.gemfile @@ -3,7 +3,7 @@ source "https://rubygems.org" gem "appraisal" -gem "rails", "5.0.0.beta2" +gem "rails", "5.0.0.beta3" gem "pry" group :development, :test do diff --git a/spec/lib/ember_cli/app_spec.rb b/spec/lib/ember_cli/app_spec.rb index a0d7479d..909fd6e0 100644 --- a/spec/lib/ember_cli/app_spec.rb +++ b/spec/lib/ember_cli/app_spec.rb @@ -27,7 +27,7 @@ describe "#compile" do it "exits with exit status of 0" do - passed = silence_stdout { EmberCli["my-app"].compile } + passed = EmberCli["my-app"].compile expect(passed).to be true end @@ -35,7 +35,7 @@ describe "#test" do it "exits with exit status of 0" do - passed = silence_stdout { EmberCli["my-app"].test } + passed = EmberCli["my-app"].test expect(passed).to be true end @@ -65,12 +65,6 @@ end end - def silence_stdout - silence_stream($stdout) do - yield - end - end - def stub_paths(method_to_value) allow_any_instance_of(EmberCli::PathSet). to receive(method_to_value.keys.first). From aba76ab9b28da5415fb1aa24df5bdbf0af1d2274 Mon Sep 17 00:00:00 2001 From: Alex Willemsma Date: Mon, 27 Jun 2016 19:53:04 -0400 Subject: [PATCH 6/8] Include helper & extra modules when using API. Adds logic to conditionally load extra controller modules and manually include the EmberCLI helper when inheriting from an ApplicationController that inherits from ActionController::API instead of ActionController::Base. --- app/controller/ember_cli/ember_controller.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controller/ember_cli/ember_controller.rb b/app/controller/ember_cli/ember_controller.rb index ebf50bb7..8a222101 100644 --- a/app/controller/ember_cli/ember_controller.rb +++ b/app/controller/ember_cli/ember_controller.rb @@ -1,11 +1,15 @@ module EmberCli class EmberController < ::ApplicationController - # ( - # ::ActionController::Base::MODULES - - # ::ActionController::API::MODULES - # ).each do |mod| - # include mod - # end + unless self.ancestors.include? ActionController::Base + ( + ::ActionController::Base::MODULES - + ::ActionController::API::MODULES + ).each do |mod| + include mod + end + + helper EmberRailsHelper + end # def index render layout: false From dda466d86b5bab6b0fcc0f07f67ce81f8428d136 Mon Sep 17 00:00:00 2001 From: Alex Willemsma Date: Mon, 27 Jun 2016 20:08:30 -0400 Subject: [PATCH 7/8] Remove redundant `self`. --- app/controller/ember_cli/ember_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controller/ember_cli/ember_controller.rb b/app/controller/ember_cli/ember_controller.rb index 8a222101..8d3a63f5 100644 --- a/app/controller/ember_cli/ember_controller.rb +++ b/app/controller/ember_cli/ember_controller.rb @@ -1,6 +1,6 @@ module EmberCli class EmberController < ::ApplicationController - unless self.ancestors.include? ActionController::Base + unless ancestors.include? ActionController::Base ( ::ActionController::Base::MODULES - ::ActionController::API::MODULES From 5ec08dfb59b63853776d234cd3bda902c3363e92 Mon Sep 17 00:00:00 2001 From: Alex Willemsma Date: Sat, 2 Jul 2016 09:17:07 -0400 Subject: [PATCH 8/8] Update railties dependency to support Rails 5 release. --- ember-cli-rails.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ember-cli-rails.gemspec b/ember-cli-rails.gemspec index b70040ec..31a4cab4 100644 --- a/ember-cli-rails.gemspec +++ b/ember-cli-rails.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |spec| spec.required_ruby_version = ">= 2.1.0" spec.add_dependency "ember-cli-rails-assets", "~> 0.6.2" - spec.add_dependency "railties", ">= 3.2", "< 5" + spec.add_dependency "railties", ">= 3.2", "< 5.1" spec.add_dependency "cocaine", "~> 0.5.8" spec.add_dependency "html_page", "~> 0.1.0" end