houston-core 0.8.3 → 0.8.4
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/app/assets/javascripts/houston/core/app.coffee +23 -0
- data/app/controllers/projects_controller.rb +1 -1
- data/app/helpers/avatar_helper.rb +1 -1
- data/app/models/project.rb +1 -1
- data/houston-core.gemspec +1 -1
- data/lib/houston/boot/active_record_serializer.rb +2 -6
- data/lib/houston/version.rb +1 -1
- data/test/unit/models/serializer_test.rb +19 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb13d5eecf56a92b97bf57602f08952d35e5c939
|
4
|
+
data.tar.gz: 657f17128b2853f46c5dc1133bd2ee2afd61d42a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcecec80ae7c7a153d232d4db2f01a7ee31b95dc4918091df07dd34755b62b6a4d45dab3bae64c5a02833b5606285f1dc6a71aee7a95268c3b9db1fbe46fd42b
|
7
|
+
data.tar.gz: 6e2e4e806e8eaef10afd1eeffa3df4a4a007c8091c3c046cb5b10721d00b4f8b8d261f6b2e322c958727fa442216ae5789bba26027ed21d03e563209fc9618e2
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
houston-core (0.8.
|
4
|
+
houston-core (0.8.4)
|
5
5
|
activerecord-import
|
6
6
|
activerecord-pluck_in_batches (~> 0.2.0)
|
7
7
|
addressable (~> 2.3.8)
|
@@ -21,7 +21,7 @@ PATH
|
|
21
21
|
houston-vestal_versions
|
22
22
|
neat-rails
|
23
23
|
nested_editor_for
|
24
|
-
nokogiri
|
24
|
+
nokogiri (~> 1.7)
|
25
25
|
oauth2
|
26
26
|
oj (~> 2.18)
|
27
27
|
openxml-xlsx (>= 0.2.0)
|
@@ -177,7 +177,7 @@ GEM
|
|
177
177
|
nested_editor_for (0.1.1)
|
178
178
|
net-ldap (0.12.1)
|
179
179
|
nio4r (1.2.1)
|
180
|
-
nokogiri (1.7.
|
180
|
+
nokogiri (1.7.1)
|
181
181
|
mini_portile2 (~> 2.1.0)
|
182
182
|
oauth2 (1.3.0)
|
183
183
|
faraday (>= 0.8, < 0.11)
|
@@ -186,10 +186,10 @@ GEM
|
|
186
186
|
multi_xml (~> 0.5)
|
187
187
|
rack (>= 1.2, < 3)
|
188
188
|
oj (2.18.1)
|
189
|
-
openxml-package (0.2.
|
189
|
+
openxml-package (0.2.7)
|
190
190
|
nokogiri
|
191
191
|
ox
|
192
|
-
rubyzip (~> 1.1
|
192
|
+
rubyzip (~> 1.2.1)
|
193
193
|
openxml-xlsx (0.2.3)
|
194
194
|
nokogiri
|
195
195
|
openxml-package (>= 0.2.0)
|
@@ -242,7 +242,7 @@ GEM
|
|
242
242
|
railties (>= 4.2.0, < 5.1)
|
243
243
|
rr (1.2.0)
|
244
244
|
ruby-progressbar (1.8.1)
|
245
|
-
rubyzip (1.1
|
245
|
+
rubyzip (1.2.1)
|
246
246
|
rufus-scheduler (3.2.2)
|
247
247
|
safe_yaml (1.0.4)
|
248
248
|
sass (3.4.23)
|
@@ -136,4 +136,27 @@ window.App =
|
|
136
136
|
$form.find('.alert').remove()
|
137
137
|
Errors.fromResponse(response).renderToAlert().prependTo $form
|
138
138
|
|
139
|
+
confirmDelete: (options)->
|
140
|
+
html = """
|
141
|
+
<div class="modal hide">
|
142
|
+
<form class="form-horizontal" action="#{options.url}" method="POST">
|
143
|
+
<input type="hidden" name="_method" value="delete">
|
144
|
+
<input type="hidden" name="#{App.meta('csrf-param')}" value="#{App.meta('csrf-token')}">
|
145
|
+
<div class="modal-header">
|
146
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
147
|
+
<h3>Delete #{options.resource}</h3>
|
148
|
+
</div>
|
149
|
+
<div class="modal-body">
|
150
|
+
#{options.message}
|
151
|
+
</div>
|
152
|
+
<div class="modal-footer">
|
153
|
+
<button data-dismiss="modal" class="btn btn-default">Cancel</button>
|
154
|
+
<button type="submit" class="btn btn-danger">Delete #{options.resource}</button>
|
155
|
+
</div>
|
156
|
+
</form>
|
157
|
+
</div>
|
158
|
+
"""
|
159
|
+
$modal = $(html).modal()
|
160
|
+
$modal.on 'hidden', -> $(@).remove()
|
161
|
+
|
139
162
|
window.Houston = window.App
|
@@ -5,7 +5,7 @@ module AvatarHelper
|
|
5
5
|
def avatar_for(user, options={})
|
6
6
|
size = options.fetch(:size, 24)
|
7
7
|
|
8
|
-
return "<div class=\"avatar avatar-empty\" style=\"width:#{size}px; height:#{size}px\"
|
8
|
+
return "<div class=\"avatar avatar-empty\" style=\"width:#{size}px; height:#{size}px\"></div>".html_safe unless user
|
9
9
|
|
10
10
|
"<img class=\"avatar user-#{user.id}\" src=\"#{gravatar_url(user.email, size: size * 2)}\" width=\"#{size}\" height=\"#{size}\" alt=\"#{user.name}\" />".html_safe
|
11
11
|
end
|
data/app/models/project.rb
CHANGED
data/houston-core.gemspec
CHANGED
@@ -42,7 +42,7 @@ Gem::Specification.new do |spec|
|
|
42
42
|
spec.add_dependency "gemoji", "~> 2.1.0"
|
43
43
|
spec.add_dependency "handlebars_assets", "~> 0.23.0"
|
44
44
|
spec.add_dependency "neat-rails"
|
45
|
-
spec.add_dependency "nokogiri"
|
45
|
+
spec.add_dependency "nokogiri", "~> 1.7"
|
46
46
|
spec.add_dependency "oauth2"
|
47
47
|
spec.add_dependency "oj", "~> 2.18"
|
48
48
|
spec.add_dependency "openxml-xlsx", ">= 0.2.0"
|
@@ -7,13 +7,9 @@ module Houston
|
|
7
7
|
|
8
8
|
def pack(record)
|
9
9
|
model = record.class
|
10
|
+
type_caster = model.type_caster
|
10
11
|
normal_attributes = record.attributes.each_with_object({}) do |(attribute, value), attributes|
|
11
|
-
|
12
|
-
|
13
|
-
# Don't serialize the attribute if the column was deleted
|
14
|
-
next if column.is_a?(ActiveRecord::ConnectionAdapters::NullColumn)
|
15
|
-
|
16
|
-
attributes[attribute] = model.connection.type_cast_from_column(column, value)
|
12
|
+
attributes[attribute] = type_caster.type_cast_for_database(attribute, value)
|
17
13
|
end
|
18
14
|
{ "class" => model.name, "attributes" => normal_attributes }
|
19
15
|
end
|
data/lib/houston/version.rb
CHANGED
@@ -38,6 +38,20 @@ class SerializerTest < ActiveSupport::TestCase
|
|
38
38
|
like: /"class":"Project","attributes":{.*},"\^S":"Houston::ActiveRecordSerializer"/)
|
39
39
|
end
|
40
40
|
|
41
|
+
should "not explode when trying to serialize an object with an attribute that isn't a column" do
|
42
|
+
serialized_project = '{"class":"Project","attributes":{"id":18,"name":"Example","missing_column":true},"^S":"Houston::ActiveRecordSerializer"}'
|
43
|
+
project_with_bad_attribute = load(serialized_project)
|
44
|
+
refute_raises do
|
45
|
+
dump(project_with_bad_attribute)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
should "serialize serialized attributes correctly" do
|
50
|
+
action = Action.new(params: {key: "value"})
|
51
|
+
assert_serializes(action,
|
52
|
+
like: /"params":"{\\\":key\\\":\\\"value\\\"}"/)
|
53
|
+
end
|
54
|
+
|
41
55
|
should "work even when you set a value" do
|
42
56
|
project = Project.create!(name: "Test", slug: "test")
|
43
57
|
project.updated_at = 1.week.after(project.updated_at) # ActiveSupport::TimeWithZone
|
@@ -58,7 +72,11 @@ private
|
|
58
72
|
assert_match expectation, serialized, "The object wasn't serialized as expected"
|
59
73
|
end
|
60
74
|
|
61
|
-
|
75
|
+
if object.is_a?(ActiveRecord::Base)
|
76
|
+
assert_equal object.attributes, load(serialized)&.attributes, "The object wasn't deserialized as expected"
|
77
|
+
else
|
78
|
+
assert_equal object, load(serialized), "The object wasn't deserialized as expected"
|
79
|
+
end
|
62
80
|
end
|
63
81
|
|
64
82
|
def load(string)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: houston-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Lail
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -266,16 +266,16 @@ dependencies:
|
|
266
266
|
name: nokogiri
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
268
268
|
requirements:
|
269
|
-
- - "
|
269
|
+
- - "~>"
|
270
270
|
- !ruby/object:Gem::Version
|
271
|
-
version: '
|
271
|
+
version: '1.7'
|
272
272
|
type: :runtime
|
273
273
|
prerelease: false
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
275
275
|
requirements:
|
276
|
-
- - "
|
276
|
+
- - "~>"
|
277
277
|
- !ruby/object:Gem::Version
|
278
|
-
version: '
|
278
|
+
version: '1.7'
|
279
279
|
- !ruby/object:Gem::Dependency
|
280
280
|
name: oauth2
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|