Incremental Redesign with Rails

2013年7月31日 17:15

重构前

<%- if current_user.redesign_enabled? %>
  <%# new code %>
<%- else %>
  <%# old code %>
<%- end %>

重构后

class ApplicationController < ActionController::Base
  before_filter :add_view_path_for_redesign

  private

  def add_view_path_for_redesign
    if current_user.redesign_enabled?
      prepend_view_path Rails.root.join('app/views/redesign')
    end
  end
end
# original
app/views/users/edit.html.erb
app/views/users/show.html.erb

# redesign
app/views/redesign/users/edit.html.erb
app/views/redesign/users/show.html.erb