serializer 0.0.9 → 1.0.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 (99) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +7 -12
  3. data/lib/serializer.rb +30 -28
  4. data/lib/serializer/initializer.rb +2 -2
  5. data/lib/serializer/railtie.rb +2 -2
  6. data/lib/serializer/version.rb +1 -1
  7. data/test/dummy/Rakefile +0 -1
  8. data/test/dummy/app/assets/stylesheets/application.css +3 -3
  9. data/test/dummy/app/controllers/application_controller.rb +1 -1
  10. data/test/dummy/app/controllers/main_controller.rb +2 -2
  11. data/test/dummy/app/controllers/users_controller.rb +17 -17
  12. data/test/dummy/app/models/account.rb +5 -3
  13. data/test/dummy/app/models/subscription.rb +3 -0
  14. data/test/dummy/app/models/user.rb +9 -7
  15. data/test/dummy/app/views/users/_form.html.haml +4 -4
  16. data/test/dummy/app/views/users/edit.html.haml +1 -1
  17. data/test/dummy/app/views/users/new.html.haml +1 -1
  18. data/test/dummy/bin/bundle +3 -0
  19. data/test/dummy/bin/rails +4 -0
  20. data/test/dummy/bin/rake +4 -0
  21. data/test/dummy/config.ru +1 -1
  22. data/test/dummy/config/application.rb +1 -34
  23. data/test/dummy/config/boot.rb +4 -9
  24. data/test/dummy/config/environment.rb +2 -2
  25. data/test/dummy/config/environments/development.rb +12 -13
  26. data/test/dummy/config/environments/production.rb +44 -24
  27. data/test/dummy/config/environments/test.rb +15 -18
  28. data/test/dummy/config/initializers/other.rb +8 -2
  29. data/test/dummy/config/routes.rb +3 -3
  30. data/test/dummy/db/development.sqlite3 +0 -0
  31. data/test/dummy/db/migrate/20110927222742_create_users.rb +1 -1
  32. data/test/dummy/db/migrate/20130207030140_create_subscriptions.rb +1 -1
  33. data/test/dummy/db/schema.rb +15 -11
  34. data/test/dummy/db/test.sqlite3 +0 -0
  35. data/test/dummy/log/development.log +109 -2307
  36. data/test/dummy/log/test.log +10981 -13387
  37. data/test/dummy/test/fixtures/users.yml +1 -1
  38. data/test/dummy/test/functional/main_controller_test.rb +1 -1
  39. data/test/dummy/test/functional/users_controller_test.rb +3 -3
  40. data/test/dummy/test/integration/user_create_test.rb +5 -5
  41. data/test/dummy/test/integration/user_update_test.rb +5 -5
  42. data/test/dummy/test/unit/account_test.rb +6 -6
  43. data/test/dummy/test/unit/user_test.rb +30 -30
  44. data/test/dummy/tmp/cache/assets/{D65/FC0/sprockets%2F650c155de4459a33bb5cc75d0cabc738 → development/sprockets/08ccbef19db178234499204fd36c0915} +0 -0
  45. data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  46. data/test/dummy/tmp/cache/assets/{DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 → development/sprockets/2f5173deea6c795b8fdde723bb4b63af} +0 -0
  47. data/test/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  48. data/test/dummy/tmp/cache/assets/development/sprockets/7682e37e0736cf2b209545cf7af4dc29 +0 -0
  49. data/test/dummy/tmp/cache/assets/{DBA/C70/sprockets%2F393a0a1b56d0da607ff53aa2fdb9ec31 → development/sprockets/88e88b185ff5a542c97cbb3b475e608d} +0 -0
  50. data/test/dummy/tmp/cache/assets/{C63/7C0/sprockets%2F951340282b11ba35a865d4e04300b3a8 → development/sprockets/b5282f83ab7001db941907c89cbdebe2} +0 -0
  51. data/test/dummy/tmp/cache/assets/{E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af → development/sprockets/cffd775d018f68ce5dba1ee0d951a994} +0 -0
  52. data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  53. data/test/dummy/tmp/cache/assets/{CB9/B60/sprockets%2Fe7b839a0806e5c20e5018197f56cd656 → development/sprockets/e27d2ca07f775a17ecaec5e004a62a56} +0 -0
  54. data/test/dummy/tmp/cache/assets/{D13/FD0/sprockets%2F8d733d18e3095c053f81f78d4a422afd → development/sprockets/eacda4f935d5f480cb099f85f49a65b2} +0 -0
  55. data/test/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  56. data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  57. data/test/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  58. data/test/dummy/tmp/cache/assets/{D76/4D0/sprockets%2F8a096b6dd59bfda3e461617a95524eaf → test/sprockets/30465d6ec3d7c977f30a3a297e7f57c1} +0 -0
  59. data/test/dummy/tmp/cache/assets/test/sprockets/306c1607f0ffbc40bac368573862cf58 +0 -0
  60. data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  61. data/test/dummy/tmp/cache/assets/test/sprockets/59e56a009695d42ebc54fb7f0b4f948d +0 -0
  62. data/test/dummy/tmp/cache/assets/test/sprockets/736bfbe6fcafc58b47f016154a407ffc +0 -0
  63. data/test/dummy/tmp/cache/assets/test/sprockets/7682e37e0736cf2b209545cf7af4dc29 +0 -0
  64. data/test/dummy/tmp/cache/assets/test/sprockets/88e88b185ff5a542c97cbb3b475e608d +0 -0
  65. data/test/dummy/tmp/cache/assets/test/sprockets/b5282f83ab7001db941907c89cbdebe2 +0 -0
  66. data/test/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  67. data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  68. data/test/dummy/tmp/cache/assets/test/sprockets/e27d2ca07f775a17ecaec5e004a62a56 +0 -0
  69. data/test/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  70. data/test/test_helper.rb +7 -0
  71. metadata +69 -89
  72. data/test/dummy/app/assets/javascripts/main.js +0 -0
  73. data/test/dummy/app/assets/javascripts/users.js +0 -0
  74. data/test/dummy/app/assets/stylesheets/main.css +0 -4
  75. data/test/dummy/app/assets/stylesheets/scaffold.css +0 -56
  76. data/test/dummy/app/assets/stylesheets/users.css +0 -4
  77. data/test/dummy/app/helpers/main_helper.rb +0 -2
  78. data/test/dummy/app/helpers/users_helper.rb +0 -2
  79. data/test/dummy/script/rails +0 -6
  80. data/test/dummy/tmp/cache/assets/C36/B50/sprockets%2F5e8353089687a8324957248c12a6ea87 +0 -0
  81. data/test/dummy/tmp/cache/assets/C8C/B80/sprockets%2F371bf96e99717688ed7313a0c53f4212 +0 -0
  82. data/test/dummy/tmp/cache/assets/CAA/620/sprockets%2F87b209c0c9da28094a8d5581a21262c6 +0 -0
  83. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  84. data/test/dummy/tmp/cache/assets/CD8/B70/sprockets%2F4050a4e5062ab95c9f32e9b6940821ea +0 -0
  85. data/test/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +0 -0
  86. data/test/dummy/tmp/cache/assets/D06/B40/sprockets%2F25fca4643219052b0d5c66cf2c71f72f +0 -0
  87. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  88. data/test/dummy/tmp/cache/assets/D46/650/sprockets%2Ff56253b5f374fff1a33fbbc9881c9124 +0 -0
  89. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  90. data/test/dummy/tmp/cache/assets/D52/D30/sprockets%2Fb1b780ccf384149569ceb76ee7bd5639 +0 -0
  91. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  92. data/test/dummy/tmp/cache/assets/D67/250/sprockets%2F2b4acc4bbcc24118e7707c269738f0bf +0 -0
  93. data/test/dummy/tmp/cache/assets/D67/B60/sprockets%2F5f1a0d05e77ca8b9a1fc2a47e17a8174 +0 -0
  94. data/test/dummy/tmp/cache/assets/D73/9B0/sprockets%2Ff6eeb33602682bd6ff6d1f177f6b142d +0 -0
  95. data/test/dummy/tmp/cache/assets/DA7/530/sprockets%2Fe36b8fcf5914a3a6bf058abfe7367b19 +0 -0
  96. data/test/dummy/tmp/cache/assets/DB7/6C0/sprockets%2F386e9196dd0f9efdce6f92ce93a6d107 +0 -0
  97. data/test/dummy/tmp/cache/assets/DC8/3B0/sprockets%2F0949dcec3ad4d7d2733ad5b523aeb7d4 +0 -0
  98. data/test/dummy/tmp/cache/assets/DE1/6A0/sprockets%2Fcae9aba95894da8a28fa8a5387dc565f +0 -0
  99. data/test/dummy/tmp/cache/assets/E1D/010/sprockets%2Fdffad412d86bfdfbb1f307d711da21d3 +0 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d5c912a41791921da90698e640dd7f296b91960d
4
+ data.tar.gz: 40a499a320d33c5df1adfe53d9654de15f915ab4
5
+ SHA512:
6
+ metadata.gz: 2420de6e82e18c54ca4c86b03d256bfefbe70ede0a4cf5b46ed3d6f24aeb50ef745b1d5214617ad86dbd0108be4091aad429916ca952b2b7e3ca9cdc04633cab
7
+ data.tar.gz: 2cb8c12561c4f40db78ba9cfd030cf594c17ab9ee64df71bc0bb28a02f96eecb99219b0b75e421969176c0b26ecf659e33a34ef447aabdfe68b5604eeff7f7ed
data/README.rdoc CHANGED
@@ -8,11 +8,8 @@ The gem is tested with:
8
8
 
9
9
  * Ruby (MRI) 2.0.0
10
10
  * Ruby (MRI) 1.9.3
11
- * Ruby (MRI) 1.9.2
12
- * Ruby (MRI) 1.8.7
13
- * Ruby (REE) 1.8.7
14
- * JRuby 1.7.2
15
- * Rubinius 1.2.4
11
+ * JRuby 1.7.6
12
+ * Rubinius 2.1.1
16
13
 
17
14
  == Installation
18
15
 
@@ -27,15 +24,15 @@ Migration:
27
24
  Model:
28
25
 
29
26
  class User < ActiveRecord::Base
30
-
27
+
31
28
  has_serialized :settings do |settings|
32
29
  settings.define :tw_share, type: :boolean, default: true
33
30
  settings.define :fb_share, type: :boolean, default: true
34
31
  settings.define :completion, type: :float, default: 50.0
35
32
  end
36
-
33
+
37
34
  end
38
-
35
+
39
36
  Form:
40
37
 
41
38
  <%= form_for @user do |form| %>
@@ -44,14 +41,12 @@ Form:
44
41
  <%= form.checkbox_box :tw_share %>
45
42
  <%= form.checkbox_box :fb_share %>
46
43
  <% end %>
47
-
48
- View:
44
+ iew:
49
45
 
50
46
  <%- if @user.tw_share? -%>
51
47
  ...
52
48
  <%- end -%>
53
-
54
- <%- if @user.fb_share? -%>
49
+ <%- if @user.fb_share? -%>
55
50
  ...
56
51
  <%- end -%>
57
52
 
data/lib/serializer.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  require 'serializer/railtie'
2
2
  require 'serializer/initializer'
3
3
 
4
- module Serializer
5
-
4
+ module Serializer
5
+
6
6
  def self.included(base)
7
7
  base.extend ClassMethods
8
8
  end
9
-
9
+
10
10
  module ClassMethods
11
-
11
+
12
12
  # Add serializer to a class.
13
13
  #
14
14
  # Usage:
@@ -18,73 +18,75 @@ module Serializer
18
18
  # settings.define :fb_share, default: true, type: :boolean
19
19
  # end
20
20
  #
21
-
21
+
22
22
  def has_serialized(name, &block)
23
23
  serialize name, Hash
24
-
24
+
25
25
  initializer = Serializer::Initializer.new
26
26
  block.call(initializer)
27
-
27
+
28
28
  initializer.each do |method, options|
29
-
29
+
30
30
  define_method "#{method}" do
31
31
  hash = send(name)
32
32
  result = hash[method.to_sym] if hash
33
-
33
+
34
34
  if hash.nil? or result.nil?
35
35
  send("#{name}=", {}) unless send(name)
36
36
  hash = send(name)
37
-
37
+
38
38
  result = options[:default]
39
39
  result = result.clone if result.duplicable?
40
-
40
+
41
41
  hash[method.to_sym] = result
42
42
  end
43
-
43
+
44
44
  return result
45
45
  end
46
-
46
+
47
47
  define_method "#{method}?" do
48
48
  hash = send(name)
49
49
  result = hash[method.to_sym] if hash
50
-
50
+
51
51
  if hash.nil? or result.nil?
52
52
  send("#{name}=", {}) unless send(name)
53
53
  hash = send(name)
54
-
54
+
55
55
  result = options[:default]
56
56
  result = result.clone if result.duplicable?
57
-
57
+
58
58
  hash[method.to_sym] = result
59
59
  end
60
-
60
+
61
61
  return result
62
62
  end
63
-
63
+
64
64
  define_method "#{method}=" do |value|
65
- send("#{name}=", {}) unless send(name)
66
- hash = send(name)
67
-
65
+ original = send(name) || {}
66
+
68
67
  if options[:type] and value
69
68
  case options[:type].to_sym
70
69
  when :float then value = value.to_f if value.respond_to? :to_f
71
70
  when :integer then value = value.to_i if value.respond_to? :to_i
72
71
  when :string then value = value.to_str if value.respond_to? :to_str
73
72
  when :symbol then value = value.to_sym if value.respond_to? :to_sym
74
- when :boolean then
73
+ when :boolean then
75
74
  value = true if value.eql? "true"
76
75
  value = false if value.eql? "false"
77
76
  value = !value.to_i.zero? if value.respond_to? :to_i
78
77
  end
79
78
  end
80
-
81
- attribute_will_change!(name)
82
- send(name)[method.to_sym] = value
79
+
80
+ modified = original.clone
81
+ modified[method.to_sym] = value
82
+
83
+ send("#{name}_will_change!") unless modified.eql?(original)
84
+ send("#{name}=", modified)
83
85
  end
84
-
86
+
85
87
  end
86
88
  end
87
-
89
+
88
90
  end
89
-
91
+
90
92
  end
@@ -1,11 +1,11 @@
1
1
  module Serializer
2
2
 
3
3
  class Initializer < Hash
4
-
4
+
5
5
  def define(name, options = {})
6
6
  self[name] = options
7
7
  end
8
-
8
+
9
9
  end
10
10
 
11
11
  end
@@ -3,12 +3,12 @@ require 'rails'
3
3
 
4
4
  module Serializer
5
5
  class Railtie < Rails::Railtie
6
-
6
+
7
7
  initializer 'serializer.initialize' do
8
8
  ActiveSupport.on_load(:active_record) do
9
9
  ActiveRecord::Base.send :include, Serializer
10
10
  end
11
11
  end
12
-
12
+
13
13
  end
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module Serializer
2
- VERSION = "0.0.9"
2
+ VERSION = "1.0.0"
3
3
  end
data/test/dummy/Rakefile CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env rake
2
1
  # Add your own tasks in files placed in lib/tasks ending in .rake,
3
2
  # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
4
3
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  *= require_self
3
- *= require_tree .
3
+ *= require_tree .
4
4
  */
5
5
 
6
6
  html, body
@@ -10,7 +10,7 @@ html, body
10
10
  font-weight: normal;
11
11
  }
12
12
 
13
- .field_with_errors
14
- {
13
+ .field_with_errors
14
+ {
15
15
  display: inline;
16
16
  }
@@ -1,3 +1,3 @@
1
1
  class ApplicationController < ActionController::Base
2
- protect_from_forgery
2
+ protect_from_forgery :with => :exception
3
3
  end
@@ -1,10 +1,10 @@
1
1
  class MainController < ApplicationController
2
-
2
+
3
3
  # GET /
4
4
  def index
5
5
  respond_to do |format|
6
6
  format.html
7
7
  end
8
8
  end
9
-
9
+
10
10
  end
@@ -1,57 +1,57 @@
1
1
  class UsersController < ApplicationController
2
-
2
+
3
3
  respond_to :html
4
-
4
+
5
5
  # GET /users
6
6
  def index
7
7
  @users = User.all
8
-
8
+
9
9
  respond_with(@users)
10
10
  end
11
-
11
+
12
12
  # GET /users/:id
13
13
  def show
14
14
  @user = User.find(params[:id])
15
-
15
+
16
16
  respond_with(@user)
17
17
  end
18
-
18
+
19
19
  # GET /users/new
20
20
  def new
21
21
  @user = User.new
22
-
22
+
23
23
  respond_with(@user)
24
24
  end
25
-
25
+
26
26
  # GET /users/:id/edit
27
27
  def edit
28
28
  @user = User.find(params[:id])
29
-
29
+
30
30
  respond_with(@user)
31
31
  end
32
-
32
+
33
33
  # POST /users
34
34
  def create
35
35
  @user = User.create(params[:user])
36
-
36
+
37
37
  respond_with(@user)
38
38
  end
39
-
40
- # PUT /users/:id
39
+
40
+ # PATCH /users/:id
41
41
  def update
42
42
  @user = User.find(params[:id])
43
43
  @user.attributes = params[:user]
44
44
  @user.save
45
-
45
+
46
46
  respond_with(@user)
47
47
  end
48
-
48
+
49
49
  # DELETE /users/:id
50
50
  def destroy
51
51
  @user = User.find(params[:id])
52
52
  @user.destroy
53
-
53
+
54
54
  respond_with(@user)
55
55
  end
56
-
56
+
57
57
  end
@@ -1,7 +1,9 @@
1
1
  class Account < ActiveRecord::Base
2
-
2
+
3
3
  has_one :user
4
-
4
+
5
+ attr_accessible :name
6
+ attr_accessible :user_attributes
5
7
  accepts_nested_attributes_for :user
6
-
8
+
7
9
  end
@@ -1,5 +1,8 @@
1
1
  class Subscription < ActiveRecord::Base
2
+
2
3
  belongs_to :user
3
4
 
5
+ attr_accessible :user_attributes
4
6
  accepts_nested_attributes_for :user
7
+
5
8
  end
@@ -1,24 +1,26 @@
1
1
  class User < ActiveRecord::Base
2
-
2
+
3
3
  belongs_to :account
4
4
  has_one :subscription
5
-
5
+
6
+ attr_accessible :name, :email
7
+ attr_accessible :tw_share, :fb_share, :tb_share, :status, :location, :percentage, :permissions, :mystery, :notifications
8
+
6
9
  has_serialized :settings do |settings|
7
10
  settings.define :tw_share, :default => true, :type => :boolean
8
11
  settings.define :fb_share, :default => true, :type => :boolean
9
12
  settings.define :tb_share, :default => true, :type => :boolean
10
-
13
+
11
14
  settings.define :status, :default => :user, :type => :symbol
12
15
  settings.define :location, :type => :string
13
-
16
+
14
17
  settings.define :percentage, :default => 0.0, :type => :float
15
-
18
+
16
19
  settings.define :permissions, :default => [], :type => :array
17
-
20
+
18
21
  settings.define :mystery
19
22
 
20
23
  settings.define :notifications, :type => :boolean, :default => false
21
24
  end
22
25
 
23
-
24
26
  end
@@ -1,10 +1,10 @@
1
- = form_for(@user) do |f|
2
- - if @user.errors.any?
1
+ = form_for(user) do |f|
2
+ - if user.errors.any?
3
3
  %p
4
- = pluralize(@user.errors.count, "error")
4
+ = pluralize(user.errors.count, "error")
5
5
  prohibited this user from being saved:
6
6
  %ul
7
- - @user.errors.each do |attribute, message|
7
+ - user.errors.each do |attribute, message|
8
8
  %li= "#{attribute} : #{message}"
9
9
  = render 'fields', :f => f
10
10
  .actions
@@ -1,4 +1,4 @@
1
1
  %h1 Edit
2
- = render 'form'
2
+ = render 'form', :user => @user
3
3
  = link_to 'Show', @user
4
4
  = link_to 'Back', users_path
@@ -1,3 +1,3 @@
1
1
  %h1 New
2
- = render 'form'
2
+ = render 'form', :user => @user
3
3
  = link_to 'Back', users_path
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
3
+ require_relative '../config/boot'
4
+ require 'rails/commands'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../config/boot'
3
+ require 'rake'
4
+ Rake.application.run
data/test/dummy/config.ru CHANGED
@@ -1,4 +1,4 @@
1
1
  # This file is used by Rack-based servers to start the application.
2
2
 
3
3
  require ::File.expand_path('../config/environment', __FILE__)
4
- run Dummy::Application
4
+ run Rails.application