gourami 1.0.0 → 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
- 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.