synaptic 0.0.1

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.
data/LICENSE ADDED
File without changes
data/README ADDED
File without changes
@@ -0,0 +1,28 @@
1
+ module Synaptic
2
+ module ActiveRecord
3
+ module Extensions
4
+
5
+ def self.included base
6
+ base.extend( ClassMethods )
7
+ end
8
+
9
+ module ClassMethods
10
+
11
+ def neuron options={}
12
+ neurons[self.model_name] = Synaptic::Neuron.new( self, options )
13
+ end
14
+
15
+ def neurons
16
+ @@neurons ||= {}
17
+ end
18
+
19
+ def synapsed?
20
+ !!neurons[self.model_name]
21
+ end
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+
28
+ ActiveRecord::Base.send(:include, Synaptic::ActiveRecord::Extensions)
@@ -0,0 +1,2 @@
1
+ require 'active_record/extensions'
2
+ require 'synaptic/neuron'
@@ -0,0 +1,19 @@
1
+ module Synaptic
2
+ class Neuron
3
+ def initialize model, options
4
+ @model = model
5
+
6
+ @white_list = options[:only] || []
7
+ @black_list = options[:except] || []
8
+ end
9
+
10
+ def synapses
11
+ @synapses ||= begin
12
+ synapses = @model.reflect_on_all_associations
13
+ synapses.select!{ |x| @white_list.include?( x.name ) } unless @white_list.empty?
14
+ synapses.reject!{ |x| @black_list.include?( x.name ) } unless @black_list.empty?
15
+ synapses
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ module Synaptic
2
+ MAJOR = 0
3
+ MINOR = 0
4
+ BUILD = 1
5
+
6
+ VERSION = "#{MAJOR}.#{MINOR}.#{BUILD}"
7
+ end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $:.unshift lib unless $:.include?(lib)
4
+
5
+ require './lib/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "synaptic"
9
+ s.version = Synaptic::VERSION
10
+ s.platform = Gem::Platform::RUBY
11
+ s.authors = ["Christian Blais", "Thierry Joyal"]
12
+ s.email = ["christ.blais@gmail.com", "thierry.joyal@gmail.com"]
13
+ s.homepage = "http://github.com/christianblais/synaptic"
14
+ s.summary = "Synaptic reporting tool for ActiveRecord"
15
+ s.description = "Synaptic reporting tool for ActiveRecord"
16
+
17
+ s.add_dependency 'activerecord', '>=3.0.0'
18
+
19
+ s.files = [
20
+ 'LICENSE',
21
+ 'README',
22
+ 'synaptic.gemspec',
23
+ 'lib/synaptic.rb',
24
+ 'lib/version.rb',
25
+ 'lib/active_record/extensions.rb',
26
+ 'lib/synaptic/neuron.rb'
27
+ ]
28
+
29
+ s.require_paths = ['lib', 'test']
30
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: synaptic
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Christian Blais
9
+ - Thierry Joyal
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2011-06-10 00:00:00 -04:00
15
+ default_executable:
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: activerecord
19
+ prerelease: false
20
+ requirement: &id001 !ruby/object:Gem::Requirement
21
+ none: false
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 3.0.0
26
+ type: :runtime
27
+ version_requirements: *id001
28
+ description: Synaptic reporting tool for ActiveRecord
29
+ email:
30
+ - christ.blais@gmail.com
31
+ - thierry.joyal@gmail.com
32
+ executables: []
33
+
34
+ extensions: []
35
+
36
+ extra_rdoc_files: []
37
+
38
+ files:
39
+ - LICENSE
40
+ - README
41
+ - synaptic.gemspec
42
+ - lib/synaptic.rb
43
+ - lib/version.rb
44
+ - lib/active_record/extensions.rb
45
+ - lib/synaptic/neuron.rb
46
+ has_rdoc: true
47
+ homepage: http://github.com/christianblais/synaptic
48
+ licenses: []
49
+
50
+ post_install_message:
51
+ rdoc_options: []
52
+
53
+ require_paths:
54
+ - lib
55
+ - test
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: "0"
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.6.2
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: Synaptic reporting tool for ActiveRecord
75
+ test_files: []
76
+