adify 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -47,4 +47,5 @@ pkg
47
47
  # For rubinius:
48
48
  #*.rbc
49
49
 
50
- .idea
50
+ .idea
51
+ .bin
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adify (0.2.0)
4
+ adify (0.3.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -5,6 +5,10 @@ Adify is a simple to use (hopefully) rails gem that builds up ad tags for cashin
5
5
  This is just the initial version and isn't really complete. I haven't worked with other ad servers so it might be a little tailored to double click. Also the generator is butchered right now.
6
6
 
7
7
  == Releases
8
+ === Version 0.3.0
9
+ * Bugfix: clone before merging. If key was missing from an action in a controller it would appear magically if there was a base controller
10
+ * added tests to prove bug
11
+ * use singletons to set the atribtutes
8
12
  === Version 0.2.0
9
13
  * Refactored everything to use one module
10
14
  * Tested with rails 2 & 3
@@ -17,7 +21,7 @@ This is just the initial version and isn't really complete. I haven't worked wi
17
21
  * Do stuff
18
22
  * Tests. Pull requests without tests will be flogged publically. Feel free to flog me for forgetting tests then add them.\
19
23
 
20
- == Copyright
24
+ == Copyright
21
25
 
22
26
  Copyright (c) 2011 Eric Harrison. See LICENSE.txt for
23
27
  further details.
@@ -9,20 +9,23 @@ module Adify
9
9
  end
10
10
 
11
11
  def adify(args)
12
- self.class_eval <<-EOM
12
+ if self.class == Class
13
13
  include Adify::Methods
14
14
  extend Adify::Methods
15
- EOM
15
+ end
16
+ singleton = class << self; self; end
17
+ singleton.module_eval do
18
+ define_method(:adify_attributes=) do |hash|
19
+ @adify_attributes = hash
20
+ end
21
+ end
22
+
16
23
  self.adify_attributes = args
17
24
  end
18
25
 
19
26
  module Methods
20
- def adify_attributes=(hash)
21
- @adify_attributes = hash
22
- end
23
-
24
27
  def adify_attributes
25
- my_attributes = @adify_attributes || {}
28
+ my_attributes = get_adify_attributes
26
29
  merge_with = self.respond_to?(:ancestors) ? self.ancestors.slice(1,self.ancestors.length).select{|c| c.respond_to?(:adify_attributes)}.first : self.class
27
30
  merge_with.respond_to?(:adify_attributes) ? merge_with.adify_attributes.adify_merge(my_attributes) : my_attributes
28
31
  end
@@ -30,10 +33,13 @@ module Adify
30
33
  def adification(item = nil)
31
34
  ad_attr = item.nil? ? self.adify_attributes : self.adify_attributes.adify_merge(item.adify_attributes)
32
35
  item_for_adification = item.nil? ? self : item
33
- ad_attr.update_values{|v| get_adify_value(item_for_adification,v)}.symbolize_keys_recursively
36
+ ad_attr.update_values{|v| get_adify_value(item_for_adification,v)}.symbolize_keys_recursively.clone
34
37
  end
35
38
 
36
39
  private
40
+ def get_adify_attributes
41
+ (@adify_attributes || {}).clone
42
+ end
37
43
  def get_adify_value(item,value)
38
44
  case value.class.to_s
39
45
  when "Array" then value.each.collect{|v| get_adify_value(item,v)}
@@ -1,3 +1,3 @@
1
1
  module Adify
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -8,7 +8,19 @@ class Item < ActiveRecord::Base
8
8
  end
9
9
 
10
10
  def proc
11
- "proc return"
11
+ "item return"
12
+ end
13
+ end
14
+
15
+ class Thing < ActiveRecord::Base
16
+ adify :item_only => 'thing', :override_by_item => 'item'
17
+
18
+ def id
19
+ "item id via symbol"
20
+ end
21
+
22
+ def proc
23
+ "thing return"
12
24
  end
13
25
  end
14
26
 
@@ -21,17 +33,20 @@ class MyController < MyBaseController
21
33
 
22
34
  def index
23
35
  #maybe rename this
24
- adify(:override_by_item => "Action", :override_by_action => 'Action', :action_only => Proc.new(){|item| item.proc})
25
- item = Item.new
26
- @adtag = adification(item)
36
+ adify(:override_by_item => "Action", :override_by_action => 'Action', :index_only => Proc.new(){|item| item.proc})
37
+ @adtag = adification(Item.new)
38
+ end
39
+
40
+ def show
41
+ adify(:override_by_item => "Action", :override_by_action => 'Action', :show_only =>'foo')
42
+ [adification(Item.new), adification(Thing.new)]
27
43
  end
28
44
  end
29
45
 
30
46
  describe Adify do
31
47
  describe 'adification' do
32
48
  it "should merge things properly" do
33
- app = MyController.new
34
- adify = app.index
49
+ adify = MyController.new.index
35
50
  adify.should_not be_nil
36
51
  adify.should == {
37
52
  :override_by_item => "item",
@@ -39,9 +54,15 @@ describe Adify do
39
54
  :override_by_controller => "controller",
40
55
  :override_by_action => "Action",
41
56
  :controller_only => :symbol_no_method,
42
- :action_only => "proc return",
57
+ :index_only => "item return",
43
58
  :item_only => "item id via symbol"
44
59
  }
45
60
  end
61
+
62
+ it "should not share adify attributes between classes" do
63
+ adifications = MyController.new.show
64
+ adifications.first.should == {:override_by_item=>"item", :base_only=>["base_arry_only_1", {:item1=>"base array only 2"}], :override_by_controller=>"controller", :override_by_action=>"Action", :controller_only=>:symbol_no_method, :item_only => 'item id via symbol', :show_only => 'foo'}
65
+ adifications.last.should == {:override_by_item=>"item", :base_only=>["base_arry_only_1", {:item1=>"base array only 2"}], :override_by_controller=>"controller", :override_by_action=>"Action", :controller_only=>:symbol_no_method, :item_only=>"thing", :show_only => 'foo'}
66
+ end
46
67
  end
47
68
  end
@@ -24,5 +24,10 @@ ActiveRecord::Schema.define(:version => 1) do
24
24
  t.datetime :updated_at
25
25
  t.string :name
26
26
  end
27
+ create_table :things do |t|
28
+ t.datetime :created_at
29
+ t.datetime :updated_at
30
+ t.string :name
31
+ end
27
32
  end
28
33
 
metadata CHANGED
@@ -1,61 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: adify
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
4
5
  prerelease:
5
- version: 0.2.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Eric Harrison
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-08 00:00:00 +10:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-14 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: rspec
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2156095020 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
25
22
  type: :development
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: rails
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2156095020
25
+ - !ruby/object:Gem::Dependency
26
+ name: rails
27
+ requirement: &2156089440 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
36
33
  type: :development
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: sqlite3
40
34
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2156089440
36
+ - !ruby/object:Gem::Dependency
37
+ name: sqlite3
38
+ requirement: &2156089020 !ruby/object:Gem::Requirement
42
39
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
47
44
  type: :development
48
- version_requirements: *id003
49
- description: Adify lets you create ad tags easily and quickly with a simple common structure
50
- email:
45
+ prerelease: false
46
+ version_requirements: *2156089020
47
+ description: Adify lets you create ad tags easily and quickly with a simple common
48
+ structure
49
+ email:
51
50
  - eric@rubynooby.com
52
51
  executables: []
53
-
54
52
  extensions: []
55
-
56
53
  extra_rdoc_files: []
57
-
58
- files:
54
+ files:
59
55
  - .document
60
56
  - .gitignore
61
57
  - .rspec
@@ -76,34 +72,30 @@ files:
76
72
  - lib/generators/adify_generator.rb
77
73
  - spec/adify_spec.rb
78
74
  - spec/spec_helper.rb
79
- has_rdoc: true
80
75
  homepage: http://www.rubynooby.com
81
76
  licenses: []
82
-
83
77
  post_install_message:
84
78
  rdoc_options: []
85
-
86
- require_paths:
79
+ require_paths:
87
80
  - lib
88
- required_ruby_version: !ruby/object:Gem::Requirement
81
+ required_ruby_version: !ruby/object:Gem::Requirement
89
82
  none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: "0"
94
- required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
88
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- version: "0"
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
100
93
  requirements: []
101
-
102
94
  rubyforge_project:
103
- rubygems_version: 1.5.1
95
+ rubygems_version: 1.8.10
104
96
  signing_key:
105
97
  specification_version: 3
106
98
  summary: create ad tags for common ad servers easily.
107
- test_files:
99
+ test_files:
108
100
  - spec/adify_spec.rb
109
101
  - spec/spec_helper.rb