when upgrading from Rails 3.2 to 4.0 I encountered an issue trying to run the app:
/var/lib/gems/1.9.1/gems/actionpack-4.0.13/lib/action_dispatch/middleware/stack.rb:107:in `delete': can't modify frozen Array (RuntimeError)
from /var/lib/gems/1.9.1/gems/actionpack-4.0.13/lib/action_dispatch/middleware/stack.rb:107:in `delete'
from /var/lib/gems/1.9.1/gems/sass-rails-4.0.5/lib/sass/rails/railtie.rb:33:in `block in <class:Railtie>'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/lazy_load_hooks.rb:36:in `call'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/lazy_load_hooks.rb:44:in `each'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/application/finisher.rb:62:in `block in <module:Finisher>'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/initializable.rb:30:in `instance_exec'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/initializable.rb:30:in `run'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/initializable.rb:55:in `block in run_initializers'
from /usr/lib/ruby/1.9.1/tsort.rb:150:in `block in tsort_each'
from /usr/lib/ruby/1.9.1/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
from /usr/lib/ruby/1.9.1/tsort.rb:219:in `each_strongly_connected_component_from'
from /usr/lib/ruby/1.9.1/tsort.rb:182:in `block in each_strongly_connected_component'
from /usr/lib/ruby/1.9.1/tsort.rb:180:in `each'
from /usr/lib/ruby/1.9.1/tsort.rb:180:in `each_strongly_connected_component'
from /usr/lib/ruby/1.9.1/tsort.rb:148:in `tsort_each'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/initializable.rb:54:in `run_initializers'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/application.rb:215:in `initialize!'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /vagrant/config/environment.rb:5:in `<top (required)>'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:229:in `require'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:229:in `block in require'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:214:in `load_dependency'
from /var/lib/gems/1.9.1/gems/activesupport-4.0.13/lib/active_support/dependencies.rb:229:in `require'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/application.rb:189:in `require_environment!'
from /var/lib/gems/1.9.1/gems/railties-4.0.13/lib/rails/commands.rb:61:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
Solution
The stack trace points to a potential issue with the sass-rails gem and according to https://github.com/rails/sass-rails/issues/136 it seems that it's due to a change in the way Rails now prevents you from affecting the middleware stack in an after_initialize block.
According to the comments, upgrading to html 4.0 may resolve the issue, but that didn't work in my case (either explicitly 4.0.0 or, the latest version, 4.0.6).
The solution that did work was to add an initializer which does what the failing code is trying to do. I created a file called `config/initializers/fix_sass_rails.rb which contains:
Rails.application.config.middleware.delete Sass::Plugin::Rack