tramway-core 1.8.1 → 1.8.2
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/Rakefile +7 -35
- data/app/decorators/tramway/core/application_decorator.rb +19 -4
- data/app/forms/tramway/core/application_form.rb +23 -5
- data/app/models/tramway/core/application_record.rb +3 -1
- data/app/uploaders/application_uploader.rb +2 -0
- data/config/initializers/carrierwave.rb +3 -0
- data/lib/tramway/core.rb +5 -4
- data/lib/tramway/core/engine.rb +1 -0
- data/lib/tramway/core/version.rb +1 -1
- data/lib/tramway/error.rb +2 -1
- metadata +119 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 301196e34c11beb97c8e516d2094d0f98af73cb4c8b9e250804730c5d9479c30
|
4
|
+
data.tar.gz: 03c176c1a8d6e14502af6fb509a28bd7b98a56124551c5ce0cd6d3144ff83bd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 942eae863fdab061a8d9800aae4d89703bc754b58dad72e1b6a2cd4c104de44f0f65e5001e069cab8e406d5b92303fadde3231e70d0596b941923c66f7af1cd5
|
7
|
+
data.tar.gz: f258d270d6baba789f5fbbc0412767c8f0a4ce9ae3bbb6c1f5633628324a9e028dc105ac1c10571efd4a99b637faa53e94674a8838e67b21f6781a0f2cb2f396
|
data/Rakefile
CHANGED
@@ -1,36 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
require 'rake'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
5
|
+
t.pattern = Dir.glob('spec/**/*_spec.rb')
|
6
|
+
t.rspec_opts = '--format documentation'
|
5
7
|
end
|
6
|
-
|
7
|
-
require 'rdoc/task'
|
8
|
-
|
9
|
-
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
-
rdoc.rdoc_dir = 'rdoc'
|
11
|
-
rdoc.title = 'Tramway::Core'
|
12
|
-
rdoc.options << '--line-numbers'
|
13
|
-
rdoc.rdoc_files.include('README.md')
|
14
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
-
end
|
16
|
-
|
17
|
-
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
-
load 'rails/tasks/engine.rake'
|
19
|
-
|
20
|
-
|
21
|
-
load 'rails/tasks/statistics.rake'
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
require 'bundler/gem_tasks'
|
26
|
-
|
27
|
-
require 'rake/testtask'
|
28
|
-
|
29
|
-
Rake::TestTask.new(:test) do |t|
|
30
|
-
t.libs << 'test'
|
31
|
-
t.pattern = 'test/**/*_test.rb'
|
32
|
-
t.verbose = false
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
task default: :test
|
8
|
+
task default: :spec
|
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'tramway/error'
|
2
|
+
|
1
3
|
class Tramway::Core::ApplicationDecorator
|
2
4
|
include ActionView::Helpers
|
3
5
|
include ActionView::Context
|
4
|
-
include FontAwesome::Rails::IconHelper
|
6
|
+
include ::FontAwesome::Rails::IconHelper
|
5
7
|
|
6
8
|
def initialize(object)
|
7
9
|
@object = object
|
@@ -11,6 +13,11 @@ class Tramway::Core::ApplicationDecorator
|
|
11
13
|
object.try(:name) || object.try(:title) || title
|
12
14
|
end
|
13
15
|
|
16
|
+
def title
|
17
|
+
error = Tramway::Error.new(plugin: :core, method: :title, message: ("Please, implement `title` method in a #{self.class} or #{object.class}"))
|
18
|
+
raise error.message
|
19
|
+
end
|
20
|
+
|
14
21
|
class << self
|
15
22
|
def list_attributes
|
16
23
|
[]
|
@@ -33,9 +40,9 @@ class Tramway::Core::ApplicationDecorator
|
|
33
40
|
|
34
41
|
define_method association_name do
|
35
42
|
class_name = object.class.reflect_on_association(association_name).options[:class_name]
|
36
|
-
#FIXME use error abstraction
|
37
43
|
unless class_name
|
38
|
-
|
44
|
+
error = Tramway::Error.new(plugin: :core, method: :decorate_association, message: ("Please, specify `#{association_name}` association class_name in #{object.class} model. For example: `has_many :#{association_name}, class_name: '#{association_name.to_s.singularize.camelize}'`"))
|
45
|
+
raise error.message
|
39
46
|
end
|
40
47
|
|
41
48
|
object.send(association_name).active.map do |association_object|
|
@@ -51,7 +58,15 @@ class Tramway::Core::ApplicationDecorator
|
|
51
58
|
delegate :human_state_name, to: :object
|
52
59
|
|
53
60
|
def link
|
54
|
-
object.file
|
61
|
+
if object.try :file
|
62
|
+
object.file.url
|
63
|
+
else
|
64
|
+
error = Tramway::Error.new(
|
65
|
+
plugin: :core,
|
66
|
+
method: :link,
|
67
|
+
message: ("Method `link` uses `file` attribute of the decorated object. If decorated object doesn't contain `file`, you shouldn't use `link` method."))
|
68
|
+
raise error.message
|
69
|
+
end
|
55
70
|
end
|
56
71
|
|
57
72
|
def model
|
@@ -4,6 +4,7 @@ module Tramway::Core
|
|
4
4
|
super(object).tap do
|
5
5
|
@@model_class = object.class
|
6
6
|
@@enumerized_attributes = object.class.enumerized_attributes
|
7
|
+
@@associations ||= []
|
7
8
|
|
8
9
|
self.class.full_class_name_associations.each do |association, class_name|
|
9
10
|
if class_name.is_a? Array
|
@@ -21,8 +22,12 @@ module Tramway::Core
|
|
21
22
|
end
|
22
23
|
|
23
24
|
def submit(params)
|
24
|
-
|
25
|
-
|
25
|
+
if params
|
26
|
+
save if validate params
|
27
|
+
else
|
28
|
+
error = Tramway::Error.new(plugin: :core, method: :title, message: ('ApplicationForm::Params should not be nil'))
|
29
|
+
raise error.message
|
30
|
+
end
|
26
31
|
end
|
27
32
|
|
28
33
|
def form_properties(**args)
|
@@ -33,6 +38,8 @@ module Tramway::Core
|
|
33
38
|
@form_properties || []
|
34
39
|
end
|
35
40
|
|
41
|
+
def build_errors; end
|
42
|
+
|
36
43
|
class << self
|
37
44
|
delegate :defined_enums, to: :model_class
|
38
45
|
|
@@ -53,12 +60,13 @@ module Tramway::Core
|
|
53
60
|
options = @@model_class.reflect_on_all_associations(:belongs_to).select do |a|
|
54
61
|
a.name == association.to_sym
|
55
62
|
end.first&.options
|
56
|
-
|
63
|
+
|
57
64
|
if options
|
58
65
|
if options[:polymorphic]
|
59
66
|
hash.merge! association => @@model_class.send("#{association}_type").values
|
60
67
|
else
|
61
|
-
|
68
|
+
class_name = options[:class_name] || association.to_s.camelize
|
69
|
+
hash.merge!(association => class_name.constantize)
|
62
70
|
end
|
63
71
|
end
|
64
72
|
hash
|
@@ -78,7 +86,17 @@ module Tramway::Core
|
|
78
86
|
end
|
79
87
|
|
80
88
|
def model_class
|
81
|
-
@@model_class
|
89
|
+
if @@model_class
|
90
|
+
@@model_class
|
91
|
+
else
|
92
|
+
model_class_name ||= self.name.to_s.sub(/Form$/, '')
|
93
|
+
begin
|
94
|
+
@@model_class = model_class_name.constantize
|
95
|
+
rescue
|
96
|
+
error = Tramway::Error.new(plugin: :core, method: :model_class, message: ("There is not model class name for #{self.name}. Should be #{model_class_name} or you can use another class to initialize form object."))
|
97
|
+
raise error.message
|
98
|
+
end
|
99
|
+
end
|
82
100
|
end
|
83
101
|
end
|
84
102
|
end
|
data/lib/tramway/core.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
|
1
|
+
require 'tramway/core/engine'
|
2
|
+
require 'tramway/collection'
|
3
|
+
require 'tramway/collections/helper'
|
4
|
+
require 'font-awesome-rails'
|
5
|
+
require 'reform'
|
5
6
|
|
6
7
|
module Tramway
|
7
8
|
module Core
|
data/lib/tramway/core/engine.rb
CHANGED
data/lib/tramway/core/version.rb
CHANGED
data/lib/tramway/error.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
class Tramway::Error < Exception
|
2
|
-
def initialize(plugin: nil, method: nil, message: nil)
|
2
|
+
def initialize(*args, plugin: nil, method: nil, message: nil)
|
3
3
|
@properties ||= {}
|
4
4
|
@properties[:plugin] = plugin
|
5
5
|
@properties[:method] = method
|
6
6
|
@properties[:message] = message
|
7
|
+
super(*args)
|
7
8
|
end
|
8
9
|
|
9
10
|
def message
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tramway-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kalashnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reform-rails
|
@@ -88,42 +88,30 @@ dependencies:
|
|
88
88
|
name: bootstrap
|
89
89
|
requirement: !ruby/object:Gem::Requirement
|
90
90
|
requirements:
|
91
|
-
- - "~>"
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '4.1'
|
94
91
|
- - ">="
|
95
92
|
- !ruby/object:Gem::Version
|
96
|
-
version: 4.1.
|
93
|
+
version: 4.1.2
|
97
94
|
type: :runtime
|
98
95
|
prerelease: false
|
99
96
|
version_requirements: !ruby/object:Gem::Requirement
|
100
97
|
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '4.1'
|
104
98
|
- - ">="
|
105
99
|
- !ruby/object:Gem::Version
|
106
|
-
version: 4.1.
|
100
|
+
version: 4.1.2
|
107
101
|
- !ruby/object:Gem::Dependency
|
108
102
|
name: audited
|
109
103
|
requirement: !ruby/object:Gem::Requirement
|
110
104
|
requirements:
|
111
|
-
- - "~>"
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: '4.5'
|
114
105
|
- - ">="
|
115
106
|
- !ruby/object:Gem::Version
|
116
|
-
version: 4.
|
107
|
+
version: 4.8.0
|
117
108
|
type: :runtime
|
118
109
|
prerelease: false
|
119
110
|
version_requirements: !ruby/object:Gem::Requirement
|
120
111
|
requirements:
|
121
|
-
- - "~>"
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: '4.5'
|
124
112
|
- - ">="
|
125
113
|
- !ruby/object:Gem::Version
|
126
|
-
version: 4.
|
114
|
+
version: 4.8.0
|
127
115
|
- !ruby/object:Gem::Dependency
|
128
116
|
name: mini_magick
|
129
117
|
requirement: !ruby/object:Gem::Requirement
|
@@ -204,6 +192,118 @@ dependencies:
|
|
204
192
|
- - ">="
|
205
193
|
- !ruby/object:Gem::Version
|
206
194
|
version: 1.0.0
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: font-awesome-rails
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: carrierwave
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: kaminari
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: reform
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :runtime
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: rspec-rails
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">="
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: pry
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: pg
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: factory_bot_rails
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - ">="
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '0'
|
300
|
+
type: :development
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - ">="
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '0'
|
207
307
|
description: Core for all Tramway Rails Engines
|
208
308
|
email:
|
209
309
|
- kalashnikovisme@gmail.com
|
@@ -238,6 +338,7 @@ files:
|
|
238
338
|
- app/views/tramway/core/shared/_input_extended.html.haml
|
239
339
|
- app/views/tramway/core/shared/_messages.html.haml
|
240
340
|
- config/initializers/assets.rb
|
341
|
+
- config/initializers/carrierwave.rb
|
241
342
|
- config/initializers/plurals.rb
|
242
343
|
- config/locales/ru/dates.yml
|
243
344
|
- config/locales/ru/helpers.yml
|