Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 130721
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T05:59:33+00:00 2026-05-11T05:59:33+00:00

I know there is no concept of an abstract class in Ruby. But if

  • 0

I know there is no concept of an abstract class in Ruby. But if it needs to be implemented, how do I go about it? I tried something like this:

class A   def self.new     raise 'Doh! You are trying to write Java in Ruby!'   end end  class B < A   ...   ... end 

But, when I try to instantiate B, it is internally going to call A.new which is going to raise the exception.

Also, modules cannot be instantiated, but they cannot be inherited too. Making the new method private will also not work.

Does anyone have any pointers?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T05:59:34+00:00Added an answer on May 11, 2026 at 5:59 am

    I don’t like using abstract classes in Ruby (there’s almost always a better way). If you really think it’s the best technique for the situation though, you can use the following snippet to be more declarative about which methods are abstract:

    module Abstract   def abstract_methods(*args)     args.each do |name|       class_eval(<<-END, __FILE__, __LINE__)         def #{name}(*args)           raise NotImplementedError.new('You must implement #{name}.')         end       END       # important that this END is capitalized, since it marks the end of <<-END     end   end end  require 'rubygems' require 'rspec'  describe 'abstract methods' do   before(:each) do     @klass = Class.new do       extend Abstract        abstract_methods :foo, :bar     end   end    it 'raises NoMethodError' do     proc {       @klass.new.foo     }.should raise_error(NoMethodError)   end    it 'can be overridden' do     subclass = Class.new(@klass) do       def foo         :overridden       end     end      subclass.new.foo.should == :overridden   end end 

    Basically, you just call abstract_methods with the list of methods that are abstract, and when they get called by an instance of the abstract class, a NotImplementedError exception will be raised.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I know there are already a lot of articles about this concept but my
I know there are other posts like this, but I don't know if its
I know that probably there is no concept of scope for macros, but please
I know there have been a few threads on this before, but I have
I know that there is no concept of threads in current C++ , but
I know there are plenty of other questions addressing the same problem, but since
I know there should not be multiple publishers publishing the same event. But how
I know there is a registry key indicating the install directory, but I don't
I know there are a lot of positive things mod-rewrite accomplishes. But are there
I know there are quite a few line count tools around. Is there something

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.