{"push_id":721930134,"size":189,"distinct_size":4,"ref":"refs/heads/redesign-locale-switcher","head":"3d5147e02f003cea2694216561cf74fdbea0e50c","before":"618aff89df28668b36567346b6dd17d891e7e047","commits":[{"sha":"89efa7af04e2f5a5c141658800af3f5aba02b025","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Minor tidy","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/89efa7af04e2f5a5c141658800af3f5aba02b025"},{"sha":"52eadefd43855f7151792b26790760b161869bea","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Remove unused variable","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/52eadefd43855f7151792b26790760b161869bea"},{"sha":"df17b3ccf92ec4097653bb35b594b8e036e88d93","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use arel query","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/df17b3ccf92ec4097653bb35b594b8e036e88d93"},{"sha":"1184994308f61071262c9f43dbdfc926bbfb1dd0","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Remove explicit return","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/1184994308f61071262c9f43dbdfc926bbfb1dd0"},{"sha":"742684d8093c062ca57d0d8d05e141d5557c8bc0","author":{"email":"47b4a7a5efa666807c9d04fad2715d1896cb0efc@gmail.com","name":"Louise Crow"},"message":"Update references to rails-3-develop to point at develop","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/742684d8093c062ca57d0d8d05e141d5557c8bc0"},{"sha":"d6a1f042d64be5c8906aa4af0e0a4c9c6dd08bfb","author":{"email":"47b4a7a5efa666807c9d04fad2715d1896cb0efc@gmail.com","name":"Louise Crow"},"message":"Merge branch 'move-to-develop' into develop","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/d6a1f042d64be5c8906aa4af0e0a4c9c6dd08bfb"},{"sha":"d08b12b5e572a5c79be0a5bcbbd420e779a32a0f","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Add spec for simple uuencoded attachment\n\nInspired by https://github.com/mikel/mail/commit/bc4c9bb9321e9d36a678692f2f562d3146b63f78","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/d08b12b5e572a5c79be0a5bcbbd420e779a32a0f"},{"sha":"cfd737427102f3e8449e6ed46ce768b3c520d387","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Clean IncomingMessage#_uudecode_and_save_attachments\n\neach instead of for\nremove self\navoid explicit return","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/cfd737427102f3e8449e6ed46ce768b3c520d387"},{"sha":"1e8dc7d5cbb382f6cb94716fd1ff0c990d219792","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use Ruby to decode uuencoded attachments\n\nRuby can natively decode uuencoded text with String#unpack. [1] This\navoids the uuencode program dependency and avoids writing tempfiles.\n\nThe actual implementation is taken from mail [2]. The UnixToUnix module\nis not available in our bundled version of mail.\n\nThis commit includes a spec to illustrate the failure of uuencode(1) to\ndecode the particular attachment in incoming-request-bad-uuencoding-2.\nemail. Parsing with uuencode returns the following error:\n\n    External Command: Error from command \"uudecode -o /dev/stdout\n\t/tmp/foiuu20150530-14811-u6j936\":\n\tuudecode: /tmp/foiuu20150530-14811-u6j936: No `end' line\n\nThe file _is_ created and appears to be OK, but the exit code is 1. This\ncauses AlaveteliExternalCommand to fail and return nil.\n\nSee #2508 [3] for the bug report.\n\n[1] http://ruby-doc.org/core-1.8.7/String.html#method-i-unpack\n[2] https://github.com/mikel/mail/blob/bc4c9bb9321e9d36a678692f2f562d3146b63f78/lib/mail/encodings/unix_to_unix.rb#L7\n[3] https://github.com/mysociety/alaveteli/issues/2508","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/1e8dc7d5cbb382f6cb94716fd1ff0c990d219792"},{"sha":"197dd8676b43dced1486feefde09dbd2d1d5d616","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use database query to return unique results\n\nUse pluck to return only public_body_id instead of filtering in Ruby","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/197dd8676b43dced1486feefde09dbd2d1d5d616"},{"sha":"752048a5c3f3fc3fa63e78c665c1fa6a4e65bba8","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use Hash#fetch for nil fallback\n\nEasier to understand\nRemoves explicit return","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/752048a5c3f3fc3fa63e78c665c1fa6a4e65bba8"},{"sha":"db759ed1f70efdf829ec1a581007aed883a86330","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use string interpolation","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/db759ed1f70efdf829ec1a581007aed883a86330"},{"sha":"c63fcadb78b52e1ea0fb8410a9f1715d49671676","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use SQL to find first result\n\nNo point loading all results if we're only ever going to return the first.","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/c63fcadb78b52e1ea0fb8410a9f1715d49671676"},{"sha":"65152bc84c070af095e298016dc6d7328a74d39f","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Fix typo\n\nTypes should be CamelCase","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/65152bc84c070af095e298016dc6d7328a74d39f"},{"sha":"609bed69081e1f0e81662f052342d34dbe7881bb","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Speed up PublicBodyHelper#type_of_authority\n\nPreviously loaded all PublicBodyHeading and associated PublicBodyCategory\nrecords. Now only loads the PublicBodyCategory records that relate to the\nPublicBody.\n\n          user     system      total        real\nold   0.320000   0.000000   0.320000 (  0.356155)\nnew   0.010000   0.000000   0.010000 (  0.010077)","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/609bed69081e1f0e81662f052342d34dbe7881bb"},{"sha":"2e585703b619ee7b77132098888bb97c5f5e6483","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use each_with_index rather than state variable","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/2e585703b619ee7b77132098888bb97c5f5e6483"},{"sha":"1a104e6a93faa5ab3e1d99affd51018fec7a240a","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"No longer need to compact types","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/1a104e6a93faa5ab3e1d99affd51018fec7a240a"},{"sha":"e0b3355272c1c490d380028074addfe0f10d208b","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Minor tidy up","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/e0b3355272c1c490d380028074addfe0f10d208b"},{"sha":"54a985b3c0ed47ba351dda7043effc14be1257bd","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Extract logic in view to controller","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/54a985b3c0ed47ba351dda7043effc14be1257bd"},{"sha":"98e1fd244cc145d7ad19af48d48b7287e3ba2c58","author":{"email":"2f9181a725196cd0a5e07c6a6e161d83fcc71157@mysociety.org","name":"Gareth Rees"},"message":"Use ARel syntax","distinct":false,"url":"https://api.github.com/repos/mysociety/alaveteli/commits/98e1fd244cc145d7ad19af48d48b7287e3ba2c58"}]}