rails 4.2.11.3 → 5.0.0.beta1
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.
- checksums.yaml +5 -5
 - data/README.md +11 -7
 - metadata +38 -237
 - data/guides/CHANGELOG.md +0 -113
 - data/guides/Rakefile +0 -92
 - data/guides/assets/images/akshaysurve.jpg +0 -0
 - data/guides/assets/images/belongs_to.png +0 -0
 - data/guides/assets/images/book_icon.gif +0 -0
 - data/guides/assets/images/bullet.gif +0 -0
 - data/guides/assets/images/chapters_icon.gif +0 -0
 - data/guides/assets/images/check_bullet.gif +0 -0
 - data/guides/assets/images/credits_pic_blank.gif +0 -0
 - data/guides/assets/images/csrf.png +0 -0
 - data/guides/assets/images/edge_badge.png +0 -0
 - data/guides/assets/images/favicon.ico +0 -0
 - data/guides/assets/images/feature_tile.gif +0 -0
 - data/guides/assets/images/footer_tile.gif +0 -0
 - data/guides/assets/images/fxn.png +0 -0
 - data/guides/assets/images/getting_started/article_with_comments.png +0 -0
 - data/guides/assets/images/getting_started/challenge.png +0 -0
 - data/guides/assets/images/getting_started/confirm_dialog.png +0 -0
 - data/guides/assets/images/getting_started/forbidden_attributes_for_new_article.png +0 -0
 - data/guides/assets/images/getting_started/form_with_errors.png +0 -0
 - data/guides/assets/images/getting_started/index_action_with_edit_link.png +0 -0
 - data/guides/assets/images/getting_started/new_article.png +0 -0
 - data/guides/assets/images/getting_started/rails_welcome.png +0 -0
 - data/guides/assets/images/getting_started/routing_error_no_controller.png +0 -0
 - data/guides/assets/images/getting_started/routing_error_no_route_matches.png +0 -0
 - data/guides/assets/images/getting_started/show_action_for_articles.png +0 -0
 - data/guides/assets/images/getting_started/template_is_missing_articles_new.png +0 -0
 - data/guides/assets/images/getting_started/unknown_action_create_for_articles.png +0 -0
 - data/guides/assets/images/getting_started/unknown_action_new_for_articles.png +0 -0
 - data/guides/assets/images/grey_bullet.gif +0 -0
 - data/guides/assets/images/habtm.png +0 -0
 - data/guides/assets/images/has_many.png +0 -0
 - data/guides/assets/images/has_many_through.png +0 -0
 - data/guides/assets/images/has_one.png +0 -0
 - data/guides/assets/images/has_one_through.png +0 -0
 - data/guides/assets/images/header_backdrop.png +0 -0
 - data/guides/assets/images/header_tile.gif +0 -0
 - data/guides/assets/images/i18n/demo_html_safe.png +0 -0
 - data/guides/assets/images/i18n/demo_localized_pirate.png +0 -0
 - data/guides/assets/images/i18n/demo_translated_en.png +0 -0
 - data/guides/assets/images/i18n/demo_translated_pirate.png +0 -0
 - data/guides/assets/images/i18n/demo_translation_missing.png +0 -0
 - data/guides/assets/images/i18n/demo_untranslated.png +0 -0
 - data/guides/assets/images/icons/README +0 -5
 - data/guides/assets/images/icons/callouts/1.png +0 -0
 - data/guides/assets/images/icons/callouts/10.png +0 -0
 - data/guides/assets/images/icons/callouts/11.png +0 -0
 - data/guides/assets/images/icons/callouts/12.png +0 -0
 - data/guides/assets/images/icons/callouts/13.png +0 -0
 - data/guides/assets/images/icons/callouts/14.png +0 -0
 - data/guides/assets/images/icons/callouts/15.png +0 -0
 - data/guides/assets/images/icons/callouts/2.png +0 -0
 - data/guides/assets/images/icons/callouts/3.png +0 -0
 - data/guides/assets/images/icons/callouts/4.png +0 -0
 - data/guides/assets/images/icons/callouts/5.png +0 -0
 - data/guides/assets/images/icons/callouts/6.png +0 -0
 - data/guides/assets/images/icons/callouts/7.png +0 -0
 - data/guides/assets/images/icons/callouts/8.png +0 -0
 - data/guides/assets/images/icons/callouts/9.png +0 -0
 - data/guides/assets/images/icons/caution.png +0 -0
 - data/guides/assets/images/icons/example.png +0 -0
 - data/guides/assets/images/icons/home.png +0 -0
 - data/guides/assets/images/icons/important.png +0 -0
 - data/guides/assets/images/icons/next.png +0 -0
 - data/guides/assets/images/icons/note.png +0 -0
 - data/guides/assets/images/icons/prev.png +0 -0
 - data/guides/assets/images/icons/tip.png +0 -0
 - data/guides/assets/images/icons/up.png +0 -0
 - data/guides/assets/images/icons/warning.png +0 -0
 - data/guides/assets/images/nav_arrow.gif +0 -0
 - data/guides/assets/images/oscardelben.jpg +0 -0
 - data/guides/assets/images/polymorphic.png +0 -0
 - data/guides/assets/images/radar.png +0 -0
 - data/guides/assets/images/rails4_features.png +0 -0
 - data/guides/assets/images/rails_guides_kindle_cover.jpg +0 -0
 - data/guides/assets/images/rails_guides_logo.gif +0 -0
 - data/guides/assets/images/rails_logo_remix.gif +0 -0
 - data/guides/assets/images/session_fixation.png +0 -0
 - data/guides/assets/images/tab_grey.gif +0 -0
 - data/guides/assets/images/tab_info.gif +0 -0
 - data/guides/assets/images/tab_note.gif +0 -0
 - data/guides/assets/images/tab_red.gif +0 -0
 - data/guides/assets/images/tab_yellow.gif +0 -0
 - data/guides/assets/images/tab_yellow.png +0 -0
 - data/guides/assets/images/vijaydev.jpg +0 -0
 - data/guides/assets/javascripts/guides.js +0 -59
 - data/guides/assets/javascripts/jquery.min.js +0 -4
 - data/guides/assets/javascripts/responsive-tables.js +0 -43
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +0 -59
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +0 -75
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +0 -59
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +0 -65
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +0 -100
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +0 -97
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +0 -91
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +0 -55
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +0 -41
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +0 -52
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +0 -67
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +0 -52
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +0 -57
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +0 -58
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +0 -72
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +0 -88
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +0 -33
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +0 -74
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +0 -64
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +0 -55
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +0 -94
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +0 -51
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +0 -66
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +0 -56
 - data/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +0 -69
 - data/guides/assets/javascripts/syntaxhighlighter/shCore.js +0 -17
 - data/guides/assets/stylesheets/fixes.css +0 -16
 - data/guides/assets/stylesheets/kindle.css +0 -11
 - data/guides/assets/stylesheets/main.css +0 -713
 - data/guides/assets/stylesheets/print.css +0 -52
 - data/guides/assets/stylesheets/reset.css +0 -43
 - data/guides/assets/stylesheets/responsive-tables.css +0 -50
 - data/guides/assets/stylesheets/style.css +0 -13
 - data/guides/assets/stylesheets/syntaxhighlighter/shCore.css +0 -226
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +0 -328
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +0 -331
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +0 -339
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +0 -324
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +0 -328
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +0 -324
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +0 -324
 - data/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +0 -324
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +0 -117
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +0 -120
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +0 -128
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +0 -113
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +0 -117
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +0 -113
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +0 -113
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +0 -113
 - data/guides/assets/stylesheets/syntaxhighlighter/shThemeRailsGuides.css +0 -116
 - data/guides/bug_report_templates/action_controller_gem.rb +0 -47
 - data/guides/bug_report_templates/action_controller_master.rb +0 -54
 - data/guides/bug_report_templates/active_record_gem.rb +0 -40
 - data/guides/bug_report_templates/active_record_master.rb +0 -49
 - data/guides/bug_report_templates/generic_gem.rb +0 -15
 - data/guides/bug_report_templates/generic_master.rb +0 -26
 - data/guides/rails_guides.rb +0 -63
 - data/guides/rails_guides/generator.rb +0 -248
 - data/guides/rails_guides/helpers.rb +0 -53
 - data/guides/rails_guides/indexer.rb +0 -68
 - data/guides/rails_guides/kindle.rb +0 -119
 - data/guides/rails_guides/levenshtein.rb +0 -37
 - data/guides/rails_guides/markdown.rb +0 -167
 - data/guides/rails_guides/markdown/renderer.rb +0 -82
 - data/guides/source/2_2_release_notes.md +0 -435
 - data/guides/source/2_3_release_notes.md +0 -621
 - data/guides/source/3_0_release_notes.md +0 -611
 - data/guides/source/3_1_release_notes.md +0 -559
 - data/guides/source/3_2_release_notes.md +0 -568
 - data/guides/source/4_0_release_notes.md +0 -279
 - data/guides/source/4_1_release_notes.md +0 -730
 - data/guides/source/4_2_release_notes.md +0 -877
 - data/guides/source/_license.html.erb +0 -2
 - data/guides/source/_welcome.html.erb +0 -23
 - data/guides/source/action_controller_overview.md +0 -1192
 - data/guides/source/action_mailer_basics.md +0 -757
 - data/guides/source/action_view_overview.md +0 -1561
 - data/guides/source/active_job_basics.md +0 -339
 - data/guides/source/active_model_basics.md +0 -554
 - data/guides/source/active_record_basics.md +0 -374
 - data/guides/source/active_record_callbacks.md +0 -413
 - data/guides/source/active_record_migrations.md +0 -1018
 - data/guides/source/active_record_postgresql.md +0 -433
 - data/guides/source/active_record_querying.md +0 -1781
 - data/guides/source/active_record_validations.md +0 -1179
 - data/guides/source/active_support_core_extensions.md +0 -3856
 - data/guides/source/active_support_instrumentation.md +0 -488
 - data/guides/source/api_documentation_guidelines.md +0 -361
 - data/guides/source/asset_pipeline.md +0 -1304
 - data/guides/source/association_basics.md +0 -2245
 - data/guides/source/autoloading_and_reloading_constants.md +0 -1311
 - data/guides/source/caching_with_rails.md +0 -379
 - data/guides/source/command_line.md +0 -625
 - data/guides/source/configuring.md +0 -1070
 - data/guides/source/contributing_to_ruby_on_rails.md +0 -628
 - data/guides/source/credits.html.erb +0 -80
 - data/guides/source/debugging_rails_applications.md +0 -861
 - data/guides/source/development_dependencies_install.md +0 -289
 - data/guides/source/documents.yaml +0 -205
 - data/guides/source/engines.md +0 -1412
 - data/guides/source/form_helpers.md +0 -1024
 - data/guides/source/generators.md +0 -676
 - data/guides/source/getting_started.md +0 -2086
 - data/guides/source/i18n.md +0 -1087
 - data/guides/source/index.html.erb +0 -28
 - data/guides/source/initialization.md +0 -704
 - data/guides/source/kindle/copyright.html.erb +0 -1
 - data/guides/source/kindle/layout.html.erb +0 -27
 - data/guides/source/kindle/rails_guides.opf.erb +0 -52
 - data/guides/source/kindle/toc.html.erb +0 -24
 - data/guides/source/kindle/toc.ncx.erb +0 -64
 - data/guides/source/kindle/welcome.html.erb +0 -5
 - data/guides/source/layout.html.erb +0 -140
 - data/guides/source/layouts_and_rendering.md +0 -1226
 - data/guides/source/maintenance_policy.md +0 -78
 - data/guides/source/nested_model_forms.md +0 -228
 - data/guides/source/plugins.md +0 -444
 - data/guides/source/rails_application_templates.md +0 -266
 - data/guides/source/rails_on_rack.md +0 -335
 - data/guides/source/routing.md +0 -1155
 - data/guides/source/ruby_on_rails_guides_guidelines.md +0 -127
 - data/guides/source/security.md +0 -1024
 - data/guides/source/testing.md +0 -1132
 - data/guides/source/upgrading_ruby_on_rails.md +0 -1186
 - data/guides/source/working_with_javascript_in_rails.md +0 -407
 - data/guides/w3c_validator.rb +0 -97
 
| 
         @@ -1,488 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            Active Support Instrumentation
         
     | 
| 
       2 
     | 
    
         
            -
            ==============================
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            Active Support is a part of core Rails that provides Ruby language extensions, utilities and other things. One of the things it includes is an instrumentation API that can be used inside an application to measure certain actions that occur within Ruby code, such as that inside a Rails application or the framework itself. It is not limited to Rails, however. It can be used independently in other Ruby scripts if it is so desired.
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            In this guide, you will learn how to use the instrumentation API inside of Active Support to measure events inside of Rails and other Ruby code.
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            After reading this guide, you will know:
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            * What instrumentation can provide.
         
     | 
| 
       11 
     | 
    
         
            -
            * The hooks inside the Rails framework for instrumentation.
         
     | 
| 
       12 
     | 
    
         
            -
            * Adding a subscriber to a hook.
         
     | 
| 
       13 
     | 
    
         
            -
            * Building a custom instrumentation implementation.
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            --------------------------------------------------------------------------------
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            Introduction to instrumentation
         
     | 
| 
       18 
     | 
    
         
            -
            -------------------------------
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            The instrumentation API provided by Active Support allows developers to provide hooks which other developers may hook into. There are several of these within the Rails framework, as described below in (TODO: link to section detailing each hook point). With this API, developers can choose to be notified when certain events occur inside their application or another piece of Ruby code.
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            For example, there is a hook provided within Active Record that is called every time Active Record uses an SQL query on a database. This hook could be **subscribed** to, and used to track the number of queries during a certain action. There's another hook around the processing of an action of a controller. This could be used, for instance, to track how long a specific action has taken.
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            You are even able to create your own events inside your application which you can later subscribe to.
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            Rails framework hooks
         
     | 
| 
       27 
     | 
    
         
            -
            ---------------------
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
            Within the Ruby on Rails framework, there are a number of hooks provided for common events. These are detailed below.
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
            Action Controller
         
     | 
| 
       32 
     | 
    
         
            -
            -----------------
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            ### write_fragment.action_controller
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
            | Key    | Value            |
         
     | 
| 
       37 
     | 
    
         
            -
            | ------ | ---------------- |
         
     | 
| 
       38 
     | 
    
         
            -
            | `:key` | The complete key |
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       41 
     | 
    
         
            -
            {
         
     | 
| 
       42 
     | 
    
         
            -
              key: 'posts/1-dashboard-view'
         
     | 
| 
       43 
     | 
    
         
            -
            }
         
     | 
| 
       44 
     | 
    
         
            -
            ```
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            ### read_fragment.action_controller
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
            | Key    | Value            |
         
     | 
| 
       49 
     | 
    
         
            -
            | ------ | ---------------- |
         
     | 
| 
       50 
     | 
    
         
            -
            | `:key` | The complete key |
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       53 
     | 
    
         
            -
            {
         
     | 
| 
       54 
     | 
    
         
            -
              key: 'posts/1-dashboard-view'
         
     | 
| 
       55 
     | 
    
         
            -
            }
         
     | 
| 
       56 
     | 
    
         
            -
            ```
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
            ### expire_fragment.action_controller
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
            | Key    | Value            |
         
     | 
| 
       61 
     | 
    
         
            -
            | ------ | ---------------- |
         
     | 
| 
       62 
     | 
    
         
            -
            | `:key` | The complete key |
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       65 
     | 
    
         
            -
            {
         
     | 
| 
       66 
     | 
    
         
            -
              key: 'posts/1-dashboard-view'
         
     | 
| 
       67 
     | 
    
         
            -
            }
         
     | 
| 
       68 
     | 
    
         
            -
            ```
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
            ### exist_fragment?.action_controller
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
            | Key    | Value            |
         
     | 
| 
       73 
     | 
    
         
            -
            | ------ | ---------------- |
         
     | 
| 
       74 
     | 
    
         
            -
            | `:key` | The complete key |
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       77 
     | 
    
         
            -
            {
         
     | 
| 
       78 
     | 
    
         
            -
              key: 'posts/1-dashboard-view'
         
     | 
| 
       79 
     | 
    
         
            -
            }
         
     | 
| 
       80 
     | 
    
         
            -
            ```
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
            ### write_page.action_controller
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
            | Key     | Value             |
         
     | 
| 
       85 
     | 
    
         
            -
            | ------- | ----------------- |
         
     | 
| 
       86 
     | 
    
         
            -
            | `:path` | The complete path |
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       89 
     | 
    
         
            -
            {
         
     | 
| 
       90 
     | 
    
         
            -
              path: '/users/1'
         
     | 
| 
       91 
     | 
    
         
            -
            }
         
     | 
| 
       92 
     | 
    
         
            -
            ```
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
            ### expire_page.action_controller
         
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
            | Key     | Value             |
         
     | 
| 
       97 
     | 
    
         
            -
            | ------- | ----------------- |
         
     | 
| 
       98 
     | 
    
         
            -
            | `:path` | The complete path |
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       101 
     | 
    
         
            -
            {
         
     | 
| 
       102 
     | 
    
         
            -
              path: '/users/1'
         
     | 
| 
       103 
     | 
    
         
            -
            }
         
     | 
| 
       104 
     | 
    
         
            -
            ```
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
            ### start_processing.action_controller
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
            | Key           | Value                                                     |
         
     | 
| 
       109 
     | 
    
         
            -
            | ------------- | --------------------------------------------------------- |
         
     | 
| 
       110 
     | 
    
         
            -
            | `:controller` | The controller name                                       |
         
     | 
| 
       111 
     | 
    
         
            -
            | `:action`     | The action                                                |
         
     | 
| 
       112 
     | 
    
         
            -
            | `:params`     | Hash of request parameters without any filtered parameter |
         
     | 
| 
       113 
     | 
    
         
            -
            | `:format`     | html/js/json/xml etc                                      |
         
     | 
| 
       114 
     | 
    
         
            -
            | `:method`     | HTTP request verb                                         |
         
     | 
| 
       115 
     | 
    
         
            -
            | `:path`       | Request path                                              |
         
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       118 
     | 
    
         
            -
            {
         
     | 
| 
       119 
     | 
    
         
            -
              controller: "PostsController",
         
     | 
| 
       120 
     | 
    
         
            -
              action: "new",
         
     | 
| 
       121 
     | 
    
         
            -
              params: { "action" => "new", "controller" => "posts" },
         
     | 
| 
       122 
     | 
    
         
            -
              format: :html,
         
     | 
| 
       123 
     | 
    
         
            -
              method: "GET",
         
     | 
| 
       124 
     | 
    
         
            -
              path: "/posts/new"
         
     | 
| 
       125 
     | 
    
         
            -
            }
         
     | 
| 
       126 
     | 
    
         
            -
            ```
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
            ### process_action.action_controller
         
     | 
| 
       129 
     | 
    
         
            -
             
     | 
| 
       130 
     | 
    
         
            -
            | Key             | Value                                                     |
         
     | 
| 
       131 
     | 
    
         
            -
            | --------------- | --------------------------------------------------------- |
         
     | 
| 
       132 
     | 
    
         
            -
            | `:controller`   | The controller name                                       |
         
     | 
| 
       133 
     | 
    
         
            -
            | `:action`       | The action                                                |
         
     | 
| 
       134 
     | 
    
         
            -
            | `:params`       | Hash of request parameters without any filtered parameter |
         
     | 
| 
       135 
     | 
    
         
            -
            | `:format`       | html/js/json/xml etc                                      |
         
     | 
| 
       136 
     | 
    
         
            -
            | `:method`       | HTTP request verb                                         |
         
     | 
| 
       137 
     | 
    
         
            -
            | `:path`         | Request path                                              |
         
     | 
| 
       138 
     | 
    
         
            -
            | `:status`       | HTTP status code                                          |
         
     | 
| 
       139 
     | 
    
         
            -
            | `:view_runtime` | Amount spent in view in ms                                |
         
     | 
| 
       140 
     | 
    
         
            -
            | `:db_runtime`   | Amount spent executing database queries in ms             |
         
     | 
| 
       141 
     | 
    
         
            -
             
     | 
| 
       142 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       143 
     | 
    
         
            -
            {
         
     | 
| 
       144 
     | 
    
         
            -
              controller: "PostsController",
         
     | 
| 
       145 
     | 
    
         
            -
              action: "index",
         
     | 
| 
       146 
     | 
    
         
            -
              params: {"action" => "index", "controller" => "posts"},
         
     | 
| 
       147 
     | 
    
         
            -
              format: :html,
         
     | 
| 
       148 
     | 
    
         
            -
              method: "GET",
         
     | 
| 
       149 
     | 
    
         
            -
              path: "/posts",
         
     | 
| 
       150 
     | 
    
         
            -
              status: 200,
         
     | 
| 
       151 
     | 
    
         
            -
              view_runtime: 46.848,
         
     | 
| 
       152 
     | 
    
         
            -
              db_runtime: 0.157
         
     | 
| 
       153 
     | 
    
         
            -
            }
         
     | 
| 
       154 
     | 
    
         
            -
            ```
         
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
            ### send_file.action_controller
         
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
       158 
     | 
    
         
            -
            | Key     | Value                     |
         
     | 
| 
       159 
     | 
    
         
            -
            | ------- | ------------------------- |
         
     | 
| 
       160 
     | 
    
         
            -
            | `:path` | Complete path to the file |
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
            INFO. Additional keys may be added by the caller.
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
            ### send_data.action_controller
         
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
            `ActionController` does not had any specific information to the payload. All options are passed through to the payload.
         
     | 
| 
       167 
     | 
    
         
            -
             
     | 
| 
       168 
     | 
    
         
            -
            ### redirect_to.action_controller
         
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
     | 
    
         
            -
            | Key         | Value              |
         
     | 
| 
       171 
     | 
    
         
            -
            | ----------- | ------------------ |
         
     | 
| 
       172 
     | 
    
         
            -
            | `:status`   | HTTP response code |
         
     | 
| 
       173 
     | 
    
         
            -
            | `:location` | URL to redirect to |
         
     | 
| 
       174 
     | 
    
         
            -
             
     | 
| 
       175 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       176 
     | 
    
         
            -
            {
         
     | 
| 
       177 
     | 
    
         
            -
              status: 302,
         
     | 
| 
       178 
     | 
    
         
            -
              location: "http://localhost:3000/posts/new"
         
     | 
| 
       179 
     | 
    
         
            -
            }
         
     | 
| 
       180 
     | 
    
         
            -
            ```
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
     | 
    
         
            -
            ### halted_callback.action_controller
         
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
     | 
    
         
            -
            | Key       | Value                         |
         
     | 
| 
       185 
     | 
    
         
            -
            | --------- | ----------------------------- |
         
     | 
| 
       186 
     | 
    
         
            -
            | `:filter` | Filter that halted the action |
         
     | 
| 
       187 
     | 
    
         
            -
             
     | 
| 
       188 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       189 
     | 
    
         
            -
            {
         
     | 
| 
       190 
     | 
    
         
            -
              filter: ":halting_filter"
         
     | 
| 
       191 
     | 
    
         
            -
            }
         
     | 
| 
       192 
     | 
    
         
            -
            ```
         
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
            Action View
         
     | 
| 
       195 
     | 
    
         
            -
            -----------
         
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
       197 
     | 
    
         
            -
            ### render_template.action_view
         
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
       199 
     | 
    
         
            -
            | Key           | Value                 |
         
     | 
| 
       200 
     | 
    
         
            -
            | ------------- | --------------------- |
         
     | 
| 
       201 
     | 
    
         
            -
            | `:identifier` | Full path to template |
         
     | 
| 
       202 
     | 
    
         
            -
            | `:layout`     | Applicable layout     |
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       205 
     | 
    
         
            -
            {
         
     | 
| 
       206 
     | 
    
         
            -
              identifier: "/Users/adam/projects/notifications/app/views/posts/index.html.erb",
         
     | 
| 
       207 
     | 
    
         
            -
              layout: "layouts/application"
         
     | 
| 
       208 
     | 
    
         
            -
            }
         
     | 
| 
       209 
     | 
    
         
            -
            ```
         
     | 
| 
       210 
     | 
    
         
            -
             
     | 
| 
       211 
     | 
    
         
            -
            ### render_partial.action_view
         
     | 
| 
       212 
     | 
    
         
            -
             
     | 
| 
       213 
     | 
    
         
            -
            | Key           | Value                 |
         
     | 
| 
       214 
     | 
    
         
            -
            | ------------- | --------------------- |
         
     | 
| 
       215 
     | 
    
         
            -
            | `:identifier` | Full path to template |
         
     | 
| 
       216 
     | 
    
         
            -
             
     | 
| 
       217 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       218 
     | 
    
         
            -
            {
         
     | 
| 
       219 
     | 
    
         
            -
              identifier: "/Users/adam/projects/notifications/app/views/posts/_form.html.erb",
         
     | 
| 
       220 
     | 
    
         
            -
            }
         
     | 
| 
       221 
     | 
    
         
            -
            ```
         
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
       223 
     | 
    
         
            -
            Active Record
         
     | 
| 
       224 
     | 
    
         
            -
            ------------
         
     | 
| 
       225 
     | 
    
         
            -
             
     | 
| 
       226 
     | 
    
         
            -
            ### sql.active_record
         
     | 
| 
       227 
     | 
    
         
            -
             
     | 
| 
       228 
     | 
    
         
            -
            | Key              | Value                 |
         
     | 
| 
       229 
     | 
    
         
            -
            | ---------------- | --------------------- |
         
     | 
| 
       230 
     | 
    
         
            -
            | `:sql`           | SQL statement         |
         
     | 
| 
       231 
     | 
    
         
            -
            | `:name`          | Name of the operation |
         
     | 
| 
       232 
     | 
    
         
            -
            | `:connection_id` | `self.object_id`      |
         
     | 
| 
       233 
     | 
    
         
            -
             
     | 
| 
       234 
     | 
    
         
            -
            INFO. The adapters will add their own data as well.
         
     | 
| 
       235 
     | 
    
         
            -
             
     | 
| 
       236 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       237 
     | 
    
         
            -
            {
         
     | 
| 
       238 
     | 
    
         
            -
              sql: "SELECT \"posts\".* FROM \"posts\" ",
         
     | 
| 
       239 
     | 
    
         
            -
              name: "Post Load",
         
     | 
| 
       240 
     | 
    
         
            -
              connection_id: 70307250813140,
         
     | 
| 
       241 
     | 
    
         
            -
              binds: []
         
     | 
| 
       242 
     | 
    
         
            -
            }
         
     | 
| 
       243 
     | 
    
         
            -
            ```
         
     | 
| 
       244 
     | 
    
         
            -
             
     | 
| 
       245 
     | 
    
         
            -
            ### identity.active_record
         
     | 
| 
       246 
     | 
    
         
            -
             
     | 
| 
       247 
     | 
    
         
            -
            | Key              | Value                                     |
         
     | 
| 
       248 
     | 
    
         
            -
            | ---------------- | ----------------------------------------- |
         
     | 
| 
       249 
     | 
    
         
            -
            | `:line`          | Primary Key of object in the identity map |
         
     | 
| 
       250 
     | 
    
         
            -
            | `:name`          | Record's class                            |
         
     | 
| 
       251 
     | 
    
         
            -
            | `:connection_id` | `self.object_id`                          |
         
     | 
| 
       252 
     | 
    
         
            -
             
     | 
| 
       253 
     | 
    
         
            -
            Action Mailer
         
     | 
| 
       254 
     | 
    
         
            -
            -------------
         
     | 
| 
       255 
     | 
    
         
            -
             
     | 
| 
       256 
     | 
    
         
            -
            ### receive.action_mailer
         
     | 
| 
       257 
     | 
    
         
            -
             
     | 
| 
       258 
     | 
    
         
            -
            | Key           | Value                                        |
         
     | 
| 
       259 
     | 
    
         
            -
            | ------------- | -------------------------------------------- |
         
     | 
| 
       260 
     | 
    
         
            -
            | `:mailer`     | Name of the mailer class                     |
         
     | 
| 
       261 
     | 
    
         
            -
            | `:message_id` | ID of the message, generated by the Mail gem |
         
     | 
| 
       262 
     | 
    
         
            -
            | `:subject`    | Subject of the mail                          |
         
     | 
| 
       263 
     | 
    
         
            -
            | `:to`         | To address(es) of the mail                   |
         
     | 
| 
       264 
     | 
    
         
            -
            | `:from`       | From address of the mail                     |
         
     | 
| 
       265 
     | 
    
         
            -
            | `:bcc`        | BCC addresses of the mail                    |
         
     | 
| 
       266 
     | 
    
         
            -
            | `:cc`         | CC addresses of the mail                     |
         
     | 
| 
       267 
     | 
    
         
            -
            | `:date`       | Date of the mail                             |
         
     | 
| 
       268 
     | 
    
         
            -
            | `:mail`       | The encoded form of the mail                 |
         
     | 
| 
       269 
     | 
    
         
            -
             
     | 
| 
       270 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       271 
     | 
    
         
            -
            {
         
     | 
| 
       272 
     | 
    
         
            -
              mailer: "Notification",
         
     | 
| 
       273 
     | 
    
         
            -
              message_id: "4f5b5491f1774_181b23fc3d4434d38138e5@mba.local.mail",
         
     | 
| 
       274 
     | 
    
         
            -
              subject: "Rails Guides",
         
     | 
| 
       275 
     | 
    
         
            -
              to: ["users@rails.com", "ddh@rails.com"],
         
     | 
| 
       276 
     | 
    
         
            -
              from: ["me@rails.com"],
         
     | 
| 
       277 
     | 
    
         
            -
              date: Sat, 10 Mar 2012 14:18:09 +0100,
         
     | 
| 
       278 
     | 
    
         
            -
              mail: "..." # omitted for brevity
         
     | 
| 
       279 
     | 
    
         
            -
            }
         
     | 
| 
       280 
     | 
    
         
            -
            ```
         
     | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
       282 
     | 
    
         
            -
            ### deliver.action_mailer
         
     | 
| 
       283 
     | 
    
         
            -
             
     | 
| 
       284 
     | 
    
         
            -
            | Key           | Value                                        |
         
     | 
| 
       285 
     | 
    
         
            -
            | ------------- | -------------------------------------------- |
         
     | 
| 
       286 
     | 
    
         
            -
            | `:mailer`     | Name of the mailer class                     |
         
     | 
| 
       287 
     | 
    
         
            -
            | `:message_id` | ID of the message, generated by the Mail gem |
         
     | 
| 
       288 
     | 
    
         
            -
            | `:subject`    | Subject of the mail                          |
         
     | 
| 
       289 
     | 
    
         
            -
            | `:to`         | To address(es) of the mail                   |
         
     | 
| 
       290 
     | 
    
         
            -
            | `:from`       | From address of the mail                     |
         
     | 
| 
       291 
     | 
    
         
            -
            | `:bcc`        | BCC addresses of the mail                    |
         
     | 
| 
       292 
     | 
    
         
            -
            | `:cc`         | CC addresses of the mail                     |
         
     | 
| 
       293 
     | 
    
         
            -
            | `:date`       | Date of the mail                             |
         
     | 
| 
       294 
     | 
    
         
            -
            | `:mail`       | The encoded form of the mail                 |
         
     | 
| 
       295 
     | 
    
         
            -
             
     | 
| 
       296 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       297 
     | 
    
         
            -
            {
         
     | 
| 
       298 
     | 
    
         
            -
              mailer: "Notification",
         
     | 
| 
       299 
     | 
    
         
            -
              message_id: "4f5b5491f1774_181b23fc3d4434d38138e5@mba.local.mail",
         
     | 
| 
       300 
     | 
    
         
            -
              subject: "Rails Guides",
         
     | 
| 
       301 
     | 
    
         
            -
              to: ["users@rails.com", "ddh@rails.com"],
         
     | 
| 
       302 
     | 
    
         
            -
              from: ["me@rails.com"],
         
     | 
| 
       303 
     | 
    
         
            -
              date: Sat, 10 Mar 2012 14:18:09 +0100,
         
     | 
| 
       304 
     | 
    
         
            -
              mail: "..." # omitted for brevity
         
     | 
| 
       305 
     | 
    
         
            -
            }
         
     | 
| 
       306 
     | 
    
         
            -
            ```
         
     | 
| 
       307 
     | 
    
         
            -
             
     | 
| 
       308 
     | 
    
         
            -
            Active Support
         
     | 
| 
       309 
     | 
    
         
            -
            --------------
         
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
            ### cache_read.active_support
         
     | 
| 
       312 
     | 
    
         
            -
             
     | 
| 
       313 
     | 
    
         
            -
            | Key                | Value                                             |
         
     | 
| 
       314 
     | 
    
         
            -
            | ------------------ | ------------------------------------------------- |
         
     | 
| 
       315 
     | 
    
         
            -
            | `:key`             | Key used in the store                             |
         
     | 
| 
       316 
     | 
    
         
            -
            | `:hit`             | If this read is a hit                             |
         
     | 
| 
       317 
     | 
    
         
            -
            | `:super_operation` | :fetch is added when a read is used with `#fetch` |
         
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
            ### cache_generate.active_support
         
     | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
       321 
     | 
    
         
            -
            This event is only used when `#fetch` is called with a block.
         
     | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
       323 
     | 
    
         
            -
            | Key    | Value                 |
         
     | 
| 
       324 
     | 
    
         
            -
            | ------ | --------------------- |
         
     | 
| 
       325 
     | 
    
         
            -
            | `:key` | Key used in the store |
         
     | 
| 
       326 
     | 
    
         
            -
             
     | 
| 
       327 
     | 
    
         
            -
            INFO. Options passed to fetch will be merged with the payload when writing to the store
         
     | 
| 
       328 
     | 
    
         
            -
             
     | 
| 
       329 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       330 
     | 
    
         
            -
            {
         
     | 
| 
       331 
     | 
    
         
            -
              key: 'name-of-complicated-computation'
         
     | 
| 
       332 
     | 
    
         
            -
            }
         
     | 
| 
       333 
     | 
    
         
            -
            ```
         
     | 
| 
       334 
     | 
    
         
            -
             
     | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
       336 
     | 
    
         
            -
            ### cache_fetch_hit.active_support
         
     | 
| 
       337 
     | 
    
         
            -
             
     | 
| 
       338 
     | 
    
         
            -
            This event is only used when `#fetch` is called with a block.
         
     | 
| 
       339 
     | 
    
         
            -
             
     | 
| 
       340 
     | 
    
         
            -
            | Key    | Value                 |
         
     | 
| 
       341 
     | 
    
         
            -
            | ------ | --------------------- |
         
     | 
| 
       342 
     | 
    
         
            -
            | `:key` | Key used in the store |
         
     | 
| 
       343 
     | 
    
         
            -
             
     | 
| 
       344 
     | 
    
         
            -
            INFO. Options passed to fetch will be merged with the payload.
         
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       347 
     | 
    
         
            -
            {
         
     | 
| 
       348 
     | 
    
         
            -
              key: 'name-of-complicated-computation'
         
     | 
| 
       349 
     | 
    
         
            -
            }
         
     | 
| 
       350 
     | 
    
         
            -
            ```
         
     | 
| 
       351 
     | 
    
         
            -
             
     | 
| 
       352 
     | 
    
         
            -
            ### cache_write.active_support
         
     | 
| 
       353 
     | 
    
         
            -
             
     | 
| 
       354 
     | 
    
         
            -
            | Key    | Value                 |
         
     | 
| 
       355 
     | 
    
         
            -
            | ------ | --------------------- |
         
     | 
| 
       356 
     | 
    
         
            -
            | `:key` | Key used in the store |
         
     | 
| 
       357 
     | 
    
         
            -
             
     | 
| 
       358 
     | 
    
         
            -
            INFO. Cache stores may add their own keys
         
     | 
| 
       359 
     | 
    
         
            -
             
     | 
| 
       360 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       361 
     | 
    
         
            -
            {
         
     | 
| 
       362 
     | 
    
         
            -
              key: 'name-of-complicated-computation'
         
     | 
| 
       363 
     | 
    
         
            -
            }
         
     | 
| 
       364 
     | 
    
         
            -
            ```
         
     | 
| 
       365 
     | 
    
         
            -
             
     | 
| 
       366 
     | 
    
         
            -
            ### cache_delete.active_support
         
     | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
     | 
    
         
            -
            | Key    | Value                 |
         
     | 
| 
       369 
     | 
    
         
            -
            | ------ | --------------------- |
         
     | 
| 
       370 
     | 
    
         
            -
            | `:key` | Key used in the store |
         
     | 
| 
       371 
     | 
    
         
            -
             
     | 
| 
       372 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       373 
     | 
    
         
            -
            {
         
     | 
| 
       374 
     | 
    
         
            -
              key: 'name-of-complicated-computation'
         
     | 
| 
       375 
     | 
    
         
            -
            }
         
     | 
| 
       376 
     | 
    
         
            -
            ```
         
     | 
| 
       377 
     | 
    
         
            -
             
     | 
| 
       378 
     | 
    
         
            -
            ### cache_exist?.active_support
         
     | 
| 
       379 
     | 
    
         
            -
             
     | 
| 
       380 
     | 
    
         
            -
            | Key    | Value                 |
         
     | 
| 
       381 
     | 
    
         
            -
            | ------ | --------------------- |
         
     | 
| 
       382 
     | 
    
         
            -
            | `:key` | Key used in the store |
         
     | 
| 
       383 
     | 
    
         
            -
             
     | 
| 
       384 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       385 
     | 
    
         
            -
            {
         
     | 
| 
       386 
     | 
    
         
            -
              key: 'name-of-complicated-computation'
         
     | 
| 
       387 
     | 
    
         
            -
            }
         
     | 
| 
       388 
     | 
    
         
            -
            ```
         
     | 
| 
       389 
     | 
    
         
            -
             
     | 
| 
       390 
     | 
    
         
            -
            Railties
         
     | 
| 
       391 
     | 
    
         
            -
            --------
         
     | 
| 
       392 
     | 
    
         
            -
             
     | 
| 
       393 
     | 
    
         
            -
            ### load_config_initializer.railties
         
     | 
| 
       394 
     | 
    
         
            -
             
     | 
| 
       395 
     | 
    
         
            -
            | Key            | Value                                                 |
         
     | 
| 
       396 
     | 
    
         
            -
            | -------------- | ----------------------------------------------------- |
         
     | 
| 
       397 
     | 
    
         
            -
            | `:initializer` | Path to loaded initializer from `config/initializers` |
         
     | 
| 
       398 
     | 
    
         
            -
             
     | 
| 
       399 
     | 
    
         
            -
            Rails
         
     | 
| 
       400 
     | 
    
         
            -
            -----
         
     | 
| 
       401 
     | 
    
         
            -
             
     | 
| 
       402 
     | 
    
         
            -
            ### deprecation.rails
         
     | 
| 
       403 
     | 
    
         
            -
             
     | 
| 
       404 
     | 
    
         
            -
            | Key          | Value                           |
         
     | 
| 
       405 
     | 
    
         
            -
            | ------------ | ------------------------------- |
         
     | 
| 
       406 
     | 
    
         
            -
            | `:message`   | The deprecation warning         |
         
     | 
| 
       407 
     | 
    
         
            -
            | `:callstack` | Where the deprecation came from |
         
     | 
| 
       408 
     | 
    
         
            -
             
     | 
| 
       409 
     | 
    
         
            -
            Subscribing to an event
         
     | 
| 
       410 
     | 
    
         
            -
            -----------------------
         
     | 
| 
       411 
     | 
    
         
            -
             
     | 
| 
       412 
     | 
    
         
            -
            Subscribing to an event is easy. Use `ActiveSupport::Notifications.subscribe` with a block to
         
     | 
| 
       413 
     | 
    
         
            -
            listen to any notification.
         
     | 
| 
       414 
     | 
    
         
            -
             
     | 
| 
       415 
     | 
    
         
            -
            The block receives the following arguments:
         
     | 
| 
       416 
     | 
    
         
            -
             
     | 
| 
       417 
     | 
    
         
            -
            * The name of the event
         
     | 
| 
       418 
     | 
    
         
            -
            * Time when it started
         
     | 
| 
       419 
     | 
    
         
            -
            * Time when it finished
         
     | 
| 
       420 
     | 
    
         
            -
            * An unique ID for this event
         
     | 
| 
       421 
     | 
    
         
            -
            * The payload (described in previous sections)
         
     | 
| 
       422 
     | 
    
         
            -
             
     | 
| 
       423 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       424 
     | 
    
         
            -
            ActiveSupport::Notifications.subscribe "process_action.action_controller" do |name, started, finished, unique_id, data|
         
     | 
| 
       425 
     | 
    
         
            -
              # your own custom stuff
         
     | 
| 
       426 
     | 
    
         
            -
              Rails.logger.info "#{name} Received!"
         
     | 
| 
       427 
     | 
    
         
            -
            end
         
     | 
| 
       428 
     | 
    
         
            -
            ```
         
     | 
| 
       429 
     | 
    
         
            -
             
     | 
| 
       430 
     | 
    
         
            -
            Defining all those block arguments each time can be tedious. You can easily create an `ActiveSupport::Notifications::Event`
         
     | 
| 
       431 
     | 
    
         
            -
            from block arguments like this:
         
     | 
| 
       432 
     | 
    
         
            -
             
     | 
| 
       433 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       434 
     | 
    
         
            -
            ActiveSupport::Notifications.subscribe "process_action.action_controller" do |*args|
         
     | 
| 
       435 
     | 
    
         
            -
              event = ActiveSupport::Notifications::Event.new *args
         
     | 
| 
       436 
     | 
    
         
            -
             
     | 
| 
       437 
     | 
    
         
            -
              event.name      # => "process_action.action_controller"
         
     | 
| 
       438 
     | 
    
         
            -
              event.duration  # => 10 (in milliseconds)
         
     | 
| 
       439 
     | 
    
         
            -
              event.payload   # => {:extra=>information}
         
     | 
| 
       440 
     | 
    
         
            -
             
     | 
| 
       441 
     | 
    
         
            -
              Rails.logger.info "#{event} Received!"
         
     | 
| 
       442 
     | 
    
         
            -
            end
         
     | 
| 
       443 
     | 
    
         
            -
            ```
         
     | 
| 
       444 
     | 
    
         
            -
             
     | 
| 
       445 
     | 
    
         
            -
            Most times you only care about the data itself. Here is a shortcut to just get the data.
         
     | 
| 
       446 
     | 
    
         
            -
             
     | 
| 
       447 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       448 
     | 
    
         
            -
            ActiveSupport::Notifications.subscribe "process_action.action_controller" do |*args|
         
     | 
| 
       449 
     | 
    
         
            -
              data = args.extract_options!
         
     | 
| 
       450 
     | 
    
         
            -
              data # { extra: :information }
         
     | 
| 
       451 
     | 
    
         
            -
            end
         
     | 
| 
       452 
     | 
    
         
            -
            ```
         
     | 
| 
       453 
     | 
    
         
            -
             
     | 
| 
       454 
     | 
    
         
            -
            You may also subscribe to events matching a regular expression. This enables you to subscribe to
         
     | 
| 
       455 
     | 
    
         
            -
            multiple events at once. Here's you could subscribe to everything from `ActionController`.
         
     | 
| 
       456 
     | 
    
         
            -
             
     | 
| 
       457 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       458 
     | 
    
         
            -
            ActiveSupport::Notifications.subscribe /action_controller/ do |*args|
         
     | 
| 
       459 
     | 
    
         
            -
              # inspect all ActionController events
         
     | 
| 
       460 
     | 
    
         
            -
            end
         
     | 
| 
       461 
     | 
    
         
            -
            ```
         
     | 
| 
       462 
     | 
    
         
            -
             
     | 
| 
       463 
     | 
    
         
            -
            Creating custom events
         
     | 
| 
       464 
     | 
    
         
            -
            ----------------------
         
     | 
| 
       465 
     | 
    
         
            -
             
     | 
| 
       466 
     | 
    
         
            -
            Adding your own events is easy as well. `ActiveSupport::Notifications` will take care of
         
     | 
| 
       467 
     | 
    
         
            -
            all the heavy lifting for you. Simply call `instrument` with a `name`, `payload` and a block.
         
     | 
| 
       468 
     | 
    
         
            -
            The notification will be sent after the block returns. `ActiveSupport` will generate the start and end times
         
     | 
| 
       469 
     | 
    
         
            -
            as well as the unique ID. All data passed into the `instrument` call will make it into the payload.
         
     | 
| 
       470 
     | 
    
         
            -
             
     | 
| 
       471 
     | 
    
         
            -
            Here's an example:
         
     | 
| 
       472 
     | 
    
         
            -
             
     | 
| 
       473 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       474 
     | 
    
         
            -
            ActiveSupport::Notifications.instrument "my.custom.event", this: :data do
         
     | 
| 
       475 
     | 
    
         
            -
              # do your custom stuff here
         
     | 
| 
       476 
     | 
    
         
            -
            end
         
     | 
| 
       477 
     | 
    
         
            -
            ```
         
     | 
| 
       478 
     | 
    
         
            -
             
     | 
| 
       479 
     | 
    
         
            -
            Now you can listen to this event with:
         
     | 
| 
       480 
     | 
    
         
            -
             
     | 
| 
       481 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       482 
     | 
    
         
            -
            ActiveSupport::Notifications.subscribe "my.custom.event" do |name, started, finished, unique_id, data|
         
     | 
| 
       483 
     | 
    
         
            -
              puts data.inspect # {:this=>:data}
         
     | 
| 
       484 
     | 
    
         
            -
            end
         
     | 
| 
       485 
     | 
    
         
            -
            ```
         
     | 
| 
       486 
     | 
    
         
            -
             
     | 
| 
       487 
     | 
    
         
            -
            You should follow Rails conventions when defining your own events. The format is: `event.library`.
         
     | 
| 
       488 
     | 
    
         
            -
            If you application is sending Tweets, you should create an event named `tweet.twitter`.
         
     |