{"action":"created","issue":{"url":"https://api.github.com/repos/adelevie/parse-ruby-client/issues/165","labels_url":"https://api.github.com/repos/adelevie/parse-ruby-client/issues/165/labels{/name}","comments_url":"https://api.github.com/repos/adelevie/parse-ruby-client/issues/165/comments","events_url":"https://api.github.com/repos/adelevie/parse-ruby-client/issues/165/events","html_url":"https://github.com/adelevie/parse-ruby-client/pull/165","id":78991856,"number":165,"title":"Attempt to remove the client singleton","user":{"login":"rhymes","id":146201,"avatar_url":"https://avatars.githubusercontent.com/u/146201?v=3","gravatar_id":"","url":"https://api.github.com/users/rhymes","html_url":"https://github.com/rhymes","followers_url":"https://api.github.com/users/rhymes/followers","following_url":"https://api.github.com/users/rhymes/following{/other_user}","gists_url":"https://api.github.com/users/rhymes/gists{/gist_id}","starred_url":"https://api.github.com/users/rhymes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rhymes/subscriptions","organizations_url":"https://api.github.com/users/rhymes/orgs","repos_url":"https://api.github.com/users/rhymes/repos","events_url":"https://api.github.com/users/rhymes/events{/privacy}","received_events_url":"https://api.github.com/users/rhymes/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":13,"created_at":"2015-05-21T13:14:46Z","updated_at":"2015-06-01T17:31:24Z","closed_at":"2015-06-01T14:23:42Z","pull_request":{"url":"https://api.github.com/repos/adelevie/parse-ruby-client/pulls/165","html_url":"https://github.com/adelevie/parse-ruby-client/pull/165","diff_url":"https://github.com/adelevie/parse-ruby-client/pull/165.diff","patch_url":"https://github.com/adelevie/parse-ruby-client/pull/165.patch"},"body":"Following issues #98 - #104 - #151 and #152 I decided to give it a try to start removing the singleton client.\r\n\r\nAs of now this is what I did:\r\n\r\n- Introduced a Parse.create factory method (see @kenn's idea to create a factory method here https://github.com/adelevie/parse-ruby-client/issues/151#issue-50108705)\r\n\r\n- Passed by dependency injection a client to all objects and class methods who called Parse.client (breaking the interface of Parse::Object.new due to ruby limitations in default arguments but I'm going to fix this, possibly by injecting the client using object.client = Parse.client(...) )\r\n\r\n- kept Parse.client as the default if you don't pass a client object along\r\n\r\n- had to implement a Parse.copy_client method because of the machinery to create objects at runtime that can contain other objects\r\n\r\nMy questions are:\r\n\r\n- can we break the API? If so I propose to keep working on this and introduce some factory methods to create the various objects because the public interface - without the singleton - now it's not very handy\r\n\r\n- can I have feedback :-) ?"},"comment":{"url":"https://api.github.com/repos/adelevie/parse-ruby-client/issues/comments/107647756","html_url":"https://github.com/adelevie/parse-ruby-client/pull/165#issuecomment-107647756","issue_url":"https://api.github.com/repos/adelevie/parse-ruby-client/issues/165","id":107647756,"user":{"login":"Xavdidtheshadow","id":1231935,"avatar_url":"https://avatars.githubusercontent.com/u/1231935?v=3","gravatar_id":"","url":"https://api.github.com/users/Xavdidtheshadow","html_url":"https://github.com/Xavdidtheshadow","followers_url":"https://api.github.com/users/Xavdidtheshadow/followers","following_url":"https://api.github.com/users/Xavdidtheshadow/following{/other_user}","gists_url":"https://api.github.com/users/Xavdidtheshadow/gists{/gist_id}","starred_url":"https://api.github.com/users/Xavdidtheshadow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Xavdidtheshadow/subscriptions","organizations_url":"https://api.github.com/users/Xavdidtheshadow/orgs","repos_url":"https://api.github.com/users/Xavdidtheshadow/repos","events_url":"https://api.github.com/users/Xavdidtheshadow/events{/privacy}","received_events_url":"https://api.github.com/users/Xavdidtheshadow/received_events","type":"User","site_admin":false},"created_at":"2015-06-01T17:31:24Z","updated_at":"2015-06-01T17:31:24Z","body":"@adelevie I'd love commit access! \n\n\n\n\nAs for version number, unless the changes would break existing projects we can keep it as a minor version number. \n\n\n\n\nThat being said, if we wanted to go for a 1.0 in the coming months, I think it'd be doable. We'd need to finish the implementations for those last \"TODO\" methods and make sure everything is well documented and tested and we'll be on the road. \n\n\n\n\n\n\n~DB\n\nOn Mon, Jun 1, 2015 at 10:24 AM, Alan deLevie <notifications@github.com>\nwrote:\n\n> Looping in @ericcj in case he has an opinion here.\n> ---\n> Reply to this email directly or view it on GitHub:\n> https://github.com/adelevie/parse-ruby-client/pull/165#issuecomment-107645546"}}