versions.rb 0.1.1 → 1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 046f37b7141e3bbca1436bcfdaf16a0be79c721c
4
- data.tar.gz: 16f3cc8ed2e379a9cf154cc6add663bc4788060f
3
+ metadata.gz: 3fac1013f437cd729493033b888daa6876e4240e
4
+ data.tar.gz: 7565ddf6130285ba36e2d527e604a213907afcee
5
5
  SHA512:
6
- metadata.gz: bee3c591304e503f4ab60cbccfedbbf1d73214cebde7126be572bc5e9ec13ea73ab533bbc56232a321c92ece808a7d4226440d7b0a69c1f74b0d972408be389a
7
- data.tar.gz: c5170793897cd54cb037df8cd197ac8dd4abf8121737dbe44464ae7efb76be42dbfd806f11c6da80df065e54c2e8c9b5024f409acb9f09cd908ad11fe3bd2d85
6
+ metadata.gz: cb9fe45414b32700606c4eae1e6a2881722a7cf54d7b276ec516a75a71db93cbdc3a9c57681d121547428a8201a27278b4ee2e5bd0f15a32188845b4a2cb3ffb
7
+ data.tar.gz: 7836b77b3f8281022134c507d544ce08adfc31142a34f74ef14f6c531b6c5e992eaf197647169482297a91b91758073efd987350ca9df043dcfccfe80207d6f4
data/.gitignore ADDED
@@ -0,0 +1,26 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Documentation cache and generated files:
13
+ /.yardoc/
14
+ /_yardoc/
15
+ /doc/
16
+ /rdoc/
17
+
18
+ ## Environment normalisation:
19
+ /.bundle/
20
+ /lib/bundler/man/
21
+
22
+ Gemfile.lock
23
+ .ruby-version
24
+ .ruby-gemset
25
+
26
+ .rvmrc
data/.travis.yml ADDED
@@ -0,0 +1,18 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.1
4
+ - 2.0.0
5
+ - 1.9.3
6
+ - 1.9.2
7
+ - jruby-19mode
8
+ - ruby-head
9
+ - jruby-head
10
+ jdk:
11
+ - openjdk7
12
+ - oraclejdk7
13
+ - openjdk6
14
+ script: rspec
15
+ matrix:
16
+ allow_failures:
17
+ - rvm: ruby-head
18
+ - rvm: jruby-head
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/README.md ADDED
@@ -0,0 +1,63 @@
1
+ # Versions.rb
2
+
3
+ _"Ruby class versioning made simple."_
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/versions.rb.png)](https://rubygems.org/gems/versions.rb) [![Build Status](https://travis-ci.org/doomspork/versions.rb.png?branch=master)](https://travis-ci.org/doomspork/versions.rb) [![Code Climate](https://codeclimate.com/github/doomspork/versions.rb.png)](https://codeclimate.com/github/doomspork/versions.rb) [![Coverage Status](https://coveralls.io/repos/doomspork/versions.rb/badge.png?branch=master)](https://coveralls.io/r/doomspork/versions.rb)
6
+
7
+ Ruby 1.9, 2.0, 2.1, and JRuby supported.
8
+
9
+ ## Quickstart
10
+
11
+ Install it:
12
+
13
+ `gem install versions.rb`
14
+
15
+ Create a version (`lib/v1.0/awesome_feature.rb`):
16
+
17
+ ```ruby
18
+ module V1_0
19
+ class AwesomeFeature
20
+ def foo
21
+ :bar
22
+ end
23
+ end
24
+ end
25
+ ```
26
+
27
+ Use it:
28
+
29
+ ```ruby
30
+ VersionedFeature = Versions.for(:awesome_feature).select('1.0')
31
+ feature = VersionedFeature.new
32
+ ```
33
+
34
+ ## Configuration
35
+
36
+ #### File locations
37
+ By default Versions.rb will try to use a `lib/` directory within the project root, you can override this:
38
+
39
+ ```ruby
40
+ Versions.config.base_dir = 'dir_path_of_your_choosing'
41
+ ```
42
+
43
+ Alternatively you can override the `base_dir` for a single call as such:
44
+
45
+ ```ruby
46
+ Versions.for(:awesome_feature).at('./other/location').select('1.0')
47
+ ```
48
+
49
+ ## Contributing
50
+
51
+ Please make appropriate use of [Issues][issues] and [Pull Requests][pr]. All code should have accompanying tests.
52
+
53
+ ## Author/Contact
54
+
55
+ Versions.rb is written and maintained by [@doomspork](https://github.com/doomspork)
56
+
57
+ ## License
58
+
59
+ Versions.rb is made available under the [MIT][mit] license.
60
+
61
+ [issues]: https://github.com/doomspork/versions.rb/issues
62
+ [pr]: https://github.com/doomspork/versions.rb/pulls
63
+ [mit]: LICENSE
@@ -0,0 +1,51 @@
1
+ module Versionable
2
+ extend Forwardable
3
+
4
+ DEFAULT_PATH = File.join(File.dirname(__FILE__), '')
5
+
6
+ def_delegators :@versions, :versions, :available?, :select
7
+
8
+ def self.included(base)
9
+ base.extend(ClassMethods)
10
+ end
11
+
12
+ module ClassMethods
13
+ def instance_of!(version, *args)
14
+ version = version.to_sym
15
+ versioned_class = loaded_versions[version]
16
+ instance = versioned_class.new(*args)
17
+ instance.instance_variable_set(:@instance_version, version)
18
+ instance
19
+ end
20
+
21
+ def instance_of(version, *args)
22
+ begin
23
+ instance_of!(version, args)
24
+ rescue Versions::VersionNotAvailableError
25
+ nil
26
+ end
27
+ end
28
+
29
+ def versions_path(path)
30
+ @versions_path = path
31
+ end
32
+
33
+ private
34
+
35
+ def versions_directory
36
+ @versions_path || DEFAULT_PATH
37
+ end
38
+
39
+ def loaded_versions
40
+ @loaded_versions ||= Hash.new { |hash, key| hash[key] = versions_rb.select(key) }
41
+ end
42
+
43
+ def versions_rb
44
+ @versions_rb ||= Versions.for(self.name).at(versions_directory)
45
+ end
46
+ end
47
+
48
+ def version
49
+ @instances_version
50
+ end
51
+ end
data/lib/versions.rb CHANGED
@@ -1,27 +1,29 @@
1
- require 'versions/versionable.rb'
1
+ require 'versionable.rb'
2
2
  require 'versions/configurable.rb'
3
3
  require 'versions/file_helpers.rb'
4
4
  require 'versions/class_helpers.rb'
5
+ require 'versions/string_helpers.rb'
6
+ require 'versions/errors/version_not_available.rb'
5
7
 
6
8
  class Versions
7
- extend Versionable
8
9
  extend Configurable
9
10
 
10
11
  include FileHelpers
11
12
  include ClassHelpers
13
+ include StringHelpers
12
14
 
13
15
  # Public: Sets up and returns a new instance
14
16
  #
15
17
  # mod - Symbol or String of the library name
16
18
  #
17
19
  # Returns an instance of Versions
18
- def self.for(mod)
19
- new(mod)
20
+ def self.for(library)
21
+ new(library)
20
22
  end
21
23
 
22
24
  # Public: Sets the base directory for this instance
23
25
  #
24
- # path - path to the directory
26
+ # path - path to the directory
25
27
  #
26
28
  # Returns self
27
29
  def at(path)
@@ -36,6 +38,7 @@ class Versions
36
38
  # Returns the versioned Class
37
39
  # Raises VersionNotAvailableError
38
40
  def select(version)
41
+ version = version.to_sym
39
42
  if file = mapped_versions[version]
40
43
  load_class(version, file)
41
44
  else
@@ -49,7 +52,7 @@ class Versions
49
52
  #
50
53
  # Returns a Boolean
51
54
  def available?(version)
52
- !!mapped_versions[version]
55
+ !!mapped_versions[version.to_sym]
53
56
  end
54
57
 
55
58
  # Public: Get the available versions
@@ -63,15 +66,15 @@ class Versions
63
66
 
64
67
  # Internal: Create a new instance
65
68
  #
66
- # mod - Symbol or String of the library name
69
+ # library - Symbol or String of the library name
67
70
  #
68
71
  # Returns a new instance
69
- def initialize(mod)
70
- @library_name = mod.to_s
72
+ def initialize(library)
73
+ @library_name = snake_case(library.to_s)
71
74
  end
72
75
 
73
76
  # Internal: An internal map of versions and their respective files,
74
- # the Hash keys are version strings and files as value.
77
+ # the Hash keys are version strings and files as value.
75
78
  #
76
79
  # Returns a Hash
77
80
  def mapped_versions
@@ -0,0 +1,34 @@
1
+ class Versions
2
+ module ClassHelpers
3
+ protected
4
+
5
+ # Internal: The ClassName of the Library
6
+ #
7
+ # Returns a String
8
+ def library_name
9
+ camel_case(@library_name)
10
+ end
11
+
12
+ # Internal: Get the fully qualified class name with version
13
+ #
14
+ # version - the version selected
15
+ #
16
+ # Returns a String
17
+ def versioned_class_name(version)
18
+ safe_version = version.to_s.gsub(/\./, '_')
19
+ "#{Versions.config.class_prefix}#{safe_version}::#{library_name}"
20
+ end
21
+
22
+ # Internal: Load and return the Class
23
+ #
24
+ # version - the selected version
25
+ # file - the file path
26
+ #
27
+ # Returns a Class
28
+ def load_class(version, file)
29
+ require file
30
+ name = versioned_class_name(version)
31
+ name.split('::').inject(Object) { |obj, klz| obj.const_get(klz) }
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,32 @@
1
+ class Versions
2
+ module Configurable
3
+
4
+ # A simple configuration wrapper
5
+ class Config
6
+ attr_accessor :base_dir, :version_pattern, :class_prefix
7
+
8
+ # The default base directory path
9
+ BASE_DIR = File.join(Dir.pwd, 'lib')
10
+ # The default filename pattern
11
+ VERSION_PATTERN = /v(?:ersion)?[-_]?((\d+(?:\.\d+)*))/i
12
+ # The default class prefix
13
+ CLASS_PREFIX = 'V'
14
+
15
+ # Public: Create a new instance with default values
16
+ #
17
+ # Returns a new instance
18
+ def initialize
19
+ self.base_dir = BASE_DIR
20
+ self.version_pattern = VERSION_PATTERN
21
+ self.class_prefix = CLASS_PREFIX
22
+ end
23
+ end
24
+
25
+ # Public: Versions.rb configuration instance
26
+ #
27
+ # Returns an instance of Config
28
+ def config
29
+ @config ||= Config.new
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,4 @@
1
+ class Versions
2
+ class VersionNotAvailableError < Exception
3
+ end
4
+ end
@@ -0,0 +1,31 @@
1
+ class Versions
2
+ module FileHelpers
3
+ protected
4
+
5
+ # Internal: Parse a file path into a version string
6
+ #
7
+ # path - the file path to parse
8
+ #
9
+ # Returns a version String or nil
10
+ def parse_filepath(path)
11
+ (match = Versions.config.version_pattern.match(path)) ? match[1] : nil
12
+ end
13
+
14
+ # Internal: Create a map of versions and files
15
+ #
16
+ # Returns a Hash
17
+ def map_file_versions
18
+ file_path = File.join(path, '**', "#{@library_name}.rb")
19
+ files = Dir[file_path] || {}
20
+ files.inject({}) do |memo, path|
21
+ version_key = parse_filepath(path)
22
+ memo[version_key.to_sym] = path if version_key
23
+ memo
24
+ end
25
+ end
26
+
27
+ def path
28
+ @path ||= Versions.config.base_dir
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ class Versions
2
+ module StringHelpers
3
+ # Internal: Make a String CamelCase
4
+ #
5
+ # str- to make CamelCase String
6
+ #
7
+ # Returns a String
8
+ def camel_case(str)
9
+ str.to_s.split(/[ _]/).map(&:capitalize).join('')
10
+ end
11
+
12
+ # Internal: Make a String snake_case
13
+ # Implementation borrowed from ActiveSupport
14
+ #
15
+ # str - to make snake_case String
16
+ #
17
+ # Returns a String
18
+ def snake_case(str)
19
+ str.gsub(/::/, '/').
20
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
21
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
22
+ tr("-", "_").
23
+ downcase
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,7 @@
1
+ module V1
2
+ class SampleLibrary
3
+ def version
4
+ '1'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ module V2_1
2
+ class SampleLibrary
3
+ attr_accessor :one, :two
4
+
5
+ def initialize(one = 1, two = 2)
6
+ self.one = one
7
+ self.two = two
8
+ end
9
+
10
+ def version
11
+ '2.1'
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module V3_2_1
2
+ class SampleLibrary
3
+ def version
4
+ '3.2.1'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ class SampleLibrary
4
+ include Versionable
5
+
6
+ versions_path File.join(File.dirname(__FILE__), '..', 'fixtures')
7
+ end
8
+
9
+ describe Versionable do
10
+ subject { SampleLibrary }
11
+
12
+ describe '.instance_of!' do
13
+ context 'with available version' do
14
+ it 'will return the class' do
15
+ vers = subject.instance_of!('2.1')
16
+ expect(vers.version).to eql '2.1'
17
+ expect(vers).to instance_of V2_1::SampleLibrary
18
+ end
19
+
20
+ context 'with additional paramaters' do
21
+ it 'will pass them to the constructor' do
22
+ vers = subject.instance_of!('2.1', 0, 0)
23
+ expect(vers.one).to eql 0
24
+ expect(vers.two).to eql 0
25
+ end
26
+ end
27
+ end
28
+
29
+ context 'with missing version' do
30
+ it 'will be raise an error' do
31
+ expect { subject.instance_of!('4.2.0') }.to raise_error Versions::VersionNotAvailableError
32
+ end
33
+ end
34
+ end
35
+
36
+ describe '.instance_of' do
37
+ context 'with missing version' do
38
+ it 'will return nil' do
39
+ vers = subject.instance_of('4.2.0')
40
+ expect(vers).to be_nil
41
+ end
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ describe Versions do
4
+ subject { Versions.for(:sample_library) }
5
+
6
+ let(:fixture_path) { File.join(File.dirname(__FILE__), '..', 'fixtures') }
7
+
8
+ before { Versions.config.base_dir = fixture_path }
9
+
10
+ describe '#available?' do
11
+ context 'with existing version' do
12
+ it 'will be true' do
13
+ avail = subject.available? '1'
14
+ expect(avail).to be_truthy
15
+ end
16
+ end
17
+
18
+ context 'with missing version' do
19
+ it 'will be false' do
20
+ avail = subject.available? '4.2.0'
21
+ expect(avail).to be_falsey
22
+ end
23
+ end
24
+ end
25
+
26
+ describe '#versions' do
27
+ it 'returns an Array of available versions' do
28
+ vers = subject.versions
29
+ expect(vers.size).to eql 3
30
+ end
31
+ end
32
+
33
+ describe '#at' do
34
+ before { Versions.config.base_dir = nil }
35
+
36
+ it 'will override the base dir for this instance' do
37
+ vers = subject.at(fixture_path).versions
38
+ expect(vers.size).to eql 3
39
+ end
40
+ end
41
+
42
+ describe '#select' do
43
+ context 'with available version' do
44
+ it 'will return the class' do
45
+ vers = subject.select('2.1')
46
+ expect(vers).to eql V2_1::SampleLibrary
47
+ end
48
+ end
49
+
50
+ context 'with missing version' do
51
+ it 'will be raise an error' do
52
+ expect { subject.select('4.2.0') }.to raise_error
53
+ end
54
+ end
55
+ end
56
+
57
+ end
@@ -0,0 +1,20 @@
1
+ require 'simplecov'
2
+ require 'pry'
3
+
4
+ ENV['RACK_ENV'] = 'test'
5
+
6
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter if defined?(Coveralls)
7
+
8
+ # Configure code coverage reporting
9
+ SimpleCov.start do
10
+ add_filter '/spec/'
11
+ coverage_dir 'docs/coverage'
12
+ end
13
+
14
+ require 'versions'
15
+
16
+ Dir['./spec/support/**/*.rb'].each { |f| require f }
17
+
18
+ RSpec.configure do |config|
19
+ config.mock_framework = :rr
20
+ end
@@ -0,0 +1,25 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'versions.rb'
3
+ s.version = '1.0'
4
+ s.summary = 'Support for versioned class definitions.'
5
+ s.description = 'Using simple namespacing Versions.rb lets you load versions of your code on-demand.'
6
+ s.authors = ['Sean Callan']
7
+ s.email = 'seancallan@gmail.com'
8
+ s.homepage = 'https://github.com/doomspork/versions.rb'
9
+ s.license = 'MIT'
10
+
11
+ s.files = `git ls-files -z`.split("\x0")
12
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
13
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
14
+ s.require_paths = ['lib']
15
+
16
+ s.required_ruby_version = '> 1.9'
17
+
18
+ s.add_development_dependency 'bundler', '~> 1.7'
19
+ s.add_development_dependency 'coveralls', '~> 0.7' unless RUBY_PLATFORM =~ /java/
20
+ s.add_development_dependency 'pry', '~> 0.10'
21
+ s.add_development_dependency 'rake', '~> 10.0'
22
+ s.add_development_dependency 'rr', '~> 1.1.2'
23
+ s.add_development_dependency 'rspec', '~> 3.1'
24
+ s.add_development_dependency 'simplecov', '~> 0.9'
25
+ end
metadata CHANGED
@@ -1,29 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: versions.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
- - doomspork
7
+ - Sean Callan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-03 00:00:00.000000000 Z
11
+ date: 2015-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: coveralls
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.7'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.7'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: pry
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - ~>
18
46
  - !ruby/object:Gem::Version
19
- version: 0.9.12.6
47
+ version: '0.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
20
62
  type: :development
21
63
  prerelease: false
22
64
  version_requirements: !ruby/object:Gem::Requirement
23
65
  requirements:
24
66
  - - ~>
25
67
  - !ruby/object:Gem::Version
26
- version: 0.9.12.6
68
+ version: '10.0'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: rr
29
71
  requirement: !ruby/object:Gem::Requirement
@@ -44,37 +86,54 @@ dependencies:
44
86
  requirements:
45
87
  - - ~>
46
88
  - !ruby/object:Gem::Version
47
- version: 2.14.1
89
+ version: '3.1'
48
90
  type: :development
49
91
  prerelease: false
50
92
  version_requirements: !ruby/object:Gem::Requirement
51
93
  requirements:
52
94
  - - ~>
53
95
  - !ruby/object:Gem::Version
54
- version: 2.14.1
96
+ version: '3.1'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: simplecov
57
99
  requirement: !ruby/object:Gem::Requirement
58
100
  requirements:
59
101
  - - ~>
60
102
  - !ruby/object:Gem::Version
61
- version: 0.8.2
103
+ version: '0.9'
62
104
  type: :development
63
105
  prerelease: false
64
106
  version_requirements: !ruby/object:Gem::Requirement
65
107
  requirements:
66
108
  - - ~>
67
109
  - !ruby/object:Gem::Version
68
- version: 0.8.2
69
- description: Versions.rb provides a simple method for handling libraries that require
70
- versioning.
71
- email: iamdoomspork@gmail.com
110
+ version: '0.9'
111
+ description: Using simple namespacing Versions.rb lets you load versions of your code
112
+ on-demand.
113
+ email: seancallan@gmail.com
72
114
  executables: []
73
115
  extensions: []
74
116
  extra_rdoc_files: []
75
117
  files:
76
- - lib/versions.rb
118
+ - .gitignore
119
+ - .travis.yml
120
+ - Gemfile
77
121
  - LICENSE
122
+ - README.md
123
+ - lib/versionable.rb
124
+ - lib/versions.rb
125
+ - lib/versions/class_helpers.rb
126
+ - lib/versions/configurable.rb
127
+ - lib/versions/errors/version_not_available.rb
128
+ - lib/versions/file_helpers.rb
129
+ - lib/versions/string_helpers.rb
130
+ - spec/fixtures/v1/sample_library.rb
131
+ - spec/fixtures/v2.1/sample_library.rb
132
+ - spec/fixtures/v3.2.1/sample_library.rb
133
+ - spec/lib/versionable_spec.rb
134
+ - spec/lib/versions_spec.rb
135
+ - spec/spec_helper.rb
136
+ - versions.rb.gemspec
78
137
  homepage: https://github.com/doomspork/versions.rb
79
138
  licenses:
80
139
  - MIT
@@ -85,9 +144,9 @@ require_paths:
85
144
  - lib
86
145
  required_ruby_version: !ruby/object:Gem::Requirement
87
146
  requirements:
88
- - - '>='
147
+ - - '>'
89
148
  - !ruby/object:Gem::Version
90
- version: 1.8.7
149
+ version: '1.9'
91
150
  required_rubygems_version: !ruby/object:Gem::Requirement
92
151
  requirements:
93
152
  - - '>='
@@ -95,9 +154,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
154
  version: '0'
96
155
  requirements: []
97
156
  rubyforge_project:
98
- rubygems_version: 2.0.3
157
+ rubygems_version: 2.0.14
99
158
  signing_key:
100
159
  specification_version: 4
101
- summary: Ruby class versioning made simple.
102
- test_files: []
160
+ summary: Support for versioned class definitions.
161
+ test_files:
162
+ - spec/fixtures/v1/sample_library.rb
163
+ - spec/fixtures/v2.1/sample_library.rb
164
+ - spec/fixtures/v3.2.1/sample_library.rb
165
+ - spec/lib/versionable_spec.rb
166
+ - spec/lib/versions_spec.rb
167
+ - spec/spec_helper.rb
103
168
  has_rdoc: