primer 0.1.0 → 0.2.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.
Files changed (72) hide show
  1. data/History.txt +17 -0
  2. data/README.rdoc +74 -35
  3. data/example/README.rdoc +33 -23
  4. data/example/application.rb +2 -2
  5. data/example/console.rb +133 -0
  6. data/example/db/blog.sqlite3 +0 -0
  7. data/example/{models → db}/connection.rb +0 -0
  8. data/example/environment.rb +17 -4
  9. data/example/models/comment.rb +5 -0
  10. data/example/models/post.rb +5 -0
  11. data/example/script/setup_database.rb +8 -2
  12. data/example/views/comments.erb +6 -0
  13. data/example/views/layout.erb +1 -1
  14. data/example/views/show.erb +5 -1
  15. data/lib/primer/bus/amqp.rb +7 -5
  16. data/lib/primer/bus/amqp.rbc +1045 -0
  17. data/lib/primer/bus/memory.rbc +344 -0
  18. data/lib/primer/bus.rb +3 -2
  19. data/lib/primer/bus.rbc +872 -0
  20. data/lib/primer/cache/memory.rbc +1443 -0
  21. data/lib/primer/cache/redis.rb +2 -2
  22. data/lib/primer/cache/redis.rbc +1643 -0
  23. data/lib/primer/cache.rb +2 -16
  24. data/lib/primer/cache.rbc +1502 -0
  25. data/lib/primer/enabler.rbc +414 -0
  26. data/lib/primer/helpers.rbc +1438 -0
  27. data/lib/primer/lazyness.rb +63 -0
  28. data/lib/primer/lazyness.rbc +1442 -0
  29. data/lib/primer/real_time.rbc +1999 -0
  30. data/lib/primer/route_set.rb +1 -0
  31. data/lib/primer/route_set.rbc +1475 -0
  32. data/lib/primer/watcher/active_record_macros.rb +13 -3
  33. data/lib/primer/watcher/active_record_macros.rbc +1796 -0
  34. data/lib/primer/watcher/macros.rb +11 -14
  35. data/lib/primer/watcher/macros.rbc +1628 -0
  36. data/lib/primer/watcher.rb +2 -7
  37. data/lib/primer/watcher.rbc +1416 -0
  38. data/lib/primer/worker/active_record_agent.rb +30 -33
  39. data/lib/primer/worker/active_record_agent.rbc +2840 -0
  40. data/lib/primer/worker/changes_agent.rb +20 -0
  41. data/lib/primer/worker/changes_agent.rbc +578 -0
  42. data/lib/primer/worker.rb +20 -3
  43. data/lib/primer/worker.rbc +1254 -0
  44. data/lib/primer.rb +10 -2
  45. data/lib/primer.rbc +944 -0
  46. data/spec/db/test.sqlite3 +0 -0
  47. data/spec/models/artist.rb +3 -2
  48. data/spec/models/artist.rbc +288 -0
  49. data/spec/models/blog_post.rb +3 -1
  50. data/spec/models/blog_post.rbc +181 -0
  51. data/spec/models/calendar.rbc +209 -0
  52. data/spec/models/concert.rbc +211 -0
  53. data/spec/models/performance.rbc +177 -0
  54. data/spec/models/person.rb +1 -0
  55. data/spec/models/person.rbc +306 -0
  56. data/spec/models/watchable.rbc +363 -0
  57. data/spec/primer/bus_spec.rbc +940 -0
  58. data/spec/primer/cache_spec.rb +3 -3
  59. data/spec/primer/cache_spec.rbc +8535 -0
  60. data/spec/primer/helpers/erb_spec.rb +14 -14
  61. data/spec/primer/helpers/erb_spec.rbc +2485 -0
  62. data/spec/primer/lazyness_spec.rb +61 -0
  63. data/spec/primer/lazyness_spec.rbc +1408 -0
  64. data/spec/primer/watcher/active_record_spec.rb +15 -15
  65. data/spec/primer/watcher/active_record_spec.rbc +5202 -0
  66. data/spec/primer/watcher_spec.rbc +2645 -0
  67. data/spec/schema.rbc +775 -0
  68. data/spec/spec_helper.rb +3 -0
  69. data/spec/spec_helper.rbc +1193 -0
  70. data/spec/templates/page.erb +0 -1
  71. metadata +77 -70
  72. data/example/models/blog_post.rb +0 -4
@@ -2,8 +2,6 @@ module Primer
2
2
  module Watcher
3
3
 
4
4
  module Macros
5
- attr_reader :primer_watched_calls
6
-
7
5
  def self.extended(klass)
8
6
  if defined?(ActiveRecord) and klass < ActiveRecord::Base
9
7
  klass.extend(ActiveRecordMacros)
@@ -14,22 +12,21 @@ module Primer
14
12
  method_name.to_s.gsub(/[^a-z0-9_]$/i, '') + '_before_primer_patch'
15
13
  end
16
14
 
17
- def watch_calls_to(*methods)
18
- Watcher.register(self)
19
- @primer_watched_calls ||= []
20
- @primer_watched_calls += methods
15
+ def primer_watched_calls
16
+ @primer_watched_calls ||= (Macros === superclass) ?
17
+ superclass.primer_watched_calls.dup :
18
+ Set.new
21
19
  end
22
20
 
23
- def inherited(subclass)
24
- super
25
- calls = @primer_watched_calls || []
26
- subclass.watch_calls_to(*calls)
21
+ def watch_calls_to(*methods)
22
+ method_names = methods.map { |m| m.to_s }
23
+ primer_watched_calls.merge(method_names)
27
24
  end
28
25
 
29
26
  def patch_for_primer!
30
- return if @primer_watched_calls.nil? or @primer_patched
27
+ return if @primer_patched
31
28
  @primer_patched = true
32
- @primer_watched_calls.each do |method_name|
29
+ primer_watched_calls.each do |method_name|
33
30
  patch_method_for_primer(method_name)
34
31
  end
35
32
  end
@@ -48,9 +45,9 @@ module Primer
48
45
  end
49
46
 
50
47
  def unpatch_for_primer!
51
- return if @primer_watched_calls.nil? or not @primer_patched
48
+ return unless @primer_patched
52
49
  @primer_patched = false
53
- @primer_watched_calls.each do |method_name|
50
+ primer_watched_calls.each do |method_name|
54
51
  unpatch_method_for_primer(method_name)
55
52
  end
56
53
  end