ruby-core

Mailing list archive

[ruby-core:66868] [ruby-trunk - Bug #10603] [Open] Ruby process memory is crashing

From: aruprakshit@...
Date: 2014-12-16 04:23:52 UTC
List: ruby-core #66868
Issue #10603 has been reported by arup rakshit.

----------------------------------------
Bug #10603: Ruby process memory is crashing
https://bugs.ruby-lang.org/issues/10603

* Author: arup rakshit
* Status: Open
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.1.4p265 (2014-10-27 revision 48166) [i686-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
I got one issue while I was writing tests in RSpec framework for my some ruby codes.

Issue I found, when I wrote the below code :

      describe "::add" do
        let(:item) { double(item) }

        it 'should store the item on the class' do
          subject.add(item)
          expect(subject.all).to include(item)
        end
      end

My complete code for which I was writing test :-

    =========================
    simple_store.rb
    =========================
    class SimpleStore
      def initialize(attributes = {})
        update(attributes)
      end
    
      def destroy
        self.class.remove(self)
        self.freeze
      end
    
      def update(attributes)
        attributes.each_pair do |attribute, value|
          self.public_send "#{attribute}=", value
        end
      end
    
      def save
        self.class.add(self)
      end
    
      def id
        self.class.items.key(self)
      end
    
      def self.add(item)
        items.store(next_id, item)
      end
    
      def self.all
        items.values
      end
    
      def self.create(*arguments)
        item = new(*arguments)
        add(item)
        item
      end
    
      def self.items
        @items ||= Hash.new
      end
    
      def self.get(id)
        items.fetch(id.to_i)
      end
    
      def self.remove(item)
        items.delete(item.id)
      end
    
      def self.next_id
        @next_id ||= 0
        @next_id += 1
      end
    end

And the corresponding test :-

    require 'rspec'
    require './simple_store'
    
    describe SimpleStore do
      describe 'instance methods' do
        let(:subject_class) { Class.new(described_class) }
    
        subject { subject_class.new }
    
        describe "#save" do
          it 'stores the item on the class' do
            subject.save
            expect(subject_class.all).to include(subject)
          end
        end
    
        describe "#destroy" do
          before do
            subject_class.add(subject)
          end
    
          it 'removes the item from the class storage' do
            subject.destroy
            expect(subject_class.all).not_to include(subject)
          end
        end
    
        describe "#id" do
          before do
            subject_class.add(subject)
          end
    
          it 'returns the key that has been saved to in the collection' do
            expect(subject.id).to eq(1)
          end
        end
    
        describe 'class methods' do
          subject { Class.new(described_class) }
    
          describe '::all' do
            it 'should  be empty until something has been added' do
              expect(subject.all).to be_empty
            end
          end
    
          describe "::add" do
            let(:item) { double(item) }
    
            it 'should store the item on the class' do
              subject.add(item)
              expect(subject.all).to include(item)
            end
          end
    
          describe "::create" do
            it 'should create a new item, store it into the class and return it' do
              new_item = subject.create
              expect(subject.all).to include(new_item)
            end
          end
        end
      end
    end

=============
Here is some more details about my environment :-

[arup@to_do_app]$ ruby -v
ruby 2.1.4p265 (2014-10-27 revision 48166) [i686-linux]
[arup@to_do_app]$ gem list --local

*** LOCAL GEMS ***

bigdecimal (1.2.4)
bundler (1.7.4)
bundler-unload (1.0.2)
diff-lcs (1.2.5)
executable-hooks (1.3.2)
gem-wrappers (1.2.7)
io-console (0.4.2)
json (1.8.1)
minitest (4.7.5)
psych (2.0.5)
rack (1.5.2)
rack-protection (1.5.3)
rake (10.1.0)
rdoc (4.1.0)
rspec (3.1.0)
rspec-core (3.1.7)
rspec-expectations (3.1.2)
rspec-mocks (3.1.3)
rspec-support (3.1.2)
rubygems-bundler (1.4.4)
rvm (1.11.3.9)
sinatra (1.4.5)
test-unit (2.1.4.0)
tilt (1.4.1)
[arup@to_do_app]$

Please find the attached error file, which is I am getting due to the `rspec spec/simple_store_spec.rb`.

---Files--------------------------------
error.txt (28.1 KB)


-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next