gourami 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 6ed05ee6d0864e3a51c4c29719f7cc6d6b6ca8ba3f360fc8ad950f026db5b69f
4
- data.tar.gz: 665904a584c35c5ad55f710a49bed160f039706772f1f8ccd485ccd2351a8ebc
2
+ SHA1:
3
+ metadata.gz: a1302c6c706d67636c8cf01672c1c50dbec89ff6
4
+ data.tar.gz: 74147a041e097f6218f56f72ba9aa9faf6824e73
5
5
  SHA512:
6
- metadata.gz: f830e299356968c7248b5d4bc02294299e91929a5e7fb4db7e06e25ec12a581393ce3bbcfcaafe889e65bd67e51406f3a3ed1d4b2b26e375af9c304d8befc205
7
- data.tar.gz: 6c55ad5a92607e4387c4221ee2597ab091ab436b70196afbc0acf9de3ad9e2482bc19419ee384e49420478d440c3b45e2d1e4e68e56a220e0653ee8fce98d9fb
6
+ metadata.gz: 892353b9b9a4f4b9a55b7beeee102c72c025cfc7603dec3eec22c3372376bc9201537878a50c15af2bf7d10fd1307f0d57d843bd69dd29b29d9322dd8ecaf4bf
7
+ data.tar.gz: 09bc3491c1b7733dccfd701cb10246ead8c32e7ddc6648d11f6975d556d0001a870f455e3a842d807575da2e312e8194323e5b551c136c26890b192e9599f1bd
data/README.md CHANGED
@@ -252,7 +252,9 @@ end
252
252
 
253
253
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
254
254
 
255
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
255
+ To install this gem onto your local machine, run `bundle exec rake install`.
256
+
257
+ To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
256
258
 
257
259
  To add another gem owner to gourami gem `gem owner --add john.smith@example.com gourami`
258
260
 
data/Rakefile CHANGED
@@ -8,4 +8,18 @@ Rake::TestTask.new(:test) do |t|
8
8
  end
9
9
 
10
10
  task :spec => :test
11
+ namespace :test do
12
+ task :watch do |t, args|
13
+ require "filewatcher"
14
+
15
+ watcher = Filewatcher.new(["spec/", "lib/"], :every => true, :spinner => true, :immediate => true)
16
+ watcher.watch do |filename, event|
17
+ begin
18
+ Rake::Task[:test].execute(args)
19
+ rescue StandardError => error
20
+ puts "Error: #{error.message}"
21
+ end
22
+ end
23
+ end
24
+ end
11
25
  task :default => :test
@@ -21,8 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_development_dependency "pry", "~>0.10"
25
24
  spec.add_development_dependency "bundler", "~> 1.13"
26
- spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "filewatcher", "~> 1.1.0"
27
26
  spec.add_development_dependency "minitest", "~> 5.0"
27
+ spec.add_development_dependency "pry", "~>0.10"
28
+ spec.add_development_dependency "rake", "~> 10.0"
28
29
  end
@@ -2,6 +2,7 @@ module Gourami
2
2
  end
3
3
 
4
4
  require "gourami/error"
5
+ require "gourami/attribute_name_conflict_error"
5
6
  require "gourami/configuration_error"
6
7
  require "gourami/not_watching_changes_error"
7
8
  require "gourami/required_attribute_error"
@@ -0,0 +1,4 @@
1
+ module Gourami
2
+ class AttributeNameConflictError < Gourami::Error
3
+ end
4
+ end
@@ -20,11 +20,16 @@ module Gourami
20
20
  # @block default_block
21
21
  # If provided, the block will be applied to options as the :default
22
22
  def attribute(name, options = {}, &default_block)
23
+ base = self
23
24
  options = options.dup
24
25
  options[:default] = default_block if block_given?
25
26
 
26
27
  mixin = Module.new do |mixin|
27
28
  unless options[:skip_reader]
29
+ if base.instance_methods.include?(name) && !options[:override_reader]
30
+ raise AttributeNameConflictError, "#{name} is already a method. To use the existing method, use `:skip_reader => true` option. To override the existing method, use `:override_reader => true` option."
31
+ end
32
+
28
33
  mixin.send(:define_method, :"#{name}") do
29
34
  value = instance_variable_get(:"@#{name}")
30
35
  default = options[:default]
@@ -1,3 +1,3 @@
1
1
  module Gourami
2
- VERSION = "1.0.0".freeze
2
+ VERSION = "1.1.0".freeze
3
3
  end
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gourami
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TSMMark
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-12 00:00:00.000000000 Z
11
+ date: 2019-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: pry
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.10'
19
+ version: '1.13'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.10'
26
+ version: '1.13'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: filewatcher
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.13'
33
+ version: 1.1.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.13'
40
+ version: 1.1.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '5.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '5.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: minitest
56
+ name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '5.0'
61
+ version: '0.10'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '5.0'
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
69
83
  description: Create Plain Old Ruby Objects that take attributes, validate them, and
70
84
  perform an action.
71
85
  email:
@@ -85,6 +99,7 @@ files:
85
99
  - bin/setup
86
100
  - gourami.gemspec
87
101
  - lib/gourami.rb
102
+ - lib/gourami/attribute_name_conflict_error.rb
88
103
  - lib/gourami/attributes.rb
89
104
  - lib/gourami/coercer.rb
90
105
  - lib/gourami/configuration_error.rb
@@ -118,7 +133,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
133
  - !ruby/object:Gem::Version
119
134
  version: '0'
120
135
  requirements: []
121
- rubygems_version: 3.0.3
136
+ rubyforge_project:
137
+ rubygems_version: 2.4.6
122
138
  signing_key:
123
139
  specification_version: 4
124
140
  summary: Keep your Routes, Controllers and Models thin.