zenbox 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/INSTALL +5 -5
- data/README.md +99 -99
- data/Rakefile +4 -4
- data/generators/{contextify → zenbox}/lib/insert_commands.rb +0 -0
- data/generators/{contextify → zenbox}/lib/rake_commands.rb +0 -0
- data/generators/{contextify → zenbox}/templates/initializer.rb +2 -2
- data/generators/{contextify/templates/contextify_tasks.rake → zenbox/templates/zenbox_tasks.rake} +7 -7
- data/generators/{contextify/contextify_generator.rb → zenbox/zenbox_generator.rb} +20 -20
- data/lib/rails/generators/{contextify/contextify_generator.rb → zenbox/zenbox_generator.rb} +21 -21
- data/lib/zenbox.rb +74 -1
- data/lib/{contextify → zenbox}/configuration.rb +7 -7
- data/lib/{contextify → zenbox}/rails.rb +4 -4
- data/lib/{contextify → zenbox}/railtie.rb +4 -4
- data/lib/{contextify → zenbox}/sender.rb +11 -11
- data/lib/{contextify → zenbox}/shared_tasks.rb +1 -1
- data/lib/zenbox/tasks.rb +50 -0
- data/lib/zenbox/user_helper.rb +39 -0
- data/lib/zenbox/version.rb +3 -0
- data/rails/init.rb +1 -1
- data/resources/README.md +3 -3
- data/{contextify.gemspec → zenbox.gemspec} +5 -5
- metadata +52 -56
- data/lib/contextify.rb +0 -74
- data/lib/contextify/tasks.rb +0 -50
- data/lib/contextify/user_helper.rb +0 -39
- data/lib/contextify/version.rb +0 -3
data/INSTALL
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
=== Configuration
|
2
2
|
|
3
|
-
You should have something like this in config/initializers/
|
3
|
+
You should have something like this in config/initializers/zenbox.rb.
|
4
4
|
|
5
|
-
|
5
|
+
Zenbox.configure do |config|
|
6
6
|
config.api_key = '1234567890abcdef'
|
7
7
|
end
|
8
8
|
|
9
9
|
|
10
|
-
You can test that
|
10
|
+
You can test that Zenbox is working in your production environment by using
|
11
11
|
this rake task (from RAILS_ROOT):
|
12
12
|
|
13
|
-
rake
|
13
|
+
rake zenbox:test
|
14
14
|
|
15
|
-
If everything is configured properly, that task will send sample data to
|
15
|
+
If everything is configured properly, that task will send sample data to Zenbox.
|
data/README.md
CHANGED
@@ -1,68 +1,68 @@
|
|
1
|
-
|
1
|
+
Zenbox
|
2
2
|
========
|
3
3
|
|
4
|
-
This is the notifier gem for integrating apps with [
|
4
|
+
This is the notifier gem for integrating apps with [Zenbox](http://zenbox.io).
|
5
5
|
|
6
|
-
When an uncaught exception occurs,
|
7
|
-
to the
|
6
|
+
When an uncaught exception occurs, Zenbox will POST the relevant data
|
7
|
+
to the Zenbox server specified in your environment.
|
8
8
|
|
9
9
|
Help
|
10
10
|
----
|
11
11
|
|
12
|
-
For help with using
|
12
|
+
For help with using Zenbox and this notifier visit [our support site](http://help.zenbox.io).
|
13
13
|
|
14
|
-
For discussion of
|
14
|
+
For discussion of Zenbox development check out the [mailing list](http://groups.google.com/group/hoptoad-notifier-dev).
|
15
15
|
|
16
|
-
For SSL verification see the [Resources](https://github.com/
|
16
|
+
For SSL verification see the [Resources](https://github.com/zenbox/zenbox/blob/master/resources/README.md).
|
17
17
|
|
18
18
|
Rails Installation
|
19
19
|
------------------
|
20
20
|
|
21
21
|
### Rails 3.x
|
22
22
|
|
23
|
-
Add the
|
23
|
+
Add the zenbox gem to your Gemfile. In Gemfile:
|
24
24
|
|
25
|
-
gem "
|
25
|
+
gem "zenbox"
|
26
26
|
|
27
27
|
Then from your project's RAILS_ROOT, and in your development environment, run:
|
28
28
|
|
29
29
|
bundle install
|
30
|
-
rails generate
|
30
|
+
rails generate zenbox --api-key your_key_here
|
31
31
|
|
32
32
|
That's it!
|
33
33
|
|
34
|
-
The generator creates a file under `config/initializers/
|
34
|
+
The generator creates a file under `config/initializers/zenbox.rb` configuring Zenbox with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments.
|
35
35
|
|
36
36
|
### Rails 2.x
|
37
37
|
|
38
|
-
Add the
|
38
|
+
Add the zenbox gem to your app. In config/environment.rb:
|
39
39
|
|
40
|
-
config.gem '
|
40
|
+
config.gem 'zenbox'
|
41
41
|
|
42
42
|
or if you are using bundler:
|
43
43
|
|
44
|
-
gem '
|
44
|
+
gem 'zenbox', :require => 'zenbox/rails'
|
45
45
|
|
46
46
|
Then from your project's RAILS_ROOT, and in your development environment, run:
|
47
47
|
|
48
48
|
rake gems:install
|
49
|
-
rake gems:unpack GEM=
|
50
|
-
script/generate
|
49
|
+
rake gems:unpack GEM=zenbox
|
50
|
+
script/generate zenbox --api-key your_key_here
|
51
51
|
|
52
|
-
As always, if you choose not to vendor the
|
52
|
+
As always, if you choose not to vendor the zenbox gem, make sure
|
53
53
|
every server you deploy to has the gem installed or your application won't start.
|
54
54
|
|
55
|
-
The generator creates a file under `config/initializers/
|
55
|
+
The generator creates a file under `config/initializers/zenbox.rb` configuring Zenbox with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments.
|
56
56
|
|
57
|
-
### Upgrading From Earlier Versions of
|
57
|
+
### Upgrading From Earlier Versions of Zenbox
|
58
58
|
|
59
59
|
If you're currently using the plugin version (if you have a
|
60
60
|
vendor/plugins/hoptoad_notifier directory, you are), you'll need to perform a
|
61
61
|
few extra steps when upgrading to the gem version.
|
62
62
|
|
63
|
-
Add the
|
63
|
+
Add the zenbox gem to your app. In config/environment.rb:
|
64
64
|
|
65
|
-
config.gem '
|
65
|
+
config.gem 'zenbox'
|
66
66
|
|
67
67
|
Remove the plugin:
|
68
68
|
|
@@ -73,26 +73,26 @@ Make sure the following line DOES NOT appear in your ApplicationController file:
|
|
73
73
|
include HoptoadNotifier::Catcher
|
74
74
|
|
75
75
|
If it does, remove it. The new catcher is automatically included by the gem
|
76
|
-
version of
|
76
|
+
version of Zenbox.
|
77
77
|
|
78
|
-
Before running the
|
79
|
-
Log in to your account at
|
78
|
+
Before running the zenbox generator, you need to find your project's API key.
|
79
|
+
Log in to your account at zenbox.io, and click on the "Projects" button.
|
80
80
|
Then, find your project in the list, and click on its name. In the left-hand
|
81
81
|
column, you'll see an "Edit this project" button. Click on that to get your
|
82
82
|
project's API key. If you accidentally use your personal API api_key,
|
83
83
|
you will get API key not found errors, and exceptions will not be stored
|
84
|
-
by the
|
84
|
+
by the Zenbox service.
|
85
85
|
|
86
86
|
Then from your project's RAILS_ROOT, run:
|
87
87
|
|
88
88
|
rake gems:install
|
89
|
-
script/generate
|
89
|
+
script/generate zenbox --api-key your_key_here
|
90
90
|
|
91
|
-
Once installed, you should vendor the
|
91
|
+
Once installed, you should vendor the zenbox gem.
|
92
92
|
|
93
|
-
rake gems:unpack GEM=
|
93
|
+
rake gems:unpack GEM=zenbox
|
94
94
|
|
95
|
-
As always, if you choose not to vendor the
|
95
|
+
As always, if you choose not to vendor the zenbox gem, make sure
|
96
96
|
every server you deploy to has the gem installed or your application won't
|
97
97
|
start.
|
98
98
|
|
@@ -115,12 +115,12 @@ framework).
|
|
115
115
|
|
116
116
|
|
117
117
|
|
118
|
-
You can test that
|
118
|
+
You can test that Zenbox is working in your production environment by using
|
119
119
|
this rake task (from RAILS_ROOT):
|
120
120
|
|
121
|
-
rake
|
121
|
+
rake zenbox:test
|
122
122
|
|
123
|
-
If everything is configured properly, that task will send a notice to
|
123
|
+
If everything is configured properly, that task will send a notice to Zenbox
|
124
124
|
which will be visible immediately.
|
125
125
|
|
126
126
|
### Removing hoptoad_notifier
|
@@ -143,24 +143,24 @@ Non-rails apps using Bundler
|
|
143
143
|
----------------------------
|
144
144
|
There is an undocumented dependency in `activesupport` where the `i18n` gem is
|
145
145
|
required only if the core classes extensions are used (`active_support/core_ext`).
|
146
|
-
This can lead to a confusing `LoadError` exception when using
|
146
|
+
This can lead to a confusing `LoadError` exception when using Zenbox. Until
|
147
147
|
this is fixed in `activesupport` the workaround is to add `i18n` to the Gemfile
|
148
148
|
for your Sinatra/Rack/pure ruby application:
|
149
149
|
|
150
150
|
gem 'i18n'
|
151
|
-
gem '
|
151
|
+
gem 'zenbox'
|
152
152
|
|
153
153
|
Rack
|
154
154
|
----
|
155
155
|
|
156
|
-
In order to use
|
157
|
-
|
156
|
+
In order to use zenbox in a non-Rails rack app, just load
|
157
|
+
zenbox, configure your API key, and use the Zenbox::Rack
|
158
158
|
middleware:
|
159
159
|
|
160
160
|
require 'rack'
|
161
|
-
require '
|
161
|
+
require 'zenbox'
|
162
162
|
|
163
|
-
|
163
|
+
Zenbox.configure do |config|
|
164
164
|
config.api_key = 'my_api_key'
|
165
165
|
end
|
166
166
|
|
@@ -168,22 +168,22 @@ middleware:
|
|
168
168
|
run lambda { |env| raise "Rack down" }
|
169
169
|
end
|
170
170
|
|
171
|
-
use
|
171
|
+
use Zenbox::Rack
|
172
172
|
run app
|
173
173
|
|
174
174
|
Sinatra
|
175
175
|
-------
|
176
176
|
|
177
|
-
Using
|
177
|
+
Using zenbox in a Sinatra app is just like a Rack app:
|
178
178
|
|
179
179
|
require 'sinatra'
|
180
|
-
require '
|
180
|
+
require 'zenbox'
|
181
181
|
|
182
|
-
|
182
|
+
Zenbox.configure do |config|
|
183
183
|
config.api_key = 'my API key'
|
184
184
|
end
|
185
185
|
|
186
|
-
use
|
186
|
+
use Zenbox::Rack
|
187
187
|
|
188
188
|
get '/' do
|
189
189
|
raise "Sinatra has left the building"
|
@@ -192,7 +192,7 @@ Using contextify in a Sinatra app is just like a Rack app:
|
|
192
192
|
Usage
|
193
193
|
-----
|
194
194
|
|
195
|
-
For the most part,
|
195
|
+
For the most part, Zenbox works for itself.
|
196
196
|
|
197
197
|
It intercepts the exception middleware calls, sends notifications and continues the middleware call chain.
|
198
198
|
|
@@ -201,68 +201,68 @@ controller, you can do something like this:
|
|
201
201
|
|
202
202
|
...
|
203
203
|
rescue => ex
|
204
|
-
|
204
|
+
notify_zenbox(ex)
|
205
205
|
flash[:failure] = 'Encryptions could not be rerouted, try again.'
|
206
206
|
end
|
207
207
|
...
|
208
208
|
|
209
|
-
The `#
|
210
|
-
analysis. While in your controllers you use the `
|
211
|
-
else in your code, use `
|
209
|
+
The `#notify_zenbox` call will send the notice over to Zenbox for later
|
210
|
+
analysis. While in your controllers you use the `notify_zenbox` method, anywhere
|
211
|
+
else in your code, use `Zenbox.notify`.
|
212
212
|
|
213
|
-
To perform custom error processing after
|
214
|
-
instance method `#
|
213
|
+
To perform custom error processing after Zenbox has been notified, define the
|
214
|
+
instance method `#rescue_action_in_public_without_zenbox(exception)` in your
|
215
215
|
controller.
|
216
216
|
|
217
217
|
Informing the User
|
218
218
|
------------------
|
219
219
|
|
220
|
-
The
|
220
|
+
The zenbox gem is capable of telling the user information about the error that just happened
|
221
221
|
via the user_information option. They can give this error number in bug reports, for example.
|
222
222
|
By default, if your 500.html contains the text
|
223
223
|
|
224
224
|
<!-- AIRBRAKE ERROR -->
|
225
225
|
|
226
|
-
then that comment will be replaced with the text "
|
227
|
-
of the informer by setting `config.user_information`.
|
228
|
-
ID of the error that is returned from
|
226
|
+
then that comment will be replaced with the text "Zenbox Error [errnum]". You can modify the text
|
227
|
+
of the informer by setting `config.user_information`. Zenbox will replace "{{ error_id }}" with the
|
228
|
+
ID of the error that is returned from Zenbox.
|
229
229
|
|
230
|
-
|
230
|
+
Zenbox.configure do |config|
|
231
231
|
...
|
232
232
|
config.user_information = "<p>Tell the devs that it was <strong>{{ error_id }}</strong>'s fault.</p>"
|
233
233
|
end
|
234
234
|
|
235
235
|
You can also turn the middleware that handles this completely off by setting `config.user_information` to false.
|
236
236
|
|
237
|
-
Note that this feature is reading the error id from `env['
|
238
|
-
automatically in a controller,
|
239
|
-
`
|
240
|
-
"manual" methods would be `env['
|
237
|
+
Note that this feature is reading the error id from `env['zenbox.error_id']`. When the exception is caught
|
238
|
+
automatically in a controller, Zenbox sets that value. If you're, however, calling the Zenbox methods like
|
239
|
+
`Zenbox#notify` or `Zenbox#notify_or_ignore`, please make sure you set that value. So the proper way of calling the
|
240
|
+
"manual" methods would be `env['zenbox.error_id'] = Zenbox.notify_or_ignore(...)`.
|
241
241
|
|
242
|
-
Tracking deployments in
|
242
|
+
Tracking deployments in Zenbox
|
243
243
|
--------------------------------
|
244
244
|
|
245
|
-
Paying
|
246
|
-
By notifying
|
245
|
+
Paying Zenbox plans support the ability to track deployments of your application in Zenbox.
|
246
|
+
By notifying Zenbox of your application deployments, all errors are resolved when a deploy occurs,
|
247
247
|
so that you'll be notified again about any errors that reoccur after a deployment.
|
248
248
|
|
249
|
-
Additionally, it's possible to review the errors in
|
249
|
+
Additionally, it's possible to review the errors in Zenbox that occurred before and after a deploy.
|
250
250
|
|
251
|
-
When
|
251
|
+
When Zenbox is installed as a gem, you need to add
|
252
252
|
|
253
|
-
require '
|
253
|
+
require 'zenbox/capistrano'
|
254
254
|
|
255
255
|
to your deploy.rb
|
256
256
|
|
257
257
|
If you don't use Capistrano, then you can use the following rake task from your
|
258
|
-
deployment process to notify
|
258
|
+
deployment process to notify Zenbox:
|
259
259
|
|
260
|
-
rake
|
260
|
+
rake zenbox:deploy TO=#{rails_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}
|
261
261
|
|
262
262
|
Going beyond exceptions
|
263
263
|
-----------------------
|
264
264
|
|
265
|
-
You can also pass a hash to `
|
265
|
+
You can also pass a hash to `Zenbox.notify` method and store whatever you want,
|
266
266
|
not just an exception. And you can also use it anywhere, not just in
|
267
267
|
controllers:
|
268
268
|
|
@@ -272,25 +272,25 @@ controllers:
|
|
272
272
|
}
|
273
273
|
my_unpredicable_method(params)
|
274
274
|
rescue => e
|
275
|
-
|
275
|
+
Zenbox.notify(
|
276
276
|
:error_class => "Special Error",
|
277
277
|
:error_message => "Special Error: #{e.message}",
|
278
278
|
:parameters => params
|
279
279
|
)
|
280
280
|
end
|
281
281
|
|
282
|
-
While in your controllers you use the `
|
283
|
-
your code, use `
|
282
|
+
While in your controllers you use the `notify_zenbox` method, anywhere else in
|
283
|
+
your code, use `Zenbox.notify`. Zenbox will get all the information
|
284
284
|
about the error itself. As for a hash, these are the keys you should pass:
|
285
285
|
|
286
|
-
* `:error_class` - Use this to group similar errors together. When
|
286
|
+
* `:error_class` - Use this to group similar errors together. When Zenbox catches an exception it sends the class name of that exception object.
|
287
287
|
* `:error_message` - This is the title of the error you see in the errors list. For exceptions it is "#{exception.class.name}: #{exception.message}"
|
288
|
-
* `:parameters` - While there are several ways to send additional data to
|
288
|
+
* `:parameters` - While there are several ways to send additional data to Zenbox, passing a Hash as :parameters as in the example above is the most common use case. When Zenbox catches an exception in a controller, the actual HTTP client request parameters are sent using this key.
|
289
289
|
|
290
|
-
|
290
|
+
Zenbox merges the hash you pass with these default options:
|
291
291
|
|
292
292
|
{
|
293
|
-
:api_key =>
|
293
|
+
:api_key => Zenbox.api_key,
|
294
294
|
:error_message => 'Notification',
|
295
295
|
:backtrace => caller,
|
296
296
|
:parameters => {},
|
@@ -305,20 +305,20 @@ One common request we see is to send shell environment variables along with
|
|
305
305
|
manual exception notification. We recommend sending them along with CGI data
|
306
306
|
or Rack environment (:cgi_data or :rack_env keys, respectively.)
|
307
307
|
|
308
|
-
See
|
308
|
+
See Zenbox::Notice#initialize in lib/zenbox/notice.rb for
|
309
309
|
more details.
|
310
310
|
|
311
311
|
Filtering
|
312
312
|
---------
|
313
313
|
|
314
|
-
You can specify a whitelist of errors that
|
314
|
+
You can specify a whitelist of errors that Zenbox will not report on. Use
|
315
315
|
this feature when you are so apathetic to certain errors that you don't want
|
316
316
|
them even logged.
|
317
317
|
|
318
318
|
This filter will only be applied to automatic notifications, not manual
|
319
319
|
notifications (when #notify is called directly).
|
320
320
|
|
321
|
-
|
321
|
+
Zenbox ignores the following exceptions by default:
|
322
322
|
|
323
323
|
ActiveRecord::RecordNotFound
|
324
324
|
ActionController::RoutingError
|
@@ -329,17 +329,17 @@ Contextify ignores the following exceptions by default:
|
|
329
329
|
Mongoid::Errors::DocumentNotFound
|
330
330
|
|
331
331
|
|
332
|
-
To ignore errors in addition to those, specify their names in your
|
332
|
+
To ignore errors in addition to those, specify their names in your Zenbox
|
333
333
|
configuration block.
|
334
334
|
|
335
|
-
|
335
|
+
Zenbox.configure do |config|
|
336
336
|
config.api_key = '1234567890abcdef'
|
337
337
|
config.ignore << "ActiveRecord::IgnoreThisError"
|
338
338
|
end
|
339
339
|
|
340
340
|
To ignore *only* certain errors (and override the defaults), use the #ignore_only attribute.
|
341
341
|
|
342
|
-
|
342
|
+
Zenbox.configure do |config|
|
343
343
|
config.api_key = '1234567890abcdef'
|
344
344
|
config.ignore_only = ["ActiveRecord::IgnoreThisError"] # or [] to ignore no exceptions.
|
345
345
|
end
|
@@ -347,7 +347,7 @@ To ignore *only* certain errors (and override the defaults), use the #ignore_onl
|
|
347
347
|
To ignore certain user agents, add in the #ignore_user_agent attribute as a
|
348
348
|
string or regexp:
|
349
349
|
|
350
|
-
|
350
|
+
Zenbox.configure do |config|
|
351
351
|
config.api_key = '1234567890abcdef'
|
352
352
|
config.ignore_user_agent << /Ignored/
|
353
353
|
config.ignore_user_agent << 'IgnoredUserAgent'
|
@@ -355,32 +355,32 @@ string or regexp:
|
|
355
355
|
|
356
356
|
To ignore exceptions based on other conditions, use #ignore_by_filter:
|
357
357
|
|
358
|
-
|
358
|
+
Zenbox.configure do |config|
|
359
359
|
config.api_key = '1234567890abcdef'
|
360
360
|
config.ignore_by_filter do |exception_data|
|
361
361
|
true if exception_data[:error_class] == "RuntimeError"
|
362
362
|
end
|
363
363
|
end
|
364
364
|
|
365
|
-
To replace sensitive information sent to the
|
365
|
+
To replace sensitive information sent to the Zenbox service with [FILTERED] use #params_filters:
|
366
366
|
|
367
|
-
|
367
|
+
Zenbox.configure do |config|
|
368
368
|
config.api_key = '1234567890abcdef'
|
369
369
|
config.params_filters << "credit_card_number"
|
370
370
|
end
|
371
371
|
|
372
372
|
Note that, when rescuing exceptions within an ActionController method,
|
373
|
-
|
373
|
+
zenbox will reuse filters specified by #filter_parameter_logging.
|
374
374
|
|
375
375
|
Testing
|
376
376
|
-------
|
377
377
|
|
378
|
-
When you run your tests, you might notice that the
|
378
|
+
When you run your tests, you might notice that the Zenbox service is recording
|
379
379
|
notices generated using #notify when you don't expect it to. You can
|
380
380
|
use code like this in your test_helper.rb or spec_helper.rb files to redefine
|
381
381
|
that method so those errors are not reported while running tests.
|
382
382
|
|
383
|
-
module
|
383
|
+
module Zenbox
|
384
384
|
def self.notify(exception, opts = {})
|
385
385
|
# do nothing.
|
386
386
|
end
|
@@ -389,9 +389,9 @@ that method so those errors are not reported while running tests.
|
|
389
389
|
Proxy Support
|
390
390
|
-------------
|
391
391
|
|
392
|
-
The notifier supports using a proxy, if your server is not able to directly reach the
|
392
|
+
The notifier supports using a proxy, if your server is not able to directly reach the Zenbox servers. To configure the proxy settings, added the following information to your Zenbox configuration block.
|
393
393
|
|
394
|
-
|
394
|
+
Zenbox.configure do |config|
|
395
395
|
config.proxy_host = proxy.host.com
|
396
396
|
config.proxy_port = 4038
|
397
397
|
config.proxy_user = foo # optional
|
@@ -403,7 +403,7 @@ Supported Rails versions
|
|
403
403
|
See SUPPORTED_RAILS_VERSIONS for a list of official supported versions of
|
404
404
|
Rails.
|
405
405
|
|
406
|
-
Please open up a support ticket ( http://help.
|
406
|
+
Please open up a support ticket ( http://help.zenbox.io ) or submit a new github issue
|
407
407
|
if you're using a version of Rails that is listed above and the notifier is
|
408
408
|
not working properly.
|
409
409
|
|
@@ -412,7 +412,7 @@ Javascript Notifer
|
|
412
412
|
|
413
413
|
To automatically include the Javascript node on every page, use this helper method from your layouts:
|
414
414
|
|
415
|
-
<%=
|
415
|
+
<%= zenbox_javascript_notifier %>
|
416
416
|
|
417
417
|
It's important to insert this very high in the markup, above all other javascript. Example:
|
418
418
|
|
@@ -420,7 +420,7 @@ It's important to insert this very high in the markup, above all other javascrip
|
|
420
420
|
<html>
|
421
421
|
<head>
|
422
422
|
<meta charset="utf8">
|
423
|
-
<%=
|
423
|
+
<%= zenbox_javascript_notifier %>
|
424
424
|
<!-- more javascript -->
|
425
425
|
</head>
|
426
426
|
<body>
|
@@ -431,14 +431,14 @@ It's important to insert this very high in the markup, above all other javascrip
|
|
431
431
|
This helper will automatically use the API key, host, and port specified in the configuration.
|
432
432
|
|
433
433
|
The Javascript notifier tends to send much more notifications than the base Rails project.
|
434
|
-
If you want to receive them into a separate
|
434
|
+
If you want to receive them into a separate Zenbox project, specify its
|
435
435
|
API key in the `js_api_key` option.
|
436
436
|
|
437
437
|
config.js_api_key = 'another-projects-api-key'
|
438
438
|
|
439
439
|
To test the Javascript notifier in development environment, overwrite (temporarily) the development_environments option:
|
440
440
|
|
441
|
-
|
441
|
+
Zenbox.configure do |config|
|
442
442
|
# ...
|
443
443
|
config.development_environments = []
|
444
444
|
end
|
@@ -453,13 +453,13 @@ Credits
|
|
453
453
|
|
454
454
|
![thoughtbot](http://thoughtbot.com/images/tm/logo.png)
|
455
455
|
|
456
|
-
|
456
|
+
Zenbox is maintained and funded by [zenbox.io](http://zenbox.io)
|
457
457
|
|
458
|
-
Thank you to all [the contributors](https://github.com/
|
458
|
+
Thank you to all [the contributors](https://github.com/zenbox/zenbox/contributors)!
|
459
459
|
|
460
|
-
The names and logos for
|
460
|
+
The names and logos for Zenbox, thoughtbot are trademarks of their respective holders.
|
461
461
|
|
462
462
|
License
|
463
463
|
-------
|
464
464
|
|
465
|
-
|
465
|
+
Zenbox is Copyright © 2008-2012 Zenbox. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.
|