{"number":129,"pull_request":{"number":129,"issue_url":"https://github.com/integrity/integrity/issues/129","head":{"repo":{"master_branch":null,"name":"integrity","created_at":"2011-09-28T17:40:08Z","size":152,"clone_url":"https://github.com/richmeyers/integrity.git","private":false,"updated_at":"2011-10-18T02:20:39Z","watchers":1,"ssh_url":"git@github.com:richmeyers/integrity.git","url":"https://api.github.com/repos/richmeyers/integrity","git_url":"git://github.com/richmeyers/integrity.git","language":"Ruby","fork":true,"svn_url":"https://svn.github.com/richmeyers/integrity","id":2476640,"pushed_at":"2011-10-18T02:20:39Z","open_issues":0,"homepage":"http://integrityapp.com","description":"Continuous Integration server","forks":0,"html_url":"https://github.com/richmeyers/integrity","owner":{"avatar_url":"https://secure.gravatar.com/avatar/fde3b1bf3005d63d8d7f170dac35b60a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"fde3b1bf3005d63d8d7f170dac35b60a","url":"https://api.github.com/users/richmeyers","id":306052,"login":"richmeyers"}},"label":"richmeyers:undelete-options","sha":"ed05dae564c736a71530b478126e26d5cf7c6a52","ref":"undelete-options","user":{"avatar_url":"https://secure.gravatar.com/avatar/fde3b1bf3005d63d8d7f170dac35b60a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"fde3b1bf3005d63d8d7f170dac35b60a","url":"https://api.github.com/users/richmeyers","id":306052,"login":"richmeyers"}},"merged_by":null,"created_at":"2011-10-18T03:02:02Z","changed_files":6,"merged":false,"body":"When config is passed in as a hash variable, deleting keys affects said varaible in the caller. If multiple notifiers are instantiated with the same config, deleting keys has the effect of subsequent notifiers receiving only parts of the configuration (if any at all) and failing to operate.\r\n\r\nPractically speaking this created the following errors:\r\n\r\n<pre>\r\n  4) Error:\r\ntest_Sending_the_notification_via_SMTP(EmailNotificationTest):\r\nArgumentError: :to is required\r\n    /usr/local/lib/ruby/vendor_ruby/1.8/pony.rb:125:in `mail'\r\n    lib/integrity/notifier/email.rb:24:in `deliver!'\r\n    ./lib/integrity/notifier/base.rb:6:in `notify'\r\n    ./lib/integrity/notifier/base.rb:71:in `log_and_notify_with_timeout'\r\n    /usr/local/lib/ruby/1.8/timeout.rb:62:in `timeout'\r\n    ./lib/integrity/notifier/base.rb:71:in `log_and_notify_with_timeout'\r\n    ./lib/integrity/notifier/base.rb:6:in `notify'\r\n    ./lib/integrity/notifier.rb:23:in `notify'\r\n    ./lib/integrity/build.rb:37:in `notify'\r\n    /usr/local/lib/ruby/vendor_ruby/1.8/dm-core/collection.rb:511:in `each'\r\n    /usr/local/lib/ruby/vendor_ruby/1.8/dm-core/support/lazy_array.rb:413:in `each'\r\n    /usr/local/lib/ruby/vendor_ruby/1.8/dm-core/support/lazy_array.rb:413:in `each'\r\n    /usr/local/lib/ruby/vendor_ruby/1.8/dm-core/collection.rb:508:in `each'\r\n    ./lib/integrity/build.rb:37:in `notify'\r\n    ./lib/integrity/builder.rb:42:in `notify'\r\n    ./lib/integrity/builder.rb:17:in `build'\r\n    ./lib/integrity/builder.rb:4:in `build'\r\n    ./lib/integrity/build.rb:33:in `run!'\r\n    ./test/helper/acceptance.rb:75:in `enqueue'\r\n    ./lib/integrity/build.rb:29:in `run'\r\n    ./lib/integrity/project.rb:44:in `build'\r\n    ./lib/integrity/project.rb:34:in `build_head'\r\n    ./lib/integrity/app.rb:117:in `POST /:project/builds'\r\n...\r\n    ./test/acceptance/email_notification_test.rb:42:in `test_Sending_the_notification_via_SMTP'\r\n</pre>\r\n\r\nThat error also was showing in actual use.\r\n\r\nIn my estimation the breakage possibly started sometime around when \"start build\" notifications were added, as they iterated over all notifiers in one place: 69d882554b35e931b352d821d9ad3cd1311d5c1a","comments":0,"title":"Do not delete config keys in notifiers.","additions":11,"diff_url":"https://github.com/integrity/integrity/pull/129.diff","updated_at":"2011-10-18T03:02:02Z","url":"https://api.github.com/repos/integrity/integrity/pulls/129","id":410312,"patch_url":"https://github.com/integrity/integrity/pull/129.patch","mergeable":null,"merged_at":null,"commits":1,"closed_at":null,"user":{"avatar_url":"https://secure.gravatar.com/avatar/fde3b1bf3005d63d8d7f170dac35b60a?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"fde3b1bf3005d63d8d7f170dac35b60a","url":"https://api.github.com/users/richmeyers","id":306052,"login":"richmeyers"},"deletions":11,"html_url":"https://github.com/integrity/integrity/pull/129","base":{"repo":{"master_branch":null,"name":"integrity","created_at":"2009-04-07T10:08:23Z","size":412,"clone_url":"https://github.com/integrity/integrity.git","private":false,"updated_at":"2011-10-18T03:02:02Z","watchers":487,"ssh_url":"git@github.com:integrity/integrity.git","url":"https://api.github.com/repos/integrity/integrity","git_url":"git://github.com/integrity/integrity.git","language":"Ruby","fork":true,"svn_url":"https://svn.github.com/integrity/integrity","id":150321,"pushed_at":"2011-10-18T03:02:02Z","open_issues":29,"homepage":"http://integrityapp.com","description":"Continuous Integration server","forks":120,"html_url":"https://github.com/integrity/integrity","owner":{"avatar_url":"https://secure.gravatar.com/avatar/8b04c474be38de7139441cef6dfdf886?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"8b04c474be38de7139441cef6dfdf886","url":"https://api.github.com/users/integrity","id":55584,"login":"integrity"}},"label":"integrity:master","sha":"30a507fc5c43cd371af6cbcef5028dd43533be13","ref":"master","user":{"avatar_url":"https://secure.gravatar.com/avatar/8b04c474be38de7139441cef6dfdf886?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"8b04c474be38de7139441cef6dfdf886","url":"https://api.github.com/users/integrity","id":55584,"login":"integrity"}},"state":"open"},"action":"opened"}