hocus_pocus 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/engines/command_line/app/controllers/hocus_pocus/command_line/command_line_controller.rb +12 -0
- data/{app/views/hocus_pocus/generator → engines/command_line/app/views/hocus_pocus/command_line/command_line}/execute.js.erb +0 -0
- data/engines/command_line/config/routes.rb +3 -0
- data/engines/command_line/lib/hocus_pocus/command_line/engine.rb +15 -0
- data/engines/command_line/lib/hocus_pocus/command_line/middleware.rb +26 -0
- data/engines/command_line/lib/hocus_pocus/command_line/railtie.rb +17 -0
- data/engines/editor/app/controllers/hocus_pocus/editor/editor_controller.rb +21 -0
- data/{app/views/hocus_pocus → engines/editor/app/views/hocus_pocus/editor}/editor/_editor.html.erb +1 -1
- data/{app/views/hocus_pocus → engines/editor/app/views/hocus_pocus/editor}/editor/index.js.erb +0 -0
- data/{app/views/hocus_pocus → engines/editor/app/views/hocus_pocus/editor}/editor/save.js.erb +0 -0
- data/engines/editor/config/routes.rb +4 -0
- data/engines/editor/lib/hocus_pocus/editor/engine.rb +15 -0
- data/engines/editor/lib/hocus_pocus/editor/middleware.rb +33 -0
- data/engines/editor/lib/hocus_pocus/editor/railtie.rb +43 -0
- data/engines/generator/app/controllers/hocus_pocus/generator/generator_controller.rb +60 -0
- data/engines/generator/app/helpers/hocus_pocus/generator/generator_helper.rb +9 -0
- data/{app/views/hocus_pocus → engines/generator/app/views/hocus_pocus/generator}/generator/index.html.erb +3 -3
- data/{app/views/hocus_pocus → engines/generator/app/views/hocus_pocus/generator}/generator/scaffold.js.erb +0 -0
- data/engines/generator/config/routes.rb +5 -0
- data/engines/generator/lib/hocus_pocus/generator/engine.rb +7 -0
- data/engines/generator/lib/hocus_pocus/generator/railtie.rb +34 -0
- data/engines/recorder/app/controllers/hocus_pocus/recorder/recorder_controller.rb +15 -0
- data/{app/views/hocus_pocus/spec → engines/recorder/app/views/hocus_pocus/recorder/recorder}/destroy.js.erb +0 -0
- data/engines/recorder/app/views/hocus_pocus/recorder/recorder/index.js.erb +1 -0
- data/engines/recorder/config/routes.rb +4 -0
- data/engines/recorder/lib/assets/javascripts/recorder.js.coffee.erb +10 -0
- data/engines/recorder/lib/hocus_pocus/recorder/engine.rb +15 -0
- data/engines/recorder/lib/hocus_pocus/recorder/filter.rb +11 -0
- data/engines/recorder/lib/hocus_pocus/recorder/middleware.rb +32 -0
- data/engines/recorder/lib/hocus_pocus/recorder/railtie.rb +27 -0
- data/hocus_pocus.gemspec +1 -1
- data/lib/generators/hocus_pocus/config_generator.rb +1 -1
- data/lib/hocus_pocus.rb +1 -1
- data/lib/hocus_pocus/engine.rb +6 -3
- data/lib/hocus_pocus/middleware.rb +19 -0
- data/lib/hocus_pocus/middleware_util.rb +17 -0
- data/lib/hocus_pocus/railtie.rb +7 -44
- data/lib/hocus_pocus/version.rb +1 -1
- metadata +43 -22
- data/app/controllers/hocus_pocus/application_controller.rb +0 -4
- data/app/controllers/hocus_pocus/editor_controller.rb +0 -19
- data/app/controllers/hocus_pocus/generator_controller.rb +0 -47
- data/app/controllers/hocus_pocus/spec_controller.rb +0 -8
- data/app/helpers/hocus_pocus/application_helper.rb +0 -4
- data/app/helpers/hocus_pocus/generator_helper.rb +0 -7
- data/config/routes.rb +0 -16
- data/lib/hocus_pocus/filter.rb +0 -102
- data/vendor/assets/javascripts/jquery_ujs.js +0 -289
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            module HocusPocus
         | 
| 2 | 
            +
              module CommandLine
         | 
| 3 | 
            +
                class CommandLineController < ActionController::Base
         | 
| 4 | 
            +
                  # XHR
         | 
| 5 | 
            +
                  def execute
         | 
| 6 | 
            +
                    #FIXME validate params
         | 
| 7 | 
            +
                    `#{params[:command]}`
         | 
| 8 | 
            +
                    flash.now[:notice] = "successfully executed: #{params[:command]}"
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require 'hocus_pocus/command_line/middleware'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module CommandLine
         | 
| 5 | 
            +
                class Engine < ::Rails::Engine
         | 
| 6 | 
            +
                  isolate_namespace HocusPocus::CommandLine
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  initializer 'hocus_pocus.command_line.add middleware' do |app|
         | 
| 9 | 
            +
                    if HocusPocus.config.enable_command_line
         | 
| 10 | 
            +
                      app.middleware.insert HocusPocus::Middleware, HocusPocus::CommandLine::Middleware
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            require 'hocus_pocus/middleware_util'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module CommandLine
         | 
| 5 | 
            +
                class Middleware
         | 
| 6 | 
            +
                  include MiddlewareUtil
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def initialize(app)
         | 
| 9 | 
            +
                    @app = app
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def call(env)
         | 
| 13 | 
            +
                    @app.call(env).tap do |status, headers, body|
         | 
| 14 | 
            +
                      if body.is_a?(ActionDispatch::Response) && body.request.format.html?
         | 
| 15 | 
            +
                        body.body = insert_text body.body, :after, /<div id="#{HocusPocus::CONTAINER}" .*?>/i, command_line_link
         | 
| 16 | 
            +
                      end
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  private
         | 
| 21 | 
            +
                  def command_line_link
         | 
| 22 | 
            +
                    %Q[<a href="#" onclick="$(this).closest('div').find('div.command_line_form').toggle()">cmd</a><div class="command_line_form" style="display:none;"><form method="post" action="/hocus_pocus/command_line/execute" data-remote="true"><input type="text" name="command" placeholder="Command?" style="width: 512px;" /><input type="submit" name="run" /></form></div>]
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            require 'hocus_pocus/command_line/engine'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module CommandLine
         | 
| 5 | 
            +
                class Railtie < ::Rails::Railtie #:nodoc:
         | 
| 6 | 
            +
                  initializer 'hocus_pocus.command_line' do |app|
         | 
| 7 | 
            +
                    ActiveSupport.on_load(:after_initialize) do
         | 
| 8 | 
            +
                      if HocusPocus.config.enable_command_line
         | 
| 9 | 
            +
                        Rails.application.routes.append do
         | 
| 10 | 
            +
                          mount HocusPocus::CommandLine::Engine, :at => '/hocus_pocus/command_line'
         | 
| 11 | 
            +
                        end
         | 
| 12 | 
            +
                      end
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            module HocusPocus
         | 
| 2 | 
            +
              module Editor
         | 
| 3 | 
            +
                class EditorController < ActionController::Base
         | 
| 4 | 
            +
                  # XHR
         | 
| 5 | 
            +
                  def index
         | 
| 6 | 
            +
                    #FIXME haml
         | 
| 7 | 
            +
                    @path = "#{Rails.application.root}/app/views/#{params[:template]}.html.erb"
         | 
| 8 | 
            +
                    @file = File.read @path
         | 
| 9 | 
            +
                    #FIXME extract partials
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  # XHR
         | 
| 13 | 
            +
                  def save
         | 
| 14 | 
            +
                    @file = File.open(params[:path], 'w') do |f|
         | 
| 15 | 
            +
                      f.puts params[:file]
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
              #       redirect_to "#{params[:uri]}", :notice => "successfully edited #{params[:path]} file!"
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
    
        data/{app/views/hocus_pocus → engines/editor/app/views/hocus_pocus/editor}/editor/_editor.html.erb
    RENAMED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            <div id="__editor__">
         | 
| 2 2 | 
             
              <h3>editing <%= @path %>...</h3>
         | 
| 3 3 |  | 
| 4 | 
            -
              <%= form_tag save_editor_path, :remote => true, :id => HocusPocus::EDITOR do %>
         | 
| 4 | 
            +
              <%= form_tag save_editor_path, :remote => true, :id => HocusPocus::Editor::EDITOR do %>
         | 
| 5 5 | 
             
                <%= hidden_field_tag :path, @path %>
         | 
| 6 6 | 
             
                <%= text_area_tag :file, @file, :size => '100x30' %>
         | 
| 7 7 | 
             
                <div align="right">
         | 
    
        data/{app/views/hocus_pocus → engines/editor/app/views/hocus_pocus/editor}/editor/index.js.erb
    RENAMED
    
    | 
            File without changes
         | 
    
        data/{app/views/hocus_pocus → engines/editor/app/views/hocus_pocus/editor}/editor/save.js.erb
    RENAMED
    
    | 
            File without changes
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require 'hocus_pocus/editor/middleware'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module Editor
         | 
| 5 | 
            +
                class Engine < ::Rails::Engine
         | 
| 6 | 
            +
                  isolate_namespace HocusPocus::Editor
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  initializer 'hocus_pocus.editor.add middleware' do |app|
         | 
| 9 | 
            +
                    if HocusPocus.config.enable_editor
         | 
| 10 | 
            +
                      app.middleware.insert HocusPocus::Middleware, HocusPocus::Editor::Middleware
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            require 'hocus_pocus/middleware_util'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module Editor
         | 
| 5 | 
            +
                class Middleware
         | 
| 6 | 
            +
                  include MiddlewareUtil
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def initialize(app)
         | 
| 9 | 
            +
                    @app = app
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def call(env)
         | 
| 13 | 
            +
                    @app.call(env).tap do |status, headers, body|
         | 
| 14 | 
            +
                      if body.is_a?(ActionDispatch::Response) && body.request.format.html?
         | 
| 15 | 
            +
                        if Thread.current[HocusPocus::Editor::VIEW_FILENAME]
         | 
| 16 | 
            +
                          body.body = insert_text body.body, :after, /<div id="#{HocusPocus::CONTAINER}" .*?>/i, %Q[#{edit_link}<br>#{partials}]
         | 
| 17 | 
            +
                          Thread.current[HocusPocus::Editor::VIEW_FILENAME] = nil
         | 
| 18 | 
            +
                        end
         | 
| 19 | 
            +
                      end
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  private
         | 
| 24 | 
            +
                  def edit_link
         | 
| 25 | 
            +
                    %Q[<a href="/hocus_pocus/editor?template=#{Thread.current[HocusPocus::Editor::VIEW_FILENAME]}" data-remote="true" onclick="$(this).closest('div').find('div.partials').toggle()">edit</a>]
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  def partials
         | 
| 29 | 
            +
                    %Q[<div class="partials" style="display:none">#{(Thread.current[HocusPocus::Editor::PARTIAL_FILENAMES] || []).map(&:virtual_path).map {|v| '<a href="/hocus_pocus/editor?template=' + v + '" data-remote="true">' + v + '</a>'}.join('<br>')}</div>]
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| @@ -0,0 +1,43 @@ | |
| 1 | 
            +
            require 'hocus_pocus/editor/engine'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module Editor
         | 
| 5 | 
            +
                EDITOR = :__hocus_pocus_editor__
         | 
| 6 | 
            +
                VIEW_FILENAME = :__hocus_pocus_view_filename__
         | 
| 7 | 
            +
                PARTIAL_FILENAMES = :__hocus_pocus_partial_filenames__
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                class Railtie < ::Rails::Railtie #:nodoc:
         | 
| 10 | 
            +
                  initializer 'hocus_pocus.editor' do |app|
         | 
| 11 | 
            +
                    ActiveSupport.on_load(:after_initialize) do
         | 
| 12 | 
            +
                      if HocusPocus.config.enable_editor
         | 
| 13 | 
            +
                        Rails.application.routes.append do
         | 
| 14 | 
            +
                          mount HocusPocus::Editor::Engine, :at => '/hocus_pocus/editor'
         | 
| 15 | 
            +
                        end
         | 
| 16 | 
            +
                      end
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    ActiveSupport.on_load(:action_view) do
         | 
| 20 | 
            +
                      if HocusPocus.config.enable_editor
         | 
| 21 | 
            +
                        module ::ActionView
         | 
| 22 | 
            +
                          class PartialRenderer
         | 
| 23 | 
            +
                            def render_partial_with_filename_caching
         | 
| 24 | 
            +
                              (Thread.current[HocusPocus::Editor::PARTIAL_FILENAMES] ||= []) << @template unless @view.controller.class.name.starts_with?('HocusPocus::')
         | 
| 25 | 
            +
                              render_partial_without_filename_caching
         | 
| 26 | 
            +
                            end
         | 
| 27 | 
            +
                            alias_method_chain :render_partial, :filename_caching
         | 
| 28 | 
            +
                          end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                          class TemplateRenderer
         | 
| 31 | 
            +
                            def render_template_with_filename_caching(template, layout_name = nil, locals = {})
         | 
| 32 | 
            +
                              Thread.current[HocusPocus::Editor::VIEW_FILENAME] = template.virtual_path if @view.controller.try(:request).try(:format).try(:html?) && !@view.controller.class.name.starts_with?('HocusPocus::')
         | 
| 33 | 
            +
                              render_template_without_filename_caching template, layout_name, locals
         | 
| 34 | 
            +
                            end
         | 
| 35 | 
            +
                            alias_method_chain :render_template, :filename_caching
         | 
| 36 | 
            +
                          end
         | 
| 37 | 
            +
                        end
         | 
| 38 | 
            +
                      end
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
            end
         | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            require 'rails/generators'
         | 
| 2 | 
            +
            require 'active_record/schema_dumper'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module HocusPocus
         | 
| 5 | 
            +
              module Generator
         | 
| 6 | 
            +
                class GeneratorController < ActionController::Base
         | 
| 7 | 
            +
                  def index
         | 
| 8 | 
            +
                    @name = params[:anything]
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  # XHR
         | 
| 12 | 
            +
                  def execute
         | 
| 13 | 
            +
                    #FIXME validate params
         | 
| 14 | 
            +
                    `#{params[:command]}`
         | 
| 15 | 
            +
                    flash.now[:notice] = "successfully executed: #{params[:command]}"
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  # XHR
         | 
| 19 | 
            +
                  def scaffold
         | 
| 20 | 
            +
                    #FIXME validate params
         | 
| 21 | 
            +
                    p options = params[:attr].select {|_k, v| v.present?}.map {|k, v| "#{v}:#{params[:type][k]}"}
         | 
| 22 | 
            +
                    execute_scaffold params[:name].dup, options
         | 
| 23 | 
            +
                    migrate
         | 
| 24 | 
            +
                    #FIXME notice doesn't appear?
         | 
| 25 | 
            +
              #       @return_path = '/' + (params[:return_path].present? ? params[:return_path] : params[:name])
         | 
| 26 | 
            +
                    @return_path = '/' + params[:name]
         | 
| 27 | 
            +
                    flash.now[:notice] = "successfully generated #{params[:name]} scaffold!"
         | 
| 28 | 
            +
              #       redirect_to "/#{return_path}", :notice => "successfully generated #{params[:name]} scaffold!"
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  private
         | 
| 32 | 
            +
                  def execute_scaffold(name, options)
         | 
| 33 | 
            +
                    overwriting_argv([name, options]) do
         | 
| 34 | 
            +
                      cmd = name.include?('/') ? 'nested_scaffold' : 'scaffold'
         | 
| 35 | 
            +
                      Rails::Generators.configure! Rails.application.config.generators
         | 
| 36 | 
            +
                      Rails::Generators.invoke cmd, [name, options], :behavior => :invoke, :destination_root => Rails.root
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  # `rake db:migrate`
         | 
| 41 | 
            +
                  def migrate
         | 
| 42 | 
            +
                    ActiveRecord::Migrator.migrate(ActiveRecord::Migrator.migrations_path, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
         | 
| 43 | 
            +
                    if ActiveRecord::Base.schema_format == :ruby
         | 
| 44 | 
            +
                      File.open(ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb", "w") do |file|
         | 
| 45 | 
            +
                        ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
         | 
| 46 | 
            +
                      end
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  # a dirty workaround to make rspec-rails run
         | 
| 51 | 
            +
                  def overwriting_argv(value, &block)
         | 
| 52 | 
            +
                    original_argv = ARGV
         | 
| 53 | 
            +
                    Object.const_set :ARGV, value
         | 
| 54 | 
            +
                    block.call
         | 
| 55 | 
            +
                  ensure
         | 
| 56 | 
            +
                    Object.const_set :ARGV, original_argv
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
            end
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            <html>
         | 
| 2 2 | 
             
              <head>
         | 
| 3 3 | 
             
                <title>generator</title>
         | 
| 4 | 
            -
                 | 
| 5 | 
            -
                 | 
| 4 | 
            +
                <%= javascript_include_tag 'application' %>
         | 
| 5 | 
            +
                <%= csrf_meta_tags %>
         | 
| 6 6 | 
             
                <script type="text/javascript">
         | 
| 7 7 | 
             
                  $('#add_attr_type').live('click', function() {
         | 
| 8 8 | 
             
                      var i = $('#attr_type input').length;
         | 
| @@ -13,7 +13,7 @@ | |
| 13 13 | 
             
              </head>
         | 
| 14 14 | 
             
              <body>
         | 
| 15 15 | 
             
                <h1>generate scaffold</h1>
         | 
| 16 | 
            -
                <%= form_tag scaffold_generator_path, :remote => true | 
| 16 | 
            +
                <%= form_tag scaffold_generator_path, :remote => true do %>
         | 
| 17 17 | 
             
                  <% if @name.include? '_' %>
         | 
| 18 18 | 
             
                    g scaffold
         | 
| 19 19 | 
             
                    <%= select_tag :name, options_for_select([@name, @name.gsub('_', '/')]) %>
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            require 'hocus_pocus/generator/engine'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module Generator
         | 
| 5 | 
            +
                class Railtie < ::Rails::Railtie #:nodoc:
         | 
| 6 | 
            +
                  initializer 'hocus_pocus.generator' do |app|
         | 
| 7 | 
            +
                    ActiveSupport.on_load(:after_initialize) do
         | 
| 8 | 
            +
                      if HocusPocus.config.enable_generator
         | 
| 9 | 
            +
                        Rails.application.routes.append do
         | 
| 10 | 
            +
                          mount HocusPocus::Generator::Engine, :at => '/'
         | 
| 11 | 
            +
                        end
         | 
| 12 | 
            +
                      end
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    ActiveSupport.on_load(:action_view) do
         | 
| 16 | 
            +
                      if HocusPocus.config.enable_generator
         | 
| 17 | 
            +
                        class ::ActionView::Base
         | 
| 18 | 
            +
                          def method_missing(method, args = {}, &blk)
         | 
| 19 | 
            +
                            if method.to_s =~ /(new_|edit_)?(.*)(_path|_url)\z/
         | 
| 20 | 
            +
                              # to avoid DoubleRenderError
         | 
| 21 | 
            +
                              controller.instance_variable_set :@_response_body, nil
         | 
| 22 | 
            +
                              #FIXME preserve args
         | 
| 23 | 
            +
                              controller.redirect_to "/#{$2.pluralize}?return_path=#{method}(#{args})"
         | 
| 24 | 
            +
                            else
         | 
| 25 | 
            +
                              super
         | 
| 26 | 
            +
                            end
         | 
| 27 | 
            +
                          end
         | 
| 28 | 
            +
                        end
         | 
| 29 | 
            +
                      end
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
| 
            File without changes
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            $('#<%= HocusPocus::CONTAINER %> div.spec').toggle().html('<pre><%= escape_javascript(flash[HocusPocus::Recorder::SPEC]) + '\n  end' if flash[HocusPocus::Recorder::SPEC] %></pre><div align="right"><a href="/hocus_pocus/recorder" data-remote="true" data-method="delete">Clear</a></div></div>')
         | 
| @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            $('form').live 'submit', ->
         | 
| 2 | 
            +
              scenario = ["  scenario 'GENERATED' do"]
         | 
| 3 | 
            +
              scenario.push "    visit '#{window.location.pathname}'"
         | 
| 4 | 
            +
              $(this).find('input[type=text],input[type=email],input[type=url],input[type=number],input[type=search],textarea').each ->
         | 
| 5 | 
            +
                scenario.push "    fill_in '#{$(this).attr('id')}', :with => '#{$(this).val()}'"
         | 
| 6 | 
            +
              $(this).find('select').each ->
         | 
| 7 | 
            +
                scenario.push "    select '#{$(this).children(':selected').text()}', :from => '#{$(this).attr('id')}'"
         | 
| 8 | 
            +
              scenario.push "    click_button '#{$(this).find('input[type=submit]').val()}'"
         | 
| 9 | 
            +
              $(this).append '<textarea id="<%= HocusPocus::Recorder::SPEC %>" name="<%= HocusPocus::Recorder::SPEC %>" style="height: 0px; width: 0px;" />'
         | 
| 10 | 
            +
              $('#<%= HocusPocus::Recorder::SPEC %>').val(scenario.join('\n'))
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require 'hocus_pocus/recorder/middleware'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module HocusPocus
         | 
| 4 | 
            +
              module Recorder
         | 
| 5 | 
            +
                class Engine < ::Rails::Engine
         | 
| 6 | 
            +
                  isolate_namespace HocusPocus::Recorder
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  initializer 'hocus_pocus.recorder.add middleware' do |app|
         | 
| 9 | 
            +
                    if HocusPocus.config.enable_scenario_recorder
         | 
| 10 | 
            +
                      app.middleware.insert HocusPocus::Middleware, HocusPocus::Recorder::Middleware
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            module HocusPocus
         | 
| 2 | 
            +
              module Recorder
         | 
| 3 | 
            +
                class Filter
         | 
| 4 | 
            +
                  def self.before(controller)
         | 
| 5 | 
            +
            #         (controller.flash[HocusPocus::Recorder::SPEC] ||= '') << controller.params.delete(HocusPocus::Recorder::SPEC) if controller.params[HocusPocus::Recorder::SPEC]
         | 
| 6 | 
            +
                    controller.flash[HocusPocus::Recorder::SPEC] = controller.params.delete HocusPocus::Recorder::SPEC if controller.params[HocusPocus::Recorder::SPEC]
         | 
| 7 | 
            +
                    controller.flash.keep HocusPocus::Recorder::SPEC
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
            end
         |