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 +4 -4
- data/.gitignore +26 -0
- data/.travis.yml +18 -0
- data/Gemfile +2 -0
- data/README.md +63 -0
- data/lib/versionable.rb +51 -0
- data/lib/versions.rb +13 -10
- data/lib/versions/class_helpers.rb +34 -0
- data/lib/versions/configurable.rb +32 -0
- data/lib/versions/errors/version_not_available.rb +4 -0
- data/lib/versions/file_helpers.rb +31 -0
- data/lib/versions/string_helpers.rb +26 -0
- data/spec/fixtures/v1/sample_library.rb +7 -0
- data/spec/fixtures/v2.1/sample_library.rb +14 -0
- data/spec/fixtures/v3.2.1/sample_library.rb +7 -0
- data/spec/lib/versionable_spec.rb +45 -0
- data/spec/lib/versions_spec.rb +57 -0
- data/spec/spec_helper.rb +20 -0
- data/versions.rb.gemspec +25 -0
- metadata +83 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fac1013f437cd729493033b888daa6876e4240e
|
4
|
+
data.tar.gz: 7565ddf6130285ba36e2d527e604a213907afcee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
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
|
data/lib/versionable.rb
ADDED
@@ -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 '
|
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(
|
19
|
-
new(
|
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
|
-
#
|
69
|
+
# library - Symbol or String of the library name
|
67
70
|
#
|
68
71
|
# Returns a new instance
|
69
|
-
def initialize(
|
70
|
-
@library_name =
|
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,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,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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|
data/versions.rb.gemspec
ADDED
@@ -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:
|
4
|
+
version: '1.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Sean Callan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
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.
|
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
|
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:
|
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:
|
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.
|
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.
|
69
|
-
description: Versions.rb
|
70
|
-
|
71
|
-
email:
|
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
|
-
-
|
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.
|
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.
|
157
|
+
rubygems_version: 2.0.14
|
99
158
|
signing_key:
|
100
159
|
specification_version: 4
|
101
|
-
summary:
|
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:
|