alec-gem 2.7.2
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 +7 -0
- data/.rspec +1 -0
- data/.rubocop.yml +74 -0
- data/.travis.yml +47 -0
- data/Gemfile +38 -0
- data/Gemfile.lock +215 -0
- data/LICENSE +201 -0
- data/README.md +132 -0
- data/Rakefile +29 -0
- data/alec-gem.gemspec +22 -0
- data/changelog.md +442 -0
- data/docs/Makefile +130 -0
- data/docs/breadcrumbs.rst +51 -0
- data/docs/conf.py +228 -0
- data/docs/config.rst +260 -0
- data/docs/context.rst +141 -0
- data/docs/index.rst +113 -0
- data/docs/install.rst +40 -0
- data/docs/integrations/heroku.rst +11 -0
- data/docs/integrations/index.rst +59 -0
- data/docs/integrations/puma.rst +30 -0
- data/docs/integrations/rack.rst +27 -0
- data/docs/integrations/rails.rst +62 -0
- data/docs/make.bat +155 -0
- data/docs/processors.rst +124 -0
- data/docs/sentry-doc-config.json +31 -0
- data/docs/usage.rst +176 -0
- data/exe/raven +32 -0
- data/lib/raven.rb +3 -0
- data/lib/raven/backtrace.rb +137 -0
- data/lib/raven/base.rb +106 -0
- data/lib/raven/breadcrumbs.rb +76 -0
- data/lib/raven/breadcrumbs/activesupport.rb +19 -0
- data/lib/raven/breadcrumbs/logger.rb +93 -0
- data/lib/raven/cli.rb +59 -0
- data/lib/raven/client.rb +142 -0
- data/lib/raven/configuration.rb +434 -0
- data/lib/raven/context.rb +43 -0
- data/lib/raven/event.rb +259 -0
- data/lib/raven/instance.rb +221 -0
- data/lib/raven/integrations/delayed_job.rb +58 -0
- data/lib/raven/integrations/rack-timeout.rb +19 -0
- data/lib/raven/integrations/rack.rb +139 -0
- data/lib/raven/integrations/rails.rb +79 -0
- data/lib/raven/integrations/rails/active_job.rb +59 -0
- data/lib/raven/integrations/rails/controller_methods.rb +13 -0
- data/lib/raven/integrations/rails/controller_transaction.rb +13 -0
- data/lib/raven/integrations/rails/overrides/debug_exceptions_catcher.rb +31 -0
- data/lib/raven/integrations/rails/overrides/streaming_reporter.rb +23 -0
- data/lib/raven/integrations/railties.rb +1 -0
- data/lib/raven/integrations/rake.rb +18 -0
- data/lib/raven/integrations/sidekiq.rb +87 -0
- data/lib/raven/integrations/tasks.rb +11 -0
- data/lib/raven/interface.rb +25 -0
- data/lib/raven/interfaces/exception.rb +15 -0
- data/lib/raven/interfaces/http.rb +16 -0
- data/lib/raven/interfaces/message.rb +20 -0
- data/lib/raven/interfaces/single_exception.rb +14 -0
- data/lib/raven/interfaces/stack_trace.rb +69 -0
- data/lib/raven/linecache.rb +41 -0
- data/lib/raven/logger.rb +19 -0
- data/lib/raven/processor.rb +15 -0
- data/lib/raven/processor/cookies.rb +26 -0
- data/lib/raven/processor/http_headers.rb +55 -0
- data/lib/raven/processor/post_data.rb +22 -0
- data/lib/raven/processor/removecircularreferences.rb +17 -0
- data/lib/raven/processor/removestacktrace.rb +24 -0
- data/lib/raven/processor/sanitizedata.rb +88 -0
- data/lib/raven/processor/utf8conversion.rb +52 -0
- data/lib/raven/transports.rb +15 -0
- data/lib/raven/transports/dummy.rb +16 -0
- data/lib/raven/transports/http.rb +68 -0
- data/lib/raven/utils/deep_merge.rb +22 -0
- data/lib/raven/utils/real_ip.rb +62 -0
- data/lib/raven/version.rb +5 -0
- data/lib/sentry-raven-without-integrations.rb +1 -0
- data/lib/sentry-raven.rb +1 -0
- data/pkg/sentry-raven-2.7.2.gem +0 -0
- metadata +143 -0
data/docs/make.bat
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
@ECHO OFF
|
2
|
+
|
3
|
+
REM Command file for Sphinx documentation
|
4
|
+
|
5
|
+
if "%SPHINXBUILD%" == "" (
|
6
|
+
set SPHINXBUILD=sphinx-build
|
7
|
+
)
|
8
|
+
set BUILDDIR=_build
|
9
|
+
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
|
10
|
+
if NOT "%PAPER%" == "" (
|
11
|
+
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
|
12
|
+
)
|
13
|
+
|
14
|
+
if "%1" == "" goto help
|
15
|
+
|
16
|
+
if "%1" == "help" (
|
17
|
+
:help
|
18
|
+
echo.Please use `make ^<target^>` where ^<target^> is one of
|
19
|
+
echo. html to make standalone HTML files
|
20
|
+
echo. dirhtml to make HTML files named index.html in directories
|
21
|
+
echo. singlehtml to make a single large HTML file
|
22
|
+
echo. pickle to make pickle files
|
23
|
+
echo. json to make JSON files
|
24
|
+
echo. htmlhelp to make HTML files and a HTML help project
|
25
|
+
echo. qthelp to make HTML files and a qthelp project
|
26
|
+
echo. devhelp to make HTML files and a Devhelp project
|
27
|
+
echo. epub to make an epub
|
28
|
+
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
|
29
|
+
echo. text to make text files
|
30
|
+
echo. man to make manual pages
|
31
|
+
echo. changes to make an overview over all changed/added/deprecated items
|
32
|
+
echo. linkcheck to check all external links for integrity
|
33
|
+
echo. doctest to run all doctests embedded in the documentation if enabled
|
34
|
+
goto end
|
35
|
+
)
|
36
|
+
|
37
|
+
if "%1" == "clean" (
|
38
|
+
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
|
39
|
+
del /q /s %BUILDDIR%\*
|
40
|
+
goto end
|
41
|
+
)
|
42
|
+
|
43
|
+
if "%1" == "html" (
|
44
|
+
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
|
45
|
+
echo.
|
46
|
+
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
|
47
|
+
goto end
|
48
|
+
)
|
49
|
+
|
50
|
+
if "%1" == "dirhtml" (
|
51
|
+
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
|
52
|
+
echo.
|
53
|
+
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
|
54
|
+
goto end
|
55
|
+
)
|
56
|
+
|
57
|
+
if "%1" == "singlehtml" (
|
58
|
+
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
|
59
|
+
echo.
|
60
|
+
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
|
61
|
+
goto end
|
62
|
+
)
|
63
|
+
|
64
|
+
if "%1" == "pickle" (
|
65
|
+
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
|
66
|
+
echo.
|
67
|
+
echo.Build finished; now you can process the pickle files.
|
68
|
+
goto end
|
69
|
+
)
|
70
|
+
|
71
|
+
if "%1" == "json" (
|
72
|
+
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
|
73
|
+
echo.
|
74
|
+
echo.Build finished; now you can process the JSON files.
|
75
|
+
goto end
|
76
|
+
)
|
77
|
+
|
78
|
+
if "%1" == "htmlhelp" (
|
79
|
+
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
|
80
|
+
echo.
|
81
|
+
echo.Build finished; now you can run HTML Help Workshop with the ^
|
82
|
+
.hhp project file in %BUILDDIR%/htmlhelp.
|
83
|
+
goto end
|
84
|
+
)
|
85
|
+
|
86
|
+
if "%1" == "qthelp" (
|
87
|
+
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
|
88
|
+
echo.
|
89
|
+
echo.Build finished; now you can run "qcollectiongenerator" with the ^
|
90
|
+
.qhcp project file in %BUILDDIR%/qthelp, like this:
|
91
|
+
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Sentry.qhcp
|
92
|
+
echo.To view the help file:
|
93
|
+
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Sentry.ghc
|
94
|
+
goto end
|
95
|
+
)
|
96
|
+
|
97
|
+
if "%1" == "devhelp" (
|
98
|
+
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
|
99
|
+
echo.
|
100
|
+
echo.Build finished.
|
101
|
+
goto end
|
102
|
+
)
|
103
|
+
|
104
|
+
if "%1" == "epub" (
|
105
|
+
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
|
106
|
+
echo.
|
107
|
+
echo.Build finished. The epub file is in %BUILDDIR%/epub.
|
108
|
+
goto end
|
109
|
+
)
|
110
|
+
|
111
|
+
if "%1" == "latex" (
|
112
|
+
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
|
113
|
+
echo.
|
114
|
+
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
|
115
|
+
goto end
|
116
|
+
)
|
117
|
+
|
118
|
+
if "%1" == "text" (
|
119
|
+
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
|
120
|
+
echo.
|
121
|
+
echo.Build finished. The text files are in %BUILDDIR%/text.
|
122
|
+
goto end
|
123
|
+
)
|
124
|
+
|
125
|
+
if "%1" == "man" (
|
126
|
+
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
|
127
|
+
echo.
|
128
|
+
echo.Build finished. The manual pages are in %BUILDDIR%/man.
|
129
|
+
goto end
|
130
|
+
)
|
131
|
+
|
132
|
+
if "%1" == "changes" (
|
133
|
+
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
|
134
|
+
echo.
|
135
|
+
echo.The overview file is in %BUILDDIR%/changes.
|
136
|
+
goto end
|
137
|
+
)
|
138
|
+
|
139
|
+
if "%1" == "linkcheck" (
|
140
|
+
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
|
141
|
+
echo.
|
142
|
+
echo.Link check complete; look for any errors in the above output ^
|
143
|
+
or in %BUILDDIR%/linkcheck/output.txt.
|
144
|
+
goto end
|
145
|
+
)
|
146
|
+
|
147
|
+
if "%1" == "doctest" (
|
148
|
+
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
|
149
|
+
echo.
|
150
|
+
echo.Testing of doctests in the sources finished, look at the ^
|
151
|
+
results in %BUILDDIR%/doctest/output.txt.
|
152
|
+
goto end
|
153
|
+
)
|
154
|
+
|
155
|
+
:end
|
data/docs/processors.rst
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
Processors
|
2
|
+
==========
|
3
|
+
|
4
|
+
Raven Ruby contains several "processors", which scrub data before it is sent to Sentry.
|
5
|
+
Processors remove invalid or sensitive data. The following are the processors
|
6
|
+
which are enabled by default (and are applied to all outgoing data in this order):
|
7
|
+
|
8
|
+
RemoveCircularReferences
|
9
|
+
Many Ruby JSON implementations simply throw an exception if they detect a
|
10
|
+
circular reference. This processor removes circular references from hashes
|
11
|
+
and arrays.
|
12
|
+
|
13
|
+
UTF8Conversion
|
14
|
+
Many Ruby JSON implementations will throw exceptions if data is not in a
|
15
|
+
consistent UTF-8 format. This processor looks for invalid encodings and fixes
|
16
|
+
them.
|
17
|
+
|
18
|
+
SanitizeData
|
19
|
+
Censors any data which looks like a password, social security number or credit
|
20
|
+
card number. Can be configured to scrub other data.
|
21
|
+
|
22
|
+
Cookies
|
23
|
+
Removes any HTTP cookies from the Sentry event data.
|
24
|
+
|
25
|
+
PostData
|
26
|
+
Removes any HTTP Post request bodies.
|
27
|
+
|
28
|
+
HTTPHeaders
|
29
|
+
Removes all HTTP headers which match a regex. By default, this will only remove the
|
30
|
+
"Authorization" header, but can be configured to remove others.
|
31
|
+
|
32
|
+
Finally, another processor is included in the source but is not turned on by default,
|
33
|
+
RemoveStackTrace.
|
34
|
+
|
35
|
+
To remove stacktraces from events:
|
36
|
+
|
37
|
+
.. sourcecode:: ruby
|
38
|
+
|
39
|
+
Raven.configure do |config|
|
40
|
+
config.processors += [Raven::Processor::RemoveStacktrace]
|
41
|
+
end
|
42
|
+
|
43
|
+
Writing Your Own Processor
|
44
|
+
--------------------------
|
45
|
+
|
46
|
+
Processors are simple to write and understand. As an example, let's say that we
|
47
|
+
send user API keys to a background job (using Sidekiq), and if the background job
|
48
|
+
raises an exception, we want to make sure that the API key is removed from the
|
49
|
+
event data.
|
50
|
+
|
51
|
+
This is what a basic processor might look like:
|
52
|
+
|
53
|
+
.. sourcecode:: ruby
|
54
|
+
|
55
|
+
class MyJobProcessor < Raven::Processor
|
56
|
+
def process(data)
|
57
|
+
return data unless data["extra"]["arguments"] &&
|
58
|
+
data["extra"]["arguments"].first["sensitive_parameter"]
|
59
|
+
|
60
|
+
data["extra"]["arguments"].first["sensitive_parameter"] = STRING_MASK
|
61
|
+
data
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
Processors should inherit from the ``Raven::Processor`` class. This ensures that the
|
66
|
+
processor has access to its client (all processors have a ``client`` instance method,
|
67
|
+
which will be populated with the current ``Raven::Client`` when the processor
|
68
|
+
is initialized), and gives you a few convenient constants for masking data.
|
69
|
+
|
70
|
+
Processors must have a method called ``process`` defined. It must accept one
|
71
|
+
argument, which will be the Raven event data hash. The method must return a hash,
|
72
|
+
which represents the data after it has been modified by the processor.
|
73
|
+
|
74
|
+
To help you in writing your own processor, here is what the Event data hash looks
|
75
|
+
like (slightly modified/concatenated) when it is passed to the processor:
|
76
|
+
|
77
|
+
.. sourcecode:: ruby
|
78
|
+
|
79
|
+
{
|
80
|
+
"environment" => "default",
|
81
|
+
"event_id" => "02ea6d3d35c840b1a8f339ba896917e3",
|
82
|
+
"extra" => {
|
83
|
+
"server" => {
|
84
|
+
# server related information
|
85
|
+
}
|
86
|
+
"active_job" => "MyActiveJob",
|
87
|
+
"arguments" => [ {"sensitive_parameter": "sensitive"} ],
|
88
|
+
"job_id" => "cbc2c146-0486-4e98-b81c-1a251d636b34",
|
89
|
+
},
|
90
|
+
"modules" => {
|
91
|
+
"rake"=>"12.0.0",
|
92
|
+
"concurrent-ruby"=>"1.0.5",
|
93
|
+
"i18n"=>"0.8.6",
|
94
|
+
"minitest"=>"5.10.3",
|
95
|
+
# ...
|
96
|
+
},
|
97
|
+
"platform" => "ruby",
|
98
|
+
"release" => "e4d5ced",
|
99
|
+
"sdk" => {"name"=>"raven-ruby", "version"=>"2.6.3"},
|
100
|
+
"server_name" => "myserver.local",
|
101
|
+
"timestamp" => "2017-10-09T19:53:20",
|
102
|
+
"exception" => {
|
103
|
+
# A very large and complex exception object
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
However, it will probably be more helpful if you use a debugger, such as `pry`, to
|
108
|
+
inspect the event data hash for yourself.
|
109
|
+
|
110
|
+
The example processor given above looks for the ActiveJob arguments hash, looks for
|
111
|
+
a particular value, and then replaces it with the string mask. There is a fast return
|
112
|
+
if the event does not contain the ActiveJob data we're looking for, using Ruby 2.3+'s
|
113
|
+
safe navigation operator.
|
114
|
+
|
115
|
+
Once you have your processor written, you simply need to add it to the processor chain:
|
116
|
+
|
117
|
+
.. sourcecode:: ruby
|
118
|
+
|
119
|
+
Raven.configure do |config|
|
120
|
+
config.processors += MyJobProcessor
|
121
|
+
end
|
122
|
+
|
123
|
+
For more information about writing processors, read the code for the default
|
124
|
+
processors, located in ``lib/processor``.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
{
|
2
|
+
"support_level": "production",
|
3
|
+
"platforms": {
|
4
|
+
"ruby": {
|
5
|
+
"name": "Ruby",
|
6
|
+
"type": "language",
|
7
|
+
"doc_link": "",
|
8
|
+
"wizard": [
|
9
|
+
"index#installation",
|
10
|
+
"index#configuration",
|
11
|
+
"index#reporting-failures"
|
12
|
+
]
|
13
|
+
},
|
14
|
+
"ruby.rack": {
|
15
|
+
"name": "Rack",
|
16
|
+
"type": "framework",
|
17
|
+
"doc_link": "integrations/rack/",
|
18
|
+
"wizard": [
|
19
|
+
"integrations/rack#rack-sinatra-etc"
|
20
|
+
]
|
21
|
+
},
|
22
|
+
"ruby.rails": {
|
23
|
+
"name": "Rails",
|
24
|
+
"type": "framework",
|
25
|
+
"doc_link": "integrations/rails/",
|
26
|
+
"wizard": [
|
27
|
+
"integrations/rails#ruby-on-rails"
|
28
|
+
]
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
data/docs/usage.rst
ADDED
@@ -0,0 +1,176 @@
|
|
1
|
+
Usage
|
2
|
+
=====
|
3
|
+
|
4
|
+
To use Raven Ruby all you need is your DSN. Like most Sentry libraries it
|
5
|
+
will honor the ``SENTRY_DSN`` environment variable. You can find it on
|
6
|
+
the project settings page under API Keys. You can either export it as
|
7
|
+
environment variable or manually configure it with ``Raven.configure``:
|
8
|
+
|
9
|
+
.. code-block:: ruby
|
10
|
+
|
11
|
+
Raven.configure do |config|
|
12
|
+
config.dsn = '___DSN___'
|
13
|
+
end
|
14
|
+
|
15
|
+
If you only want to send events to Sentry in certain environments, you
|
16
|
+
should set ``config.environments`` too:
|
17
|
+
|
18
|
+
.. code-block:: ruby
|
19
|
+
|
20
|
+
Raven.configure do |config|
|
21
|
+
config.dsn = '___DSN___'
|
22
|
+
config.environments = ['staging', 'production']
|
23
|
+
end
|
24
|
+
|
25
|
+
Reporting Failures
|
26
|
+
------------------
|
27
|
+
|
28
|
+
If you use Rails, Rake, Rack etc, you're already done - no more
|
29
|
+
configuration required! Check :doc:`integrations/index` for more details on
|
30
|
+
other gems Sentry integrates with automatically.
|
31
|
+
|
32
|
+
Otherwise, Raven supports two methods of capturing exceptions:
|
33
|
+
|
34
|
+
.. sourcecode:: ruby
|
35
|
+
|
36
|
+
Raven.capture do
|
37
|
+
# capture any exceptions which happen during execution of this block
|
38
|
+
1 / 0
|
39
|
+
end
|
40
|
+
|
41
|
+
begin
|
42
|
+
1 / 0
|
43
|
+
rescue ZeroDivisionError => exception
|
44
|
+
Raven.capture_exception(exception)
|
45
|
+
end
|
46
|
+
|
47
|
+
Reporting Messages
|
48
|
+
------------------
|
49
|
+
|
50
|
+
If you want to report a message rather than an exception you can use the
|
51
|
+
``capture_message`` method:
|
52
|
+
|
53
|
+
.. code-block:: ruby
|
54
|
+
|
55
|
+
Raven.capture_message("Something went very wrong")
|
56
|
+
|
57
|
+
Referencing Events
|
58
|
+
------------------
|
59
|
+
|
60
|
+
The client exposes a ``last_event_id`` accessor allowing you to easily
|
61
|
+
reference the last captured event. This is useful, for example, if you wanted
|
62
|
+
to show the user a reference on your error page:
|
63
|
+
|
64
|
+
.. code-block:: ruby
|
65
|
+
|
66
|
+
# somewhere deep in the stack
|
67
|
+
Raven.capture do
|
68
|
+
1 / 0
|
69
|
+
end
|
70
|
+
|
71
|
+
Now you can easily expose this to your error handler:
|
72
|
+
|
73
|
+
.. code-block:: ruby
|
74
|
+
|
75
|
+
class ErrorsController < ApplicationController
|
76
|
+
def internal_server_error
|
77
|
+
render(:status => 500, :sentry_event_id => Raven.last_event_id)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
Optional Attributes
|
82
|
+
-------------------
|
83
|
+
|
84
|
+
With calls to ``capture_exception`` or ``capture_message`` additional data
|
85
|
+
can be supplied:
|
86
|
+
|
87
|
+
.. code-block:: ruby
|
88
|
+
|
89
|
+
Raven.capture_message("...", :attr => 'value')
|
90
|
+
|
91
|
+
.. describe:: extra
|
92
|
+
|
93
|
+
Additional context for this event. Must be a mapping. Children can be any native JSON type.
|
94
|
+
|
95
|
+
.. code-block:: ruby
|
96
|
+
|
97
|
+
{
|
98
|
+
:extra => {'key' => 'value'}
|
99
|
+
}
|
100
|
+
|
101
|
+
.. describe:: fingerprint
|
102
|
+
|
103
|
+
The fingerprint for grouping this event.
|
104
|
+
|
105
|
+
.. code-block:: ruby
|
106
|
+
|
107
|
+
{
|
108
|
+
:fingerprint => ['{{ default }}', 'other value']
|
109
|
+
}
|
110
|
+
|
111
|
+
.. describe:: level
|
112
|
+
|
113
|
+
The level of the event. Defaults to ``error``.
|
114
|
+
|
115
|
+
.. code-block:: ruby
|
116
|
+
|
117
|
+
{
|
118
|
+
:level => 'warning'
|
119
|
+
}
|
120
|
+
|
121
|
+
Sentry is aware of the following levels:
|
122
|
+
|
123
|
+
* debug (the least serious)
|
124
|
+
* info
|
125
|
+
* warning
|
126
|
+
* error
|
127
|
+
* fatal (the most serious)
|
128
|
+
|
129
|
+
.. describe:: logger
|
130
|
+
|
131
|
+
The logger name for the event.
|
132
|
+
|
133
|
+
.. code-block:: ruby
|
134
|
+
|
135
|
+
{
|
136
|
+
:logger => 'default'
|
137
|
+
}
|
138
|
+
|
139
|
+
.. describe:: tags
|
140
|
+
|
141
|
+
Tags to index with this event. Must be a mapping of strings.
|
142
|
+
|
143
|
+
.. code-block:: ruby
|
144
|
+
|
145
|
+
{
|
146
|
+
:tags => {'key' => 'value'}
|
147
|
+
}
|
148
|
+
|
149
|
+
.. describe:: user
|
150
|
+
|
151
|
+
The acting user.
|
152
|
+
|
153
|
+
.. code-block:: ruby
|
154
|
+
|
155
|
+
{
|
156
|
+
:user => {
|
157
|
+
'id' => 42,
|
158
|
+
'email' => 'clever-girl'
|
159
|
+
}
|
160
|
+
}
|
161
|
+
|
162
|
+
Many Instances
|
163
|
+
--------------
|
164
|
+
|
165
|
+
It is possible to have many different instances and configurations of the Raven
|
166
|
+
client running at once. See the delegation pattern in ``base.rb`` for more
|
167
|
+
information about how the ``Raven`` module delegates calls to the "main" instance.
|
168
|
+
|
169
|
+
.. code-block:: ruby
|
170
|
+
|
171
|
+
Raven.capture # capture, sent to the main instance
|
172
|
+
|
173
|
+
# You can create as many instances as you like. Provide a context and config.
|
174
|
+
instance = Raven::Instance.new(Raven::Context.new, Raven::Configuration.new)
|
175
|
+
|
176
|
+
Currently, all integrations use the "main" instance.
|