crier 0.0.4 → 0.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
- SHA1:
3
- metadata.gz: ccbf63ac57f13537d175c3f100e8dd4f5f7e45a9
4
- data.tar.gz: 05e3baa8d4c1d4a1bc84297341f6e6ae71b75deb
2
+ SHA256:
3
+ metadata.gz: 13ea2f57b459724e802e5b2b1af1816d9df34ca95dc03cf2bbd344735314a37b
4
+ data.tar.gz: 4ab5d65b1a44eb501a63cb6a80ed692e4ed445a616ceb43462680d9ef12d0115
5
5
  SHA512:
6
- metadata.gz: ab8c92784743d2a6722a14e7012b6a509b3cef321c4d071b38e42447b170c5c79a522a7b775ff19754418d0490f9f1d5a23c4c9794ff531291d5a6275c41bf72
7
- data.tar.gz: aa36e3968a1abd470d4d58f9710edbe5dd9eac2f5710a61f4d0e0af8c74c8e242a7d092ccf3f2ce75b2df6e4ca6889cea544d7a265980d1c52377c6e1f65f409
6
+ metadata.gz: c5e48b7aeea5f91ae863da9fbabe1acbd60fe4642518d4cd19918e6e5e1b28f630e12bf5827efbc9a4d08099d8f2696d65980ddb0668cfd58049c4f818fef028
7
+ data.tar.gz: dc84a56245e570745dda47c05e0f6e69f89aa26b0b0f5a8b35733437665ad6134a66fc31c4455f15dba195552f33353b89e8569a194b4f376a3524b7fe9a2129
data/README.md CHANGED
@@ -64,3 +64,13 @@ Crier::Notification.heard_by(some_user) # Get all the
64
64
  Crier::Notification.about(@record) # Get all the notifications with the given subject
65
65
  Crier::Notification.in_scope(:my_town) # Get all the notifications within the given scope
66
66
  ```
67
+
68
+ ## Testing
69
+
70
+ There are multiple gemfiles available for testing against different Rails versions. Set `BUNDLE_GEMFILE` to target them, e.g.
71
+
72
+ ```bash
73
+ bundle install
74
+ BUNDLE_GEMFILE=gemfiles/rails_7.gemfile bundle install
75
+ BUNDLE_GEMFILE=gemfiles/rails_7.gemfile bundle exec rspec
76
+ ```
@@ -2,10 +2,8 @@ module Crier
2
2
  # If a notification has listeners, the notification is considered private and only available to those listeners
3
3
  class Listening < ActiveRecord::Base
4
4
  self.table_name = 'crier_listenings'
5
-
5
+
6
6
  belongs_to :notification
7
7
  belongs_to :user
8
-
9
- validates_presence_of :user_id, :notification_id
10
8
  end
11
- end
9
+ end
@@ -2,7 +2,11 @@ module Crier
2
2
  class Notification < ActiveRecord::Base
3
3
  self.table_name = 'crier_notifications'
4
4
 
5
- belongs_to :crier, :class_name => 'User'
5
+ if ActiveRecord::VERSION::MAJOR <= 4
6
+ belongs_to :crier, :class_name => 'User'
7
+ else
8
+ belongs_to :crier, :class_name => 'User', :optional => true
9
+ end
6
10
  belongs_to :subject, :polymorphic => true
7
11
 
8
12
  has_many :listenings, :dependent => :delete_all
@@ -12,9 +16,11 @@ module Crier
12
16
 
13
17
  scope :by, lambda {|user| where(:crier_id => user) }
14
18
  scope :heard_by, lambda {|user| joins("LEFT OUTER JOIN #{Listening.table_name} ON #{Listening.table_name}.notification_id = #{table_name}.id").where("#{Listening.table_name}.user_id = #{user.id} OR NOT private")}
15
- scope :about, lambda {|subject| where(:subject_id => subject.id, :subject_type => subject.class) }
19
+ scope :about, lambda {|subject| where(:subject_id => subject.id, :subject_type => subject.class.name) }
16
20
  scope :in_scope, lambda {|scope| where(:scope => scope) }
17
21
 
22
+ before_save :set_privacy
23
+
18
24
  # Shortcut for creating a private audience for this notification
19
25
  def to(audience)
20
26
  self.update_column(:private, true)
@@ -26,5 +32,11 @@ module Crier
26
32
  def to_others(audience)
27
33
  to(Array(audience) - [crier])
28
34
  end
35
+
36
+ private
37
+
38
+ def set_privacy
39
+ self.private = audience.present? unless private_changed?
40
+ end
29
41
  end
30
42
  end
data/lib/crier/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Crier
2
- VERSION = '0.0.4'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Wallace
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-16 00:00:00.000000000 Z
12
+ date: 2024-02-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -17,20 +17,62 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '3.2'
20
+ version: '5'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '5.0'
23
+ version: '8'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: '3.2'
30
+ version: '5'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '8'
34
+ - !ruby/object:Gem::Dependency
35
+ name: bundler
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ type: :development
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: sqlite3
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.4'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.4'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec-rails
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4'
34
76
  description: Simple notification for the whole town
35
77
  email:
36
78
  - contact@culturecode.ca
@@ -63,8 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
105
  - !ruby/object:Gem::Version
64
106
  version: '0'
65
107
  requirements: []
66
- rubyforge_project:
67
- rubygems_version: 2.2.2
108
+ rubygems_version: 3.3.23
68
109
  signing_key:
69
110
  specification_version: 4
70
111
  summary: Simple notification for the whole town