tramway-core 1.8.1 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73b78371455853d155814ff2b43ee628d01ae92508a2607fa8cd1a3a02c8802e
4
- data.tar.gz: 913a54cba50d0767d037b343cb1c36dbf8a8aa071e41a8879525ce854196148f
3
+ metadata.gz: 301196e34c11beb97c8e516d2094d0f98af73cb4c8b9e250804730c5d9479c30
4
+ data.tar.gz: 03c176c1a8d6e14502af6fb509a28bd7b98a56124551c5ce0cd6d3144ff83bd3
5
5
  SHA512:
6
- metadata.gz: faceb82d0bb5111852bed97404119e1722a75b98d9bbaec318c39da7744c034b9ca5205bc02dff80128450ec5c5f6d798970cd6cabfd497dcef2d11092ad3308
7
- data.tar.gz: 96c67ce7e2216b1f17d736a242acef8b80378246d3e89c40e9b78b2e57ae4ee820665138bb2a46d61779de65aefb17f7d163f27df9d3cc95e253a03b206e5631
6
+ metadata.gz: 942eae863fdab061a8d9800aae4d89703bc754b58dad72e1b6a2cd4c104de44f0f65e5001e069cab8e406d5b92303fadde3231e70d0596b941923c66f7af1cd5
7
+ data.tar.gz: f258d270d6baba789f5fbbc0412767c8f0a4ce9ae3bbb6c1f5633628324a9e028dc105ac1c10571efd4a99b637faa53e94674a8838e67b21f6781a0f2cb2f396
data/Rakefile CHANGED
@@ -1,36 +1,8 @@
1
- begin
2
- require 'bundler/setup'
3
- rescue LoadError
4
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
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
- raise "Please, specify `#{association_name}` association class_name in #{object.class} model. For example: `has_many :#{association_name}, class_name: 'ModelName'`"
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.url
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
- raise 'ApplicationForm::Params should not be nil'.inspect unless params
25
- save if validate params
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
- hash.merge!(association => options[:class_name].constantize)
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 ||= self.name.to_s.sub(/Form$/, '')
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
@@ -1,4 +1,6 @@
1
- require 'carrierwave/orm/activerecord'
1
+ if defined?(CarrierWave::Mount)
2
+ require 'carrierwave/orm/activerecord'
3
+ end
2
4
 
3
5
  module Tramway
4
6
  module Core
@@ -1,3 +1,5 @@
1
+ require 'carrierwave'
2
+
1
3
  class ApplicationUploader < CarrierWave::Uploader::Base
2
4
  storage :file
3
5
 
@@ -0,0 +1,3 @@
1
+ ActiveSupport.on_load :active_record do
2
+ require 'audited'
3
+ end
data/lib/tramway/core.rb CHANGED
@@ -1,7 +1,8 @@
1
- require "tramway/core/engine"
2
- require "tramway/collection"
3
- require "tramway/collections/helper"
4
- #require 'string'
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
@@ -1,6 +1,7 @@
1
1
  require 'tramway/core/generators/install_generator'
2
2
  require 'tramway/core/application'
3
3
  require 'simple_form'
4
+ require 'enumerize'
4
5
 
5
6
  module Tramway
6
7
  module Core
@@ -1,5 +1,5 @@
1
1
  module Tramway
2
2
  module Core
3
- VERSION = '1.8.1'
3
+ VERSION = '1.8.2'
4
4
  end
5
5
  end
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.1
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: 2018-12-24 00:00:00.000000000 Z
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.0
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.0
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.5.0
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.5.0
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