feature_definitions 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +10 -0
- data/Gemfile +6 -3
- data/README.rdoc +32 -2
- data/Rakefile +24 -21
- data/VERSION +1 -1
- data/feature_definitions.gemspec +12 -7
- data/lazy_const.gemspec +66 -0
- data/lib/feature_definitions.rb +15 -9
- data/test/test_feature_definitions.rb +71 -14
- metadata +30 -12
data/.travis.yml
ADDED
data/Gemfile
CHANGED
@@ -2,13 +2,16 @@ source "http://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
|
-
gem 'lazy_const'
|
5
|
+
gem 'lazy_const', '~> 0.1.3'
|
6
6
|
|
7
7
|
# Add dependencies to develop your gem here.
|
8
8
|
# Include everything needed to run rake, tests, features, etc.
|
9
9
|
group :development do
|
10
10
|
gem "minitest", ">= 0"
|
11
|
-
gem "rdoc", "~> 3.12"
|
12
11
|
gem "bundler"
|
13
|
-
gem
|
12
|
+
gem 'rake'
|
13
|
+
unless ENV['TRAVIS']
|
14
|
+
gem "rdoc", "~> 3.12"
|
15
|
+
gem "jeweler", "~> 1.8.4"
|
16
|
+
end
|
14
17
|
end
|
data/README.rdoc
CHANGED
@@ -1,25 +1,55 @@
|
|
1
1
|
= feature_definitions
|
2
2
|
|
3
|
+
{<img src="https://travis-ci.org/rmg/feature_definitions.png?branch=master" alt="Build Status" />}[https://travis-ci.org/rmg/feature_definitions]
|
4
|
+
|
3
5
|
A minimal useful feature toggle mechanism.
|
4
6
|
|
7
|
+
Thanks to Travis-CI, tested on:
|
8
|
+
- "1.8.7"
|
9
|
+
- "1.9.2"
|
10
|
+
- "1.9.3"
|
11
|
+
- "2.0.0"
|
12
|
+
- jruby-18mode # JRuby in 1.8 mode
|
13
|
+
- jruby-19mode # JRuby in 1.9 mode
|
14
|
+
- rbx-18mode
|
15
|
+
- rbx-19mode
|
16
|
+
|
5
17
|
== Installation
|
6
18
|
|
7
19
|
gem 'feature_definitions'
|
8
20
|
|
9
21
|
== Example
|
10
22
|
|
23
|
+
=== Using constructor
|
24
|
+
lib/features.rb:
|
25
|
+
class Features < FeatureDefinitions
|
26
|
+
AWESOME = self.new {|flags| flags.is_awesome? }
|
27
|
+
end
|
28
|
+
|
29
|
+
app/main.rb:
|
30
|
+
Features.context = args_to_flags
|
31
|
+
|
32
|
+
app/elsewhere.rb
|
33
|
+
def some_method
|
34
|
+
Features.AWESOME.enabled? do
|
35
|
+
# do feature
|
36
|
+
end
|
37
|
+
# else noop
|
38
|
+
end
|
39
|
+
|
40
|
+
=== Rails (and define_feature helper)
|
11
41
|
Rails is *NOT* required, but this is how you would use this gem with Rails.
|
12
42
|
|
13
43
|
app/model/features.rb:
|
14
44
|
class Features < FeatureDefinitions
|
15
|
-
define_feature :AWESOME
|
45
|
+
define_feature :AWESOME do |user|
|
16
46
|
user.is_awesome?
|
17
47
|
end
|
18
48
|
end
|
19
49
|
|
20
50
|
app/controller/application_controller.rb:
|
21
51
|
class ApplicationController < ActionController::Base
|
22
|
-
before_filter { |controller| Features.context = controller }
|
52
|
+
before_filter { |controller| Features.context = controller.current_user }
|
23
53
|
end
|
24
54
|
|
25
55
|
app/views/some/view.erb.html:
|
data/Rakefile
CHANGED
@@ -11,19 +11,31 @@ rescue Bundler::BundlerError => e
|
|
11
11
|
end
|
12
12
|
require 'rake'
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
14
|
+
unless ENV['TRAVIS']
|
15
|
+
require 'jeweler'
|
16
|
+
Jeweler::Tasks.new do |gem|
|
17
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
18
|
+
gem.name = "feature_definitions"
|
19
|
+
gem.homepage = "http://github.com/rmg/feature_definitions"
|
20
|
+
gem.license = "MIT"
|
21
|
+
gem.summary = %Q{Simple and flexible feature definition}
|
22
|
+
gem.description = %Q{Simple and flexible feature toggle defintion}
|
23
|
+
gem.email = "r.m.graham@gmail.com"
|
24
|
+
gem.authors = ["Ryan Graham"]
|
25
|
+
# dependencies defined in Gemfile
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rdoc/task'
|
30
|
+
Rake::RDocTask.new do |rdoc|
|
31
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
32
|
+
|
33
|
+
rdoc.rdoc_dir = 'rdoc'
|
34
|
+
rdoc.title = "feature_definitions #{version}"
|
35
|
+
rdoc.rdoc_files.include('README*')
|
36
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
37
|
+
end
|
25
38
|
end
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
27
39
|
|
28
40
|
require 'rake/testtask'
|
29
41
|
Rake::TestTask.new(:test) do |test|
|
@@ -34,12 +46,3 @@ end
|
|
34
46
|
|
35
47
|
task :default => :test
|
36
48
|
|
37
|
-
require 'rdoc/task'
|
38
|
-
Rake::RDocTask.new do |rdoc|
|
39
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
|
-
|
41
|
-
rdoc.rdoc_dir = 'rdoc'
|
42
|
-
rdoc.title = "feature_definitions #{version}"
|
43
|
-
rdoc.rdoc_files.include('README*')
|
44
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
45
|
-
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/feature_definitions.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "feature_definitions"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ryan Graham"]
|
@@ -18,12 +18,14 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
+
".travis.yml",
|
21
22
|
"Gemfile",
|
22
23
|
"LICENSE.txt",
|
23
24
|
"README.rdoc",
|
24
25
|
"Rakefile",
|
25
26
|
"VERSION",
|
26
27
|
"feature_definitions.gemspec",
|
28
|
+
"lazy_const.gemspec",
|
27
29
|
"lib/feature_definitions.rb",
|
28
30
|
"test/helper.rb",
|
29
31
|
"test/test_feature_definitions.rb"
|
@@ -38,23 +40,26 @@ Gem::Specification.new do |s|
|
|
38
40
|
s.specification_version = 3
|
39
41
|
|
40
42
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
41
|
-
s.add_runtime_dependency(%q<lazy_const>, ["
|
43
|
+
s.add_runtime_dependency(%q<lazy_const>, ["~> 0.1.3"])
|
42
44
|
s.add_development_dependency(%q<minitest>, [">= 0"])
|
43
|
-
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
44
45
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
45
48
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
46
49
|
else
|
47
|
-
s.add_dependency(%q<lazy_const>, ["
|
50
|
+
s.add_dependency(%q<lazy_const>, ["~> 0.1.3"])
|
48
51
|
s.add_dependency(%q<minitest>, [">= 0"])
|
49
|
-
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
50
52
|
s.add_dependency(%q<bundler>, [">= 0"])
|
53
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
54
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
51
55
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
52
56
|
end
|
53
57
|
else
|
54
|
-
s.add_dependency(%q<lazy_const>, ["
|
58
|
+
s.add_dependency(%q<lazy_const>, ["~> 0.1.3"])
|
55
59
|
s.add_dependency(%q<minitest>, [">= 0"])
|
56
|
-
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
57
60
|
s.add_dependency(%q<bundler>, [">= 0"])
|
61
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
62
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
58
63
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
59
64
|
end
|
60
65
|
end
|
data/lazy_const.gemspec
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "lazy_const"
|
8
|
+
s.version = "0.3.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Ryan Graham"]
|
12
|
+
s.date = "2013-03-19"
|
13
|
+
s.description = "Allows you to define lazy evaluated, constant-like instances of your class."
|
14
|
+
s.email = "r.m.graham@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".travis.yml",
|
22
|
+
"Gemfile",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"feature_definitions.gemspec",
|
28
|
+
"lazy_const.gemspec",
|
29
|
+
"lib/feature_definitions.rb",
|
30
|
+
"test/helper.rb",
|
31
|
+
"test/test_feature_definitions.rb"
|
32
|
+
]
|
33
|
+
s.homepage = "http://github.com/rmg/lazy_const"
|
34
|
+
s.licenses = ["MIT"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = "1.8.23"
|
37
|
+
s.summary = "A little Ruby gem for defining lazy evaluated constants."
|
38
|
+
|
39
|
+
if s.respond_to? :specification_version then
|
40
|
+
s.specification_version = 3
|
41
|
+
|
42
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
+
s.add_runtime_dependency(%q<lazy_const>, ["~> 0.1.3"])
|
44
|
+
s.add_development_dependency(%q<minitest>, [">= 0"])
|
45
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
48
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
49
|
+
else
|
50
|
+
s.add_dependency(%q<lazy_const>, ["~> 0.1.3"])
|
51
|
+
s.add_dependency(%q<minitest>, [">= 0"])
|
52
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
53
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
54
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
55
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
56
|
+
end
|
57
|
+
else
|
58
|
+
s.add_dependency(%q<lazy_const>, ["~> 0.1.3"])
|
59
|
+
s.add_dependency(%q<minitest>, [">= 0"])
|
60
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
61
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
62
|
+
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
63
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
data/lib/feature_definitions.rb
CHANGED
@@ -2,17 +2,24 @@ require 'lazy_const'
|
|
2
2
|
|
3
3
|
class FeatureDefinitions
|
4
4
|
extend LazyConst
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :test_proc
|
6
6
|
|
7
|
-
def self.define_feature(name,
|
8
|
-
lazy_const(name){ new(
|
7
|
+
def self.define_feature(name, &block)
|
8
|
+
lazy_const(name) { new(&block) }
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
PASSTHROUGH = Proc.new { |arg| arg }
|
12
|
+
|
13
|
+
def initialize(&block)
|
14
|
+
if block_given?
|
15
|
+
@test_proc = block.to_proc
|
16
|
+
else
|
17
|
+
@test_proc = PASSTHROUGH
|
18
|
+
end
|
14
19
|
end
|
15
20
|
|
21
|
+
@@context = nil
|
22
|
+
|
16
23
|
def self.context=(context)
|
17
24
|
@@context = context
|
18
25
|
end
|
@@ -22,9 +29,8 @@ class FeatureDefinitions
|
|
22
29
|
end
|
23
30
|
|
24
31
|
def enabled?(&block)
|
25
|
-
|
26
|
-
|
27
|
-
yield if block_given? and verdict
|
32
|
+
test_proc.call(context).tap do |verdict|
|
33
|
+
yield if verdict and block_given?
|
28
34
|
end
|
29
35
|
end
|
30
36
|
end
|
@@ -1,30 +1,87 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class
|
4
|
-
|
5
|
-
|
6
|
-
end
|
3
|
+
class ConstFeatures < FeatureDefinitions
|
4
|
+
ALWAYS_ENABLED_FEATURE = self.new { |context| true }
|
5
|
+
ALWAYS_DISABLED_FEATURE = self.new { |context| false }
|
7
6
|
end
|
8
7
|
|
9
8
|
class TestFeatureDefinitions < MiniTest::Unit::TestCase
|
9
|
+
def test_feature_definition_helper
|
10
|
+
feature_class = Class.new(FeatureDefinitions) do
|
11
|
+
define_feature :FEATURE_NAME do |context|
|
12
|
+
true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
assert feature_class.respond_to? :FEATURE_NAME
|
16
|
+
assert feature_class.FEATURE_NAME.enabled?
|
17
|
+
end
|
18
|
+
def test_feature_definition_constructor
|
19
|
+
feature_class = Class.new(FeatureDefinitions)
|
20
|
+
feature = feature_class.new { |context| true }
|
21
|
+
assert feature.enabled?
|
22
|
+
end
|
23
|
+
def test_constant_feature_definitions
|
24
|
+
assert ConstFeatures::ALWAYS_ENABLED_FEATURE.enabled?
|
25
|
+
refute ConstFeatures::ALWAYS_DISABLED_FEATURE.enabled?
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class TestFeatureDefinitionsUsage < MiniTest::Unit::TestCase
|
30
|
+
def setup
|
31
|
+
@feature_class = Class.new(FeatureDefinitions) do
|
32
|
+
define_feature :AWESOME do |context|
|
33
|
+
context.is_awesome?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
def test_feature_enabled
|
38
|
+
@feature_class.context = OpenStruct.new(:is_awesome? => true)
|
39
|
+
assert @feature_class.AWESOME.enabled?
|
40
|
+
end
|
41
|
+
def test_feature_disabled
|
42
|
+
@feature_class.context = OpenStruct.new(:is_awesome? => false)
|
43
|
+
refute @feature_class.AWESOME.enabled?
|
44
|
+
end
|
45
|
+
def test_feature_toggle
|
46
|
+
@feature_class.context = OpenStruct.new(:is_awesome? => true)
|
47
|
+
assert @feature_class.AWESOME.enabled?
|
48
|
+
@feature_class.context = OpenStruct.new(:is_awesome? => false)
|
49
|
+
refute @feature_class.AWESOME.enabled?
|
50
|
+
end
|
51
|
+
def test_feature_toggle_with_block
|
52
|
+
@feature_class.context = OpenStruct.new(:is_awesome? => true)
|
53
|
+
called = false
|
54
|
+
@feature_class.AWESOME.enabled? do
|
55
|
+
called = true
|
56
|
+
end
|
57
|
+
assert called
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class TestFeatureDefaultBlock < MiniTest::Unit::TestCase
|
62
|
+
def setup
|
63
|
+
@feature_class = Class.new(FeatureDefinitions) do
|
64
|
+
define_feature :AWESOME
|
65
|
+
end
|
66
|
+
end
|
10
67
|
def test_feature_enabled
|
11
|
-
|
12
|
-
assert
|
68
|
+
@feature_class.context = true
|
69
|
+
assert @feature_class.AWESOME.enabled?
|
13
70
|
end
|
14
71
|
def test_feature_disabled
|
15
|
-
|
16
|
-
refute
|
72
|
+
@feature_class.context = false
|
73
|
+
refute @feature_class.AWESOME.enabled?
|
17
74
|
end
|
18
75
|
def test_feature_toggle
|
19
|
-
|
20
|
-
assert
|
21
|
-
|
22
|
-
refute
|
76
|
+
@feature_class.context = true
|
77
|
+
assert @feature_class.AWESOME.enabled?
|
78
|
+
@feature_class.context = false
|
79
|
+
refute @feature_class.AWESOME.enabled?
|
23
80
|
end
|
24
81
|
def test_feature_toggle_with_block
|
25
|
-
|
82
|
+
@feature_class.context = true
|
26
83
|
called = false
|
27
|
-
|
84
|
+
@feature_class.AWESOME.enabled? do
|
28
85
|
called = true
|
29
86
|
end
|
30
87
|
assert called
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: feature_definitions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.3.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ryan Graham
|
@@ -15,17 +15,17 @@ dependencies:
|
|
15
15
|
version_requirements: !ruby/object:Gem::Requirement
|
16
16
|
none: false
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ~>
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 0.1.3
|
21
21
|
type: :runtime
|
22
22
|
name: lazy_const
|
23
23
|
requirement: !ruby/object:Gem::Requirement
|
24
24
|
none: false
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: 0.1.3
|
29
29
|
prerelease: false
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -47,17 +47,17 @@ dependencies:
|
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
48
48
|
none: false
|
49
49
|
requirements:
|
50
|
-
- -
|
50
|
+
- - ! '>='
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
52
|
+
version: '0'
|
53
53
|
type: :development
|
54
|
-
name:
|
54
|
+
name: bundler
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
none: false
|
57
57
|
requirements:
|
58
|
-
- -
|
58
|
+
- - ! '>='
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '0'
|
61
61
|
prerelease: false
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
type: :development
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
@@ -75,6 +75,22 @@ dependencies:
|
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
prerelease: false
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ~>
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '3.12'
|
85
|
+
type: :development
|
86
|
+
name: rdoc
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ~>
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '3.12'
|
93
|
+
prerelease: false
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
version_requirements: !ruby/object:Gem::Requirement
|
80
96
|
none: false
|
@@ -100,12 +116,14 @@ extra_rdoc_files:
|
|
100
116
|
- README.rdoc
|
101
117
|
files:
|
102
118
|
- .document
|
119
|
+
- .travis.yml
|
103
120
|
- Gemfile
|
104
121
|
- LICENSE.txt
|
105
122
|
- README.rdoc
|
106
123
|
- Rakefile
|
107
124
|
- VERSION
|
108
125
|
- feature_definitions.gemspec
|
126
|
+
- lazy_const.gemspec
|
109
127
|
- lib/feature_definitions.rb
|
110
128
|
- test/helper.rb
|
111
129
|
- test/test_feature_definitions.rb
|
@@ -123,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
141
|
- !ruby/object:Gem::Version
|
124
142
|
segments:
|
125
143
|
- 0
|
126
|
-
hash: -
|
144
|
+
hash: -4330562717910034088
|
127
145
|
version: '0'
|
128
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
147
|
none: false
|