datts_right 0.0.14 → 0.0.15

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/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- datts_right (0.0.13)
4
+ datts_right (0.0.14)
5
5
  datts_right
6
6
  rails (>= 3.0.0)
7
7
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.14
1
+ 0.0.15
data/datts_right.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{datts_right}
8
- s.version = "0.0.14"
8
+ s.version = "0.0.15"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ramon Tayag"]
@@ -218,6 +218,18 @@ Gem::Specification.new do |s|
218
218
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
219
219
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
220
220
  s.add_development_dependency(%q<rcov>, [">= 0"])
221
+ s.add_development_dependency(%q<autotest>, [">= 0"])
222
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
223
+ s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
224
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
225
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
226
+ s.add_development_dependency(%q<rcov>, [">= 0"])
227
+ s.add_development_dependency(%q<autotest>, [">= 0"])
228
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
229
+ s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
230
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
231
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
232
+ s.add_development_dependency(%q<rcov>, [">= 0"])
221
233
  else
222
234
  s.add_dependency(%q<datts_right>, [">= 0"])
223
235
  s.add_dependency(%q<rails>, [">= 3.0.0"])
@@ -378,6 +390,18 @@ Gem::Specification.new do |s|
378
390
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
379
391
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
380
392
  s.add_dependency(%q<rcov>, [">= 0"])
393
+ s.add_dependency(%q<autotest>, [">= 0"])
394
+ s.add_dependency(%q<sqlite3>, [">= 0"])
395
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
396
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
397
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
398
+ s.add_dependency(%q<rcov>, [">= 0"])
399
+ s.add_dependency(%q<autotest>, [">= 0"])
400
+ s.add_dependency(%q<sqlite3>, [">= 0"])
401
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
402
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
403
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
404
+ s.add_dependency(%q<rcov>, [">= 0"])
381
405
  end
382
406
  else
383
407
  s.add_dependency(%q<datts_right>, [">= 0"])
@@ -539,6 +563,18 @@ Gem::Specification.new do |s|
539
563
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
540
564
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
541
565
  s.add_dependency(%q<rcov>, [">= 0"])
566
+ s.add_dependency(%q<autotest>, [">= 0"])
567
+ s.add_dependency(%q<sqlite3>, [">= 0"])
568
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
569
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
570
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
571
+ s.add_dependency(%q<rcov>, [">= 0"])
572
+ s.add_dependency(%q<autotest>, [">= 0"])
573
+ s.add_dependency(%q<sqlite3>, [">= 0"])
574
+ s.add_dependency(%q<rspec>, ["~> 2.3.0"])
575
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
576
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
577
+ s.add_dependency(%q<rcov>, [">= 0"])
542
578
  end
543
579
  end
544
580
 
@@ -11,6 +11,17 @@ module DattsRight
11
11
  return false
12
12
  end
13
13
 
14
+ def add_dynamic_attribute!(name, object_type, value=nil)
15
+ key = name.to_s.underscore
16
+ return false if self.class.columns_hash[key] # if key already exists as a normal attribute
17
+ unless dynamic_attribute?(key)
18
+ new_dynamic_attribute = dynamic_attributes.create! :name => name, :attr_key => key, :object_type => object_type, "#{object_type}_value".to_sym => value
19
+ @dynamic_attributes_cache[key.to_sym] = new_dynamic_attribute
20
+ return new_dynamic_attribute
21
+ end
22
+ return false
23
+ end
24
+
14
25
  def remove_dynamic_attribute(name)
15
26
  # Remove from the cache
16
27
  @dynamic_attributes_cache.delete(name.to_sym)
@@ -163,6 +174,7 @@ module DattsRight
163
174
  end
164
175
 
165
176
  alias :add_datt :add_dynamic_attribute
177
+ alias :add_datt! :add_dynamic_attribute!
166
178
  alias :remove_datt :remove_dynamic_attribute
167
179
  alias :read_datt :read_dynamic_attribute
168
180
  alias :write_datt :write_dynamic_attribute
@@ -1,37 +1,50 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
- describe DattsRight, ".add_dynamic_attribute(attr_key, object_type)" do
3
+ describe DattsRight do
4
4
  before do
5
5
  reset_database
6
6
  @page = Page.create
7
7
  end
8
8
 
9
- it "should be aliased by add_datt" do
10
- Page.instance_method(:add_dynamic_attribute).should == Page.instance_method(:add_datt)
11
- end
9
+ describe ".add_dynamic_attribute(attr_key, object_type)" do
10
+ it "should be aliased by add_datt" do
11
+ Page.instance_method(:add_dynamic_attribute).should == Page.instance_method(:add_datt)
12
+ end
12
13
 
13
- it "should add a dynamic attribute" do
14
- @page.add_dynamic_attribute(:rocks, "string")
15
- @page.dynamic_attribute_details(:rocks).value.should be_nil
16
- @page.add_dynamic_attribute(:rock, "string", "123")
17
- @page.read_datt(:rock).should == "123"
18
- @page.dynamic_attribute_details(:rock).value.should == "123"
19
- end
14
+ it "should add a dynamic attribute" do
15
+ @page.add_dynamic_attribute(:rocks, "string")
16
+ @page.dynamic_attribute_details(:rocks).value.should be_nil
17
+ @page.add_dynamic_attribute(:rock, "string", "123")
18
+ @page.read_datt(:rock).should == "123"
19
+ @page.dynamic_attribute_details(:rock).value.should == "123"
20
+ end
20
21
 
21
- it "should ignore when trying to add same attribute" do
22
- @page.add_dynamic_attribute(:rocks, "string")
23
- @page.add_dynamic_attribute(:rocks, "integer")
24
- @page.dynamic_attribute_details(:rocks).object_type.should == "string"
25
- end
22
+ it "should ignore when trying to add same attribute" do
23
+ @page.add_dynamic_attribute(:rocks, "string")
24
+ @page.add_dynamic_attribute(:rocks, "integer")
25
+ @page.dynamic_attribute_details(:rocks).object_type.should == "string"
26
+ end
26
27
 
27
- it "should return false if the method that is being added already exists" do
28
- @page.add_dynamic_attribute(:name, "text").should be_false
28
+ it "should return false if the method that is being added already exists" do
29
+ @page.add_dynamic_attribute(:name, "text").should be_false
30
+ end
31
+
32
+ it "should not make any changes to the original attribute" do
33
+ @page.update_attribute(:name, "juno")
34
+ @page.add_dynamic_attribute(:name, "text")
35
+ @page.name.should == "juno"
36
+ end
29
37
  end
30
38
 
31
- it "should not make any changes to the original attribute" do
32
- @page.update_attribute(:name, "juno")
33
- @page.add_dynamic_attribute(:name, "text")
34
- @page.name.should == "juno"
39
+ describe ".add_dynamic_attribute!" do
40
+ it "should be aliased by add_datt!" do
41
+ Page.instance_method(:add_dynamic_attribute!).should == Page.instance_method(:add_datt!)
42
+ end
43
+
44
+ it "should create the dynamic attribute, not waiting to save the attributable record" do
45
+ @page.add_dynamic_attribute!(:price, "integer", 200)
46
+ Page.last.price.should == 200
47
+ end
35
48
  end
36
49
  end
37
50
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datts_right
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 14
10
- version: 0.0.14
9
+ - 15
10
+ version: 0.0.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ramon Tayag
@@ -2404,6 +2404,186 @@ dependencies:
2404
2404
  name: rcov
2405
2405
  version_requirements: *id159
2406
2406
  prerelease: false
2407
+ - !ruby/object:Gem::Dependency
2408
+ type: :development
2409
+ requirement: &id160 !ruby/object:Gem::Requirement
2410
+ none: false
2411
+ requirements:
2412
+ - - ">="
2413
+ - !ruby/object:Gem::Version
2414
+ hash: 3
2415
+ segments:
2416
+ - 0
2417
+ version: "0"
2418
+ name: autotest
2419
+ version_requirements: *id160
2420
+ prerelease: false
2421
+ - !ruby/object:Gem::Dependency
2422
+ type: :development
2423
+ requirement: &id161 !ruby/object:Gem::Requirement
2424
+ none: false
2425
+ requirements:
2426
+ - - ">="
2427
+ - !ruby/object:Gem::Version
2428
+ hash: 3
2429
+ segments:
2430
+ - 0
2431
+ version: "0"
2432
+ name: sqlite3
2433
+ version_requirements: *id161
2434
+ prerelease: false
2435
+ - !ruby/object:Gem::Dependency
2436
+ type: :development
2437
+ requirement: &id162 !ruby/object:Gem::Requirement
2438
+ none: false
2439
+ requirements:
2440
+ - - ~>
2441
+ - !ruby/object:Gem::Version
2442
+ hash: 3
2443
+ segments:
2444
+ - 2
2445
+ - 3
2446
+ - 0
2447
+ version: 2.3.0
2448
+ name: rspec
2449
+ version_requirements: *id162
2450
+ prerelease: false
2451
+ - !ruby/object:Gem::Dependency
2452
+ type: :development
2453
+ requirement: &id163 !ruby/object:Gem::Requirement
2454
+ none: false
2455
+ requirements:
2456
+ - - ~>
2457
+ - !ruby/object:Gem::Version
2458
+ hash: 23
2459
+ segments:
2460
+ - 1
2461
+ - 0
2462
+ - 0
2463
+ version: 1.0.0
2464
+ name: bundler
2465
+ version_requirements: *id163
2466
+ prerelease: false
2467
+ - !ruby/object:Gem::Dependency
2468
+ type: :development
2469
+ requirement: &id164 !ruby/object:Gem::Requirement
2470
+ none: false
2471
+ requirements:
2472
+ - - ~>
2473
+ - !ruby/object:Gem::Version
2474
+ hash: 7
2475
+ segments:
2476
+ - 1
2477
+ - 5
2478
+ - 2
2479
+ version: 1.5.2
2480
+ name: jeweler
2481
+ version_requirements: *id164
2482
+ prerelease: false
2483
+ - !ruby/object:Gem::Dependency
2484
+ type: :development
2485
+ requirement: &id165 !ruby/object:Gem::Requirement
2486
+ none: false
2487
+ requirements:
2488
+ - - ">="
2489
+ - !ruby/object:Gem::Version
2490
+ hash: 3
2491
+ segments:
2492
+ - 0
2493
+ version: "0"
2494
+ name: rcov
2495
+ version_requirements: *id165
2496
+ prerelease: false
2497
+ - !ruby/object:Gem::Dependency
2498
+ type: :development
2499
+ requirement: &id166 !ruby/object:Gem::Requirement
2500
+ none: false
2501
+ requirements:
2502
+ - - ">="
2503
+ - !ruby/object:Gem::Version
2504
+ hash: 3
2505
+ segments:
2506
+ - 0
2507
+ version: "0"
2508
+ name: autotest
2509
+ version_requirements: *id166
2510
+ prerelease: false
2511
+ - !ruby/object:Gem::Dependency
2512
+ type: :development
2513
+ requirement: &id167 !ruby/object:Gem::Requirement
2514
+ none: false
2515
+ requirements:
2516
+ - - ">="
2517
+ - !ruby/object:Gem::Version
2518
+ hash: 3
2519
+ segments:
2520
+ - 0
2521
+ version: "0"
2522
+ name: sqlite3
2523
+ version_requirements: *id167
2524
+ prerelease: false
2525
+ - !ruby/object:Gem::Dependency
2526
+ type: :development
2527
+ requirement: &id168 !ruby/object:Gem::Requirement
2528
+ none: false
2529
+ requirements:
2530
+ - - ~>
2531
+ - !ruby/object:Gem::Version
2532
+ hash: 3
2533
+ segments:
2534
+ - 2
2535
+ - 3
2536
+ - 0
2537
+ version: 2.3.0
2538
+ name: rspec
2539
+ version_requirements: *id168
2540
+ prerelease: false
2541
+ - !ruby/object:Gem::Dependency
2542
+ type: :development
2543
+ requirement: &id169 !ruby/object:Gem::Requirement
2544
+ none: false
2545
+ requirements:
2546
+ - - ~>
2547
+ - !ruby/object:Gem::Version
2548
+ hash: 23
2549
+ segments:
2550
+ - 1
2551
+ - 0
2552
+ - 0
2553
+ version: 1.0.0
2554
+ name: bundler
2555
+ version_requirements: *id169
2556
+ prerelease: false
2557
+ - !ruby/object:Gem::Dependency
2558
+ type: :development
2559
+ requirement: &id170 !ruby/object:Gem::Requirement
2560
+ none: false
2561
+ requirements:
2562
+ - - ~>
2563
+ - !ruby/object:Gem::Version
2564
+ hash: 7
2565
+ segments:
2566
+ - 1
2567
+ - 5
2568
+ - 2
2569
+ version: 1.5.2
2570
+ name: jeweler
2571
+ version_requirements: *id170
2572
+ prerelease: false
2573
+ - !ruby/object:Gem::Dependency
2574
+ type: :development
2575
+ requirement: &id171 !ruby/object:Gem::Requirement
2576
+ none: false
2577
+ requirements:
2578
+ - - ">="
2579
+ - !ruby/object:Gem::Version
2580
+ hash: 3
2581
+ segments:
2582
+ - 0
2583
+ version: "0"
2584
+ name: rcov
2585
+ version_requirements: *id171
2586
+ prerelease: false
2407
2587
  description: Creates a separate table that saves all your dynamic attributes.
2408
2588
  email: ramon@tayag.net
2409
2589
  executables: []