fedux_org-stdlib 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format Fuubar
2
+ --order rand
data/.simplecov ADDED
@@ -0,0 +1,8 @@
1
+ SimpleCov.start do
2
+ add_filter "/features/"
3
+ add_filter "/spec/"
4
+ add_group "actions", "lib/puppet_generator/actions/"
5
+ add_group "actions", "lib/puppet_generator/filter/"
6
+ add_group "actions", "lib/puppet_generator/templates/"
7
+ add_group "lib", "lib/"
8
+ end
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ gemfile: gemfiles/Gemfile.travis
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ script: bundle exec rake test:travis_specs
data/.yardopts ADDED
@@ -0,0 +1,6 @@
1
+ --verbose
2
+ -
3
+ API-GUIDE.md
4
+ CONTRIBUTIONS.md
5
+ LICENSE.md
6
+ RELEASE_NOTES.md
data/Gemfile CHANGED
@@ -19,6 +19,7 @@ end
19
19
 
20
20
  group :development do
21
21
  gem 'tmrb'
22
+ gem 'erubis'
22
23
  gem 'debugger'
23
24
  gem 'pry'
24
25
  gem 'pry-doc'
data/Rakefile CHANGED
@@ -8,12 +8,14 @@ unless ENV['TRAVIS_CI'] == 'true'
8
8
  require 'yard'
9
9
  require 'rubygems/package_task'
10
10
  require 'active_support/core_ext/string/strip'
11
+ require 'erubis'
11
12
  end
12
13
 
13
14
  YARD::Rake::YardocTask.new() do |y|
14
15
  # y.options << '--verbose'
15
16
  end
16
17
 
18
+
17
19
  desc 'start tmux'
18
20
  task :terminal do
19
21
  sh "script/terminal"
@@ -30,13 +32,21 @@ namespace :version do
30
32
 
31
33
  new_version = ENV['VERSION'] || ENV['version']
32
34
 
33
- raw_module_name = File.open(version_file, "r").readlines.grep(/module/).first
34
- module_name = raw_module_name.chomp.match(/module\s+(\S+)/) {$1}
35
+ raw_module_names = File.open(version_file, "r").readlines.grep(/module/)
36
+ module_names = raw_module_names.collect { |n| n.chomp.match(/module\s+(\S+)/) {$1} }
37
+
38
+ template = <<-EOF
39
+ #main <%= @modules.first %>
40
+ <% @modules.each do |m| %>
41
+ module <%= m %>
42
+ <% end %>
43
+ VERSION = '<%= @version %>'
44
+ <% @modules.size.times do |m| %>
45
+ end
46
+ <% end %>
47
+ EOF
35
48
 
36
- version_string = %Q{#main #{module_name}
37
- module #{module_name}
38
- VERSION = '#{new_version}'
39
- end}
49
+ version_string = Erubis::Eruby.new(template).evaluate(modules: module_names, version: new_version)
40
50
 
41
51
  File.open(version_file, "w") do |f|
42
52
  f.write version_string.strip_heredoc
@@ -20,4 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
+ spec.add_dependency "activesupport"
23
24
  end
@@ -1,3 +1,5 @@
1
+ require 'logger'
2
+
1
3
  module FeduxOrg
2
4
  module Stdlib
3
5
  module Logging
File without changes
@@ -1,3 +1,6 @@
1
+ require 'fedux_org/stdlib/logging'
2
+ require 'fedux_org/stdlib/models/exceptions'
3
+
1
4
  module FeduxOrg
2
5
  module Stdlib
3
6
  module Models
@@ -57,13 +60,9 @@ module FeduxOrg
57
60
  end
58
61
  end
59
62
 
60
- def find( val )
61
- @instances.find { |i| i.name == val.to_s.to_sym }
62
- end
63
-
64
63
  def delete( val )
65
- element = find( val.to_s.to_sym )
66
- raise Exceptions::InstanceNotFound unless element
64
+ element = self.find( val.to_s.to_sym )
65
+ raise FeduxOrg::Stdlib::Exceptions::InstanceNotFound unless element
67
66
  @instances.delete element
68
67
 
69
68
  element
@@ -1,3 +1,6 @@
1
+ require 'active_support/core_ext/string/inflections'
2
+ require 'fedux_org/stdlib/models/filesystem_based_model'
3
+
1
4
  module FeduxOrg
2
5
  module Stdlib
3
6
  module Models
@@ -15,7 +18,7 @@ module FeduxOrg
15
18
  end
16
19
 
17
20
  def exception_for_model
18
- "#{library_name}::Exceptions::Invalid#{model_name.singularize}".constantize
21
+ "#{library_name}::Exceptions::Invalid#{model_name}".constantize
19
22
  rescue
20
23
  raise FeduxOrg::Stdlib::Models::Exceptions::ExceptionNeedsToBeImplemented, "Exception \"#{library_name}::Exceptions::Invalid#{model_name}\" does not exist."
21
24
  end
@@ -1,32 +1,38 @@
1
- module PuppetGenerator
2
- module Exceptions
3
-
4
- #raised if one tries to delete an instance which
5
- #does not exist
6
- class InstanceNotFound < InternalError; end
7
-
8
- #raised if one tries to use a keyword whose use
9
- #is restricted
10
- class UnauthorizedUseOfKeyword < InternalError; end
11
-
12
- #raised if one uses invalid search criteria
13
- class InvalidSearchCriteria < InternalError; end
14
-
15
- #raised if the code which defines an import filter
16
- #is malformed
17
- class MethodNeedsToBeImplemented < InternalError; end
18
-
19
- #raised if one tries to use an unimplemented exception
20
- class ExceptionNeedsToBeImplemented < InternalError; end
21
-
22
- #raised if an file system error occured
23
- class FilesystemError < Exception ; end
24
-
25
- #raise if a directory does not exist in filesystem
26
- class DirectoryDoesNotExist < FilesystemError; end
27
-
28
- #raise if a file does not exist in filesystem
29
- class FileDoesNotExist < FilesystemError; end
1
+ module FeduxOrg
2
+ module Stdlib
3
+ module Models
4
+ module Exceptions
5
+ #internal error
6
+ class InternalError < Exception; end
30
7
 
8
+ #raised if one tries to delete an instance which
9
+ #does not exist
10
+ class InstanceNotFound < InternalError; end
11
+
12
+ #raised if one tries to use a keyword whose use
13
+ #is restricted
14
+ class UnauthorizedUseOfKeyword < InternalError; end
15
+
16
+ #raised if one uses invalid search criteria
17
+ class InvalidSearchCriteria < InternalError; end
18
+
19
+ #raised if the code which defines an import filter
20
+ #is malformed
21
+ class MethodNeedsToBeImplemented < InternalError; end
22
+
23
+ #raised if one tries to use an unimplemented exception
24
+ class ExceptionNeedsToBeImplemented < InternalError; end
25
+
26
+ #raised if an file system error occured
27
+ class FilesystemError < Exception ; end
28
+
29
+ #raise if a directory does not exist in filesystem
30
+ class DirectoryDoesNotExist < FilesystemError; end
31
+
32
+ #raise if a file does not exist in filesystem
33
+ class FileDoesNotExist < FilesystemError; end
34
+
35
+ end
36
+ end
31
37
  end
32
38
  end
@@ -1,3 +1,5 @@
1
+ require 'fedux_org/stdlib/models/base_model'
2
+
1
3
  module FeduxOrg
2
4
  module Stdlib
3
5
  module Models
@@ -2,4 +2,3 @@ require 'fedux_org/stdlib/models/exceptions'
2
2
  require 'fedux_org/stdlib/models/base_model'
3
3
  require 'fedux_org/stdlib/models/class_based_model'
4
4
  require 'fedux_org/stdlib/models/filesystem_based_model'
5
- require 'fedux_org/stdlib/logger'
@@ -1,6 +1,6 @@
1
1
  #main FeduxOrg
2
2
  module FeduxOrg
3
- module Stdlib
4
- VERSION = '0.0.2'
5
- end
3
+ module Stdlib
4
+ VERSION = '0.0.3'
5
+ end
6
6
  end
data/script/console ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.expand_path('../lib', File.dirname(__FILE__))
4
+
5
+ require 'fedux_org/stdlib'
6
+ require 'pry'
7
+
8
+ Pry.start
data/script/terminal ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'tmrb'
4
+
5
+ tmux = TmRb::Multiplexer.new
6
+ #creates an empty window
7
+ tmux.new_session(:session_name => "fedux_org-stdlib")
8
+
9
+ tmux.new_window(:name => 'models', :command => 'vim -c \"NERDTree lib/fedux_org/stdlib/models\"')
10
+ tmux.new_window(:name => 'logging', :command => 'vim -c \"NERDTree lib/fedux_org/stdlib/logging\"')
11
+ tmux.new_window(:name => 'spec', :command => 'vim -c \"NERDTree spec\"')
12
+ tmux.start
@@ -0,0 +1,8 @@
1
+ module TestIt
2
+ module TestClasses
3
+ class ForbiddenKeyword
4
+ def req_method
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ module TestIt
2
+ module TestClasses
3
+ class Invalid_1
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,7 @@
1
+ module TestIt
2
+ module TestClasses
3
+ class Invalid2
4
+ #missing method
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ module TestIt
2
+ module TestClasses
3
+ class Valid1
4
+ def req_method
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ require 'fedux_org/stdlib/models'
4
+
5
+ describe Models::BaseModel do
6
+
7
+ before(:each) {
8
+ Models::BaseModel.clear
9
+ }
10
+
11
+ it "is possible to register a message" do
12
+ m1 = Models::BaseModel.new('name')
13
+ Models::BaseModel.register m1
14
+ end
15
+
16
+ it "is possible to find an object" do
17
+ m1 = Models::BaseModel.new('name')
18
+ Models::BaseModel.register m1
19
+
20
+ m_found = Models::BaseModel.find('name')
21
+
22
+ expect(m1).to eq(m_found)
23
+ end
24
+
25
+ it "is possible to create and register in one step" do
26
+ m1 = Models::BaseModel.create('name')
27
+ m_found = Models::BaseModel.find('name')
28
+
29
+ expect(m1).to eq(m_found)
30
+ end
31
+
32
+ it "is possible to delete an object" do
33
+ m1 = Models::BaseModel.create('name')
34
+ m2 = Models::BaseModel.delete('name')
35
+
36
+ expect(m1).to eq(m2)
37
+ end
38
+
39
+ it "is possible to delete all objects" do
40
+ Models::BaseModel.create('name1')
41
+ Models::BaseModel.create('name2')
42
+ Models::BaseModel.create('name3')
43
+
44
+ Models::BaseModel.clear
45
+ expect(Models::BaseModel.all).to eq( [] )
46
+ end
47
+
48
+ end
@@ -0,0 +1,185 @@
1
+ require 'spec_helper'
2
+
3
+ require 'fedux_org/stdlib/models/class_based_model'
4
+
5
+ describe Models::ClassBasedModel do
6
+
7
+ before(:each) do
8
+
9
+ module TestIt
10
+ module Exceptions
11
+ class InvalidTestClass < Exception; end
12
+ end
13
+ end
14
+
15
+ end
16
+
17
+ it "loads all available instances from the file system and make the classes available." do
18
+ # all loaded instances need be defined like that
19
+ #
20
+ # model:
21
+ # ------
22
+ # class Testmodel
23
+ # end
24
+ #
25
+ # Class to be loaded for instance of model (second level is plural of model name)
26
+ # Furthermore you need to define a method which is used as a check for a valid
27
+ # class. That class must not take an argument in #new! All arguments need to be
28
+ # taken by the '#method'.
29
+ # --------------------------------------------------------------------------------
30
+ # module Bla
31
+ # module Testmodels
32
+ # class XY
33
+ # def method
34
+ # end
35
+ # end
36
+ # end
37
+ # end
38
+ test_class = Class.new(Models::BaseModel) do
39
+ include Models::FilesystemBasedModel
40
+ include Models::ClassBasedModel
41
+
42
+ def initialize(name, klass)
43
+ super(name)
44
+
45
+ @klass = klass
46
+ end
47
+
48
+ def self.model_name
49
+ 'TestClass'
50
+ end
51
+
52
+ def self.library_name
53
+ 'TestIt'
54
+ end
55
+
56
+ def self.check_method
57
+ :req_method
58
+ end
59
+
60
+ def self.path_to_instances
61
+ File.join( examples_dir, 'models', 'class_based', 'valid_1.rb' )
62
+ end
63
+
64
+ def self.require_path(name)
65
+ File.join( examples_dir, 'models', 'class_based', 'valid_1' )
66
+ end
67
+ end
68
+
69
+ test_class.init
70
+ expect(test_class.all.first.name).to eq(:valid_1)
71
+ end
72
+
73
+
74
+ it "raises an error if an instance is invalid: name error" do
75
+ test_class = Class.new(Models::BaseModel) do
76
+ include Models::FilesystemBasedModel
77
+ include Models::ClassBasedModel
78
+
79
+ def initialize(name, klass)
80
+ super(name)
81
+
82
+ @klass = klass
83
+ end
84
+
85
+ def self.model_name
86
+ "TestClass"
87
+ end
88
+
89
+ def self.library_name
90
+ 'TestIt'
91
+ end
92
+
93
+ def self.check_method
94
+ :req_method
95
+ end
96
+
97
+ def self.path_to_instances
98
+ File.join( examples_dir, 'models', 'class_based', 'invalid_1.rb' )
99
+ end
100
+
101
+ def self.require_path(name)
102
+ File.join( examples_dir, 'models', 'class_based', 'invalid_1' )
103
+ end
104
+ end
105
+
106
+ expect {
107
+ test_class.init
108
+ }.to raise_error
109
+ end
110
+
111
+ it "an import filter uses a forbidden keywords as name" do
112
+ test_class = Class.new(Models::BaseModel) do
113
+ include Models::FilesystemBasedModel
114
+ include Models::ClassBasedModel
115
+
116
+ def initialize(name, klass)
117
+ super(name)
118
+
119
+ @klass = klass
120
+ end
121
+
122
+ def self.model_name
123
+ "TestClass"
124
+ end
125
+
126
+ def self.library_name
127
+ 'TestIt'
128
+ end
129
+
130
+ def self.path_to_instances
131
+ File.join( examples_dir, 'models', 'class_based', 'forbidden_keyword.rb' )
132
+ end
133
+
134
+ def self.require_path(name)
135
+ File.join( examples_dir, 'models', 'class_based', 'forbidden_keyword' )
136
+ end
137
+
138
+ def self.forbidden_keywords
139
+ [ :forbidden_keyword ]
140
+ end
141
+ end
142
+
143
+ expect {
144
+ test_class.init
145
+ }.to raise_error FeduxOrg::Stdlib::Models::Exceptions::UnauthorizedUseOfKeyword
146
+ end
147
+
148
+ it "raises an error if an import filter is invalid: missing method" do
149
+ test_class = Class.new(Models::BaseModel) do
150
+ include Models::FilesystemBasedModel
151
+ include Models::ClassBasedModel
152
+
153
+ def initialize(name, klass)
154
+ super(name)
155
+
156
+ @klass = klass
157
+ end
158
+
159
+ def self.model_name
160
+ "TestClass"
161
+ end
162
+
163
+ def self.library_name
164
+ 'TestIt'
165
+ end
166
+
167
+ def self.path_to_instances
168
+ File.join( examples_dir, 'models', 'class_based', 'invalid_2.rb' )
169
+ end
170
+
171
+ def self.require_path(name)
172
+ File.join( examples_dir, 'models', 'class_based', 'invalid_2' )
173
+ end
174
+
175
+ def self.check_method
176
+ :req_method
177
+ end
178
+ end
179
+
180
+ expect {
181
+ test_class.init
182
+ }.to raise_error TestIt::Exceptions::InvalidTestClass
183
+ end
184
+
185
+ end
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ require 'fedux_org/stdlib/models/filesystem_based_model'
4
+
5
+ describe Models::FilesystemBasedModel do
6
+ before(:each) do
7
+ @model = Class.new(Models::BaseModel) do
8
+ include Models::FilesystemBasedModel
9
+
10
+ def self.load_from_filesystem
11
+ [ :hello, :world ].each { |s| create( s ) }
12
+ end
13
+ end
14
+
15
+ @model.clear
16
+
17
+ module Test123
18
+ module Models
19
+ class TestClassForFilesystem < FeduxOrg::Stdlib::Models::BaseModel
20
+ include FeduxOrg::Stdlib::Models::FilesystemBasedModel
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ it "returns a string of all active filters" do
27
+ @model.create(:name1)
28
+ @model.create(:name2)
29
+ @model.enable :name1
30
+ @model.enable :name2
31
+
32
+ result = @model.all_names_as_string(", ")
33
+ expect(result).to eq("name1, name2")
34
+
35
+ result = @model.all_names_as_string
36
+ expect(result).to eq("name1, name2")
37
+ end
38
+
39
+ it "finds all available filter" do
40
+ @model.init
41
+ filter = @model.find(:hello)
42
+ expect(filter.name).to eq(:hello)
43
+ end
44
+
45
+ it "is default that all found filters are disabled" do
46
+ @model.init
47
+ all_filter = @model.all
48
+ all_not_enabled_filter = @model.find_all(enabled: false)
49
+ expect(all_filter.size).to eq(all_not_enabled_filter.size)
50
+ end
51
+
52
+ it "enables a filter by request" do
53
+ @model.init
54
+ @model.enable(:hello)
55
+ all_enabled_filter = @model.find_all( enabled: true )
56
+ filter = @model.find( :hello )
57
+
58
+ expect( all_enabled_filter ).to eq( [ filter ] )
59
+ end
60
+
61
+ it "s find method supports a hash based syntax" do
62
+ @model.init
63
+ @model.enable(:hello)
64
+
65
+ enabled_filter = @model.find(name: :hello, enabled: true)
66
+ expect(enabled_filter.name).to eq(:hello)
67
+ end
68
+
69
+ it "s find method supports a symbol based syntax as well. The search string is compared against the name method." do
70
+ @model.init
71
+ enabled_filter = @model.find(:hello)
72
+ expect(enabled_filter.name).to eq(:hello)
73
+
74
+ enabled_filter = @model.find_all(:hello)
75
+ expect(enabled_filter.first.name).to eq(:hello)
76
+ end
77
+
78
+ it "s find method supports a string based syntax as well. The search string is compared against the name method." do
79
+ @model.init
80
+ enabled_filter = @model.find('hello')
81
+ expect(enabled_filter.name).to eq(:hello)
82
+
83
+ enabled_filter = @model.find_all('hello')
84
+ expect(enabled_filter.first.name).to eq(:hello)
85
+ end
86
+
87
+ it "raises an error if an unknown search criteria is used" do
88
+ @model.init
89
+ expect {
90
+ enabled_filter = @model.find(unknown: 'hello')
91
+ }.to raise_error FeduxOrg::Stdlib::Models::Exceptions::InvalidSearchCriteria
92
+ end
93
+
94
+ it "returns the module name" do
95
+ expect( Test123::Models::TestClassForFilesystem.send(:module_name) ).to eq('Test123::Models')
96
+ end
97
+
98
+ it "returns the model name" do
99
+ expect( Test123::Models::TestClassForFilesystem.send(:model_name) ).to eq('TestClassForFilesystem')
100
+ end
101
+
102
+ it "returns the library name" do
103
+ expect( Test123::Models::TestClassForFilesystem.send(:library_name) ).to eq('Test123')
104
+ end
105
+ end
data/spec/spec_helper.rb CHANGED
@@ -14,8 +14,8 @@ unless ENV['TRAVIS_CI'] == 'true'
14
14
  SimpleCov.command_name 'rspec'
15
15
  end
16
16
 
17
- require 'puppet_generator'
18
- include PuppetGenerator
17
+ require 'fedux_org/stdlib'
18
+ include FeduxOrg::Stdlib
19
19
 
20
20
  RSpec.configure do |c|
21
21
  c.treat_symbols_as_metadata_keys_with_true_values = true
@@ -26,3 +26,4 @@ end
26
26
  def examples_dir
27
27
  File.expand_path( '../examples', __FILE__ )
28
28
  end
29
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fedux_org-stdlib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-05 00:00:00.000000000 Z
12
+ date: 2013-06-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
46
62
  description: collection of use full libraries
47
63
  email:
48
64
  - dev@fedux.org
@@ -51,6 +67,10 @@ extensions: []
51
67
  extra_rdoc_files: []
52
68
  files:
53
69
  - .gitignore
70
+ - .rspec
71
+ - .simplecov
72
+ - .travis.yml
73
+ - .yardopts
54
74
  - Gemfile
55
75
  - LICENSE.md
56
76
  - README.md
@@ -62,7 +82,7 @@ files:
62
82
  - lib/fedux_org/stdlib/environment.rb
63
83
  - lib/fedux_org/stdlib/filesystem.rb
64
84
  - lib/fedux_org/stdlib/filesystem/exceptions.rb
65
- - lib/fedux_org/stdlib/logger.rb
85
+ - lib/fedux_org/stdlib/logging.rb
66
86
  - lib/fedux_org/stdlib/logging/logger.rb
67
87
  - lib/fedux_org/stdlib/models.rb
68
88
  - lib/fedux_org/stdlib/models/base_model.rb
@@ -70,6 +90,15 @@ files:
70
90
  - lib/fedux_org/stdlib/models/exceptions.rb
71
91
  - lib/fedux_org/stdlib/models/filesystem_based_model.rb
72
92
  - lib/fedux_org/stdlib/version.rb
93
+ - script/console
94
+ - script/terminal
95
+ - spec/examples/models/class_based/forbidden_keyword.rb
96
+ - spec/examples/models/class_based/invalid_1.rb
97
+ - spec/examples/models/class_based/invalid_2.rb
98
+ - spec/examples/models/class_based/valid_1.rb
99
+ - spec/models/base_model_spec.rb
100
+ - spec/models/class_based_model_spec.rb
101
+ - spec/models/filesystem_based_model_spec.rb
73
102
  - spec/spec_helper.rb
74
103
  homepage: ''
75
104
  licenses:
@@ -97,5 +126,12 @@ signing_key:
97
126
  specification_version: 3
98
127
  summary: collection of use full libraries
99
128
  test_files:
129
+ - spec/examples/models/class_based/forbidden_keyword.rb
130
+ - spec/examples/models/class_based/invalid_1.rb
131
+ - spec/examples/models/class_based/invalid_2.rb
132
+ - spec/examples/models/class_based/valid_1.rb
133
+ - spec/models/base_model_spec.rb
134
+ - spec/models/class_based_model_spec.rb
135
+ - spec/models/filesystem_based_model_spec.rb
100
136
  - spec/spec_helper.rb
101
137
  has_rdoc: