{"action":"created","issue":{"url":"https://api.github.com/repos/rmosolgo/graphql-ruby/issues/1684","repository_url":"https://api.github.com/repos/rmosolgo/graphql-ruby","labels_url":"https://api.github.com/repos/rmosolgo/graphql-ruby/issues/1684/labels{/name}","comments_url":"https://api.github.com/repos/rmosolgo/graphql-ruby/issues/1684/comments","events_url":"https://api.github.com/repos/rmosolgo/graphql-ruby/issues/1684/events","html_url":"https://github.com/rmosolgo/graphql-ruby/issues/1684","id":342410522,"node_id":"MDU6SXNzdWUzNDI0MTA1MjI=","number":1684,"title":"[1.8] Objects inheriting Interface definition methods","user":{"login":"swalkinshaw","id":295605,"node_id":"MDQ6VXNlcjI5NTYwNQ==","avatar_url":"https://avatars3.githubusercontent.com/u/295605?v=4","gravatar_id":"","url":"https://api.github.com/users/swalkinshaw","html_url":"https://github.com/swalkinshaw","followers_url":"https://api.github.com/users/swalkinshaw/followers","following_url":"https://api.github.com/users/swalkinshaw/following{/other_user}","gists_url":"https://api.github.com/users/swalkinshaw/gists{/gist_id}","starred_url":"https://api.github.com/users/swalkinshaw/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swalkinshaw/subscriptions","organizations_url":"https://api.github.com/users/swalkinshaw/orgs","repos_url":"https://api.github.com/users/swalkinshaw/repos","events_url":"https://api.github.com/users/swalkinshaw/events{/privacy}","received_events_url":"https://api.github.com/users/swalkinshaw/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2018-07-18T16:51:05Z","updated_at":"2018-07-19T14:02:46Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"This is in reference to the feature added here: https://github.com/rmosolgo/graphql-ruby/pull/1635. Objects that implement an interface also get their definition methods now.\r\n\r\nI'm curious about the reasoning behind this feature. I don't really agree with the idea that Interfaces definition methods should be included in objects that implement them. Although Interfaces are Ruby Modules, it seems to be conflating them. If you want shared behaviour between an Interface and an Object, why not use a plain Module and include them in both places?\r\n\r\nBackground: I'm migrating our codebase to use the new modules and this feature has caused large issues. We have common methods in both interfaces and objects and now they are getting overridden by the Interface's version. I'm running a fork right now where I've removed this, and it fixes (most) of our issues.\r\n\r\ncc @joostverdoorn as well. Maybe you have some valid uses cases you can share."},"comment":{"url":"https://api.github.com/repos/rmosolgo/graphql-ruby/issues/comments/406287029","html_url":"https://github.com/rmosolgo/graphql-ruby/issues/1684#issuecomment-406287029","issue_url":"https://api.github.com/repos/rmosolgo/graphql-ruby/issues/1684","id":406287029,"node_id":"MDEyOklzc3VlQ29tbWVudDQwNjI4NzAyOQ==","user":{"login":"eapache","id":1706826,"node_id":"MDQ6VXNlcjE3MDY4MjY=","avatar_url":"https://avatars1.githubusercontent.com/u/1706826?v=4","gravatar_id":"","url":"https://api.github.com/users/eapache","html_url":"https://github.com/eapache","followers_url":"https://api.github.com/users/eapache/followers","following_url":"https://api.github.com/users/eapache/following{/other_user}","gists_url":"https://api.github.com/users/eapache/gists{/gist_id}","starred_url":"https://api.github.com/users/eapache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eapache/subscriptions","organizations_url":"https://api.github.com/users/eapache/orgs","repos_url":"https://api.github.com/users/eapache/repos","events_url":"https://api.github.com/users/eapache/events{/privacy}","received_events_url":"https://api.github.com/users/eapache/received_events","type":"User","site_admin":false},"created_at":"2018-07-19T14:02:46Z","updated_at":"2018-07-19T14:02:46Z","author_association":"CONTRIBUTOR","body":"🤔 \r\n\r\n> We have common methods in both interfaces and objects and now they are getting overridden by the Interface's version.\r\n\r\nThis is the core issue isn't it? A method definition on an object should take precedence over any method definitions provided by any interfaces? But I'm confused why this is an issue, because Ruby Modules already work this way (a local method takes precedence over one in a module)."}}
{"actor":{"display_login":"eapache"}}