crier 0.0.4 → 0.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
- 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