यदि आपके पास प्रतिनिधि विधि तक पहुंच है, तो आप ऐसा कर सकते हैं:
[20] pry(main)> class Foo
[20] pry(main)* def self.bar
[20] pry(main)* "foo bar"
[20] pry(main)* end
[20] pry(main)* delegate :bar, to: 'self.class'
[20] pry(main)* end
=> [:bar]
[21] pry(main)> Foo.new.bar
=> "foo bar"
[22] pry(main)> Foo.bar
=> "foo bar"
वैकल्पिक रूप से, और शायद क्लीनर अगर आपके पास अधिक है तो एक विधि या दो जिसे आप वर्ग और उदाहरण के लिए सौंपना चाहते हैं:
[1] pry(main)> class Foo
[1] pry(main)* module AvailableToClassAndInstance
[1] pry(main)* def bar
[1] pry(main)* "foo bar"
[1] pry(main)* end
[1] pry(main)* end
[1] pry(main)* include AvailableToClassAndInstance
[1] pry(main)* extend AvailableToClassAndInstance
[1] pry(main)* end
=> Foo
[2] pry(main)> Foo.new.bar
=> "foo bar"
[3] pry(main)> Foo.bar
=> "foo bar"
चेतावनी:
बस बेतरतीब ढंग से delegate
सब कुछ न करें जो राज्य को वर्ग और उदाहरण में नहीं बदलता है क्योंकि आप अजीब नाम के टकराव के मुद्दों में भागना शुरू कर देंगे। इसे संयम से करें और आपके द्वारा जाँच के बाद ही कुछ और न लिखा जाए।