serializer 0.0.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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