iqvoc 4.9.0 → 4.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +3 -3
- data/README.md +18 -2
- data/app/assets/javascripts/iqvoc/autocomplete.js +1 -1
- data/app/assets/stylesheets/iqvoc/components/_entity_select.scss +1 -0
- data/app/controllers/collections/versions_controller.rb +17 -17
- data/app/controllers/collections_controller.rb +3 -0
- data/app/controllers/concepts/alphabetical_controller.rb +5 -2
- data/app/controllers/concepts/versions_controller.rb +17 -17
- data/app/controllers/concepts_controller.rb +3 -0
- data/app/controllers/concerns/controller_extensions.rb +1 -1
- data/app/models/concept/base.rb +5 -3
- data/app/models/label/base.rb +1 -1
- data/app/presenters/search_result.rb +1 -0
- data/app/views/collections/_form.html.erb +1 -0
- data/app/views/collections/show_unpublished.html.erb +3 -0
- data/app/views/concepts/_form.html.erb +2 -0
- data/app/views/concepts/show_unpublished.html.erb +4 -1
- data/app/views/partials/concept/relation/skos/_narrower.html.erb +2 -2
- data/app/views/partials/note/_note.html.erb +4 -1
- data/config/locales/de.yml +4 -1
- data/config/locales/en.yml +4 -1
- data/iqvoc.gemspec +1 -1
- data/lib/iqvoc/environments/development.rb +2 -3
- data/lib/iqvoc/environments/production.rb +3 -0
- data/lib/iqvoc/environments/test.rb +2 -1
- data/lib/iqvoc/version.rb +1 -1
- data/public/export/1420.nt +28 -0
- data/public/export/18228.nt +28 -0
- data/public/export/228686568701989066971611496838516248366.nt +28 -0
- data/public/export/27081.nt +28 -0
- data/public/export/336213965367806878006328280025568269144.nt +28 -0
- data/public/export/37687357862944733731237338243666999173.nt +28 -0
- data/public/export/43096.nt +28 -0
- data/public/export/46386.nt +28 -0
- data/public/export/53694.nt +28 -0
- data/public/export/61002.nt +28 -0
- data/public/export/iqvoc_dump-2016-02-11_10-32.xml +16 -0
- data/public/export/iqvoc_dump-2016-02-11_10-34.ttl +20 -0
- data/public/uploads/import/179004af8019c0f359a40431a8bd25ff.nt +259 -0
- data/public/uploads/import/4639b3e690c601979c8eb0373103fdb9.nt +259 -0
- data/public/uploads/import/795fe8419d071576cc8a4c08af2e2b1f.nt +259 -0
- data/public/uploads/import/7b9c355872346d23ed2f1e70e2d67724.nt +259 -0
- data/public/uploads/import/a6dbf3e1390463c7c6782f9bdbb5c9e2.nt +259 -0
- data/public/uploads/import/aea99360eca9d73d0e050d8bb9fc5f11.nt +259 -0
- data/public/uploads/import/bb42d0ca084b95d017e54e1a46243d42.nt +259 -0
- data/public/uploads/import/be829d88516a9bced467f49326b5e1f1.nt +259 -0
- data/public/uploads/import/dc432a7daeef3fdbba9c1dbc00fe72cb.nt +259 -0
- data/public/uploads/import/eaf10eecedc505d92e6b673a0b54b325.nt +259 -0
- data/public/uploads/tmp/1442817570-31784-4562/hobbies.nt +259 -0
- data/public/uploads/tmp/1446191508-3940-8607/hobbies.nt +259 -0
- data/public/uploads/tmp/1456325902-75110-0481/hobbies.nt +259 -0
- data/public/uploads/tmp/1461919870-29840-4090/hobbies.nt +259 -0
- data/public/uploads/tmp/1461920957-31094-8111/hobbies.nt +259 -0
- data/public/uploads/tmp/1462874108-80930-7543/hobbies.nt +259 -0
- data/public/uploads/tmp/1463068043-37090-6309/hobbies.nt +259 -0
- data/public/uploads/tmp/1463068182-37316-2356/hobbies.nt +259 -0
- data/public/uploads/tmp/1463126928-5331-8975/hobbies.nt +259 -0
- data/public/uploads/tmp/1463127124-5664-1168/hobbies.nt +259 -0
- data/test/integration/api_documentation_test.rb +32 -0
- metadata +41 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1475e23fc06bf41a94bb3ceda90957f083638e0
|
4
|
+
data.tar.gz: f1974964f991cb31e0e4b78bd89a842fd9e2ec70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 161ed636284243cd11817ef5dd04e11745572b726b394f55956a7eed52307358cbe401fd7ce6bfdc7b6a87b39a436867cf59f19a7ea16badd2088686cc9f573f
|
7
|
+
data.tar.gz: cfa95b56a8f5c3509b2c2bf1cfa4ffdca881f9582dfb0d3b796ba6f3aee3dd4929c70680efe7426cd5a6aad3333e5f5502f4c49e45bf062f015e10cb31e6037b
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -36,7 +36,7 @@ gem 'uglifier'
|
|
36
36
|
gem 'sass-rails', '~> 5.0.0'
|
37
37
|
gem 'bootstrap_form', '~> 2.2.0'
|
38
38
|
gem 'font-awesome-rails', '~> 4.3.0'
|
39
|
-
gem 'apipie-rails', '~> 0.3.
|
39
|
+
gem 'apipie-rails', '~> 0.3.5'
|
40
40
|
gem 'maruku', require: false
|
41
41
|
gem 'database_cleaner'
|
42
42
|
gem 'delayed_job_active_record', '~> 4.0.1'
|
data/Gemfile.lock
CHANGED
@@ -48,7 +48,7 @@ GEM
|
|
48
48
|
thread_safe (~> 0.3, >= 0.3.4)
|
49
49
|
tzinfo (~> 1.1)
|
50
50
|
addressable (2.3.7)
|
51
|
-
apipie-rails (0.3.
|
51
|
+
apipie-rails (0.3.5)
|
52
52
|
json
|
53
53
|
arel (6.0.3)
|
54
54
|
authlogic (3.4.5)
|
@@ -354,7 +354,7 @@ DEPENDENCIES
|
|
354
354
|
activerecord-jdbcmysql-adapter
|
355
355
|
activerecord-jdbcpostgresql-adapter (~> 1.3.13)
|
356
356
|
activerecord-jdbcsqlite3-adapter
|
357
|
-
apipie-rails (~> 0.3.
|
357
|
+
apipie-rails (~> 0.3.5)
|
358
358
|
authlogic (~> 3.4.2)
|
359
359
|
autoprefixer-rails (~> 5.1.8)
|
360
360
|
awesome_print
|
@@ -397,4 +397,4 @@ DEPENDENCIES
|
|
397
397
|
webmock
|
398
398
|
|
399
399
|
BUNDLED WITH
|
400
|
-
1.10.
|
400
|
+
1.10.6
|
data/README.md
CHANGED
@@ -23,8 +23,13 @@ vocabularies:
|
|
23
23
|
* editorial features for registered users
|
24
24
|
* publishing the vocabulary in the Semantic Web
|
25
25
|
|
26
|
-
iQvoc is built with state-of-the-art technology and can be easily customized
|
27
|
-
|
26
|
+
iQvoc is built with state-of-the-art technology and can be easily customized according to user's needs.
|
27
|
+
|
28
|
+
## Demo
|
29
|
+
|
30
|
+
You can try out iQvoc right now! In our [sandbox](http://try.iqvoc.net/) you can play around with the public views.
|
31
|
+
If you like to test the collaborative functions simply [request](mailto:iqvoc@innoq.com) your personal demo account.
|
32
|
+
|
28
33
|
## Setup
|
29
34
|
|
30
35
|
### Heroku
|
@@ -96,6 +101,17 @@ provides a basic overview of the possibilities.
|
|
96
101
|
|
97
102
|
Documentation resources can be found in the [wiki](https://github.com/innoq/iqvoc/wiki).
|
98
103
|
|
104
|
+
iQvoc provides an (inline) API documentation which can be found on `APP_URI/apidoc`. Check out our sandbox to see it in action: http://try.iqvoc.net/apidoc/
|
105
|
+
|
106
|
+
## Related projects
|
107
|
+
|
108
|
+
We provide several extensions to add additional features to iQvoc:
|
109
|
+
|
110
|
+
* [iqvoc_skosxl](https://github.com/innoq/iqvoc_skosxl): SKOS-XL extension for iQvoc
|
111
|
+
* [iqvoc_compound_forms](https://github.com/innoq/iqvoc_compound_forms): Compound labels for iQvoc
|
112
|
+
* [iqvoc_inflectionals](https://github.com/innoq/iqvoc_inflectionals): Inflectionals for iQvoc
|
113
|
+
* [iqvoc_similar_terms](https://github.com/innoq/iqvoc_similar_terms): iQvoc engine for similar terms
|
114
|
+
|
99
115
|
## Versioning
|
100
116
|
|
101
117
|
Releases will follow a semantic versioning format:
|
@@ -26,26 +26,26 @@ class Collections::VersionsController < ApplicationController
|
|
26
26
|
authorize! :merge, new_version
|
27
27
|
|
28
28
|
ActiveRecord::Base.transaction do
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
synced = triplestore_syncer.sync([new_version]) # XXX: blocking
|
38
|
-
flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
|
39
|
-
end
|
40
|
-
|
41
|
-
flash[:success] = t('txt.controllers.versioning.published')
|
42
|
-
redirect_to collection_path(new_version)
|
43
|
-
else
|
44
|
-
flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
|
29
|
+
new_version.rdf_updated_at = nil
|
30
|
+
new_version.publish
|
31
|
+
new_version.unlock
|
32
|
+
if new_version.publishable?
|
33
|
+
new_version.save
|
34
|
+
|
35
|
+
if current_collection && !current_collection.destroy
|
36
|
+
flash[:error] = t('txt.controllers.versioning.merged_delete_error')
|
45
37
|
redirect_to collection_path(new_version, published: 0)
|
46
38
|
end
|
39
|
+
|
40
|
+
if Iqvoc.config['triplestore.autosync']
|
41
|
+
synced = triplestore_syncer.sync([new_version]) # XXX: blocking
|
42
|
+
flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
|
43
|
+
end
|
44
|
+
|
45
|
+
flash[:success] = t('txt.controllers.versioning.published')
|
46
|
+
redirect_to collection_path(new_version)
|
47
47
|
else
|
48
|
-
flash[:error] = t('txt.controllers.versioning.
|
48
|
+
flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
|
49
49
|
redirect_to collection_path(new_version, published: 0)
|
50
50
|
end
|
51
51
|
end
|
@@ -119,6 +119,9 @@ class CollectionsController < ApplicationController
|
|
119
119
|
@collection = Iqvoc::Collection.base_class.by_origin(params[:id]).last!
|
120
120
|
authorize! :update, @collection
|
121
121
|
|
122
|
+
# set to_review to false if someone edits a concepts
|
123
|
+
concept_params["to_review"] = "false"
|
124
|
+
|
122
125
|
if @collection.update_attributes(concept_params)
|
123
126
|
flash[:success] = I18n.t('txt.controllers.collections.save.success')
|
124
127
|
redirect_to collection_path(@collection, published: 0)
|
@@ -30,7 +30,8 @@ class Concepts::AlphabeticalController < ConceptsController
|
|
30
30
|
.order("letter").map(&:letter)
|
31
31
|
|
32
32
|
if dataset = datasets.detect { |dataset| dataset.name == params[:dataset] }
|
33
|
-
|
33
|
+
query = params[:prefix].mb_chars.downcase.to_s
|
34
|
+
@search_results = dataset.alphabetical_search(query, I18n.locale) || []
|
34
35
|
@search_results = Kaminari.paginate_array(@search_results).page(params[:page])
|
35
36
|
else
|
36
37
|
@search_results = find_labelings
|
@@ -54,10 +55,12 @@ class Concepts::AlphabeticalController < ConceptsController
|
|
54
55
|
protected
|
55
56
|
|
56
57
|
def find_labelings
|
58
|
+
query = params[:prefix].mb_chars.downcase.to_s
|
59
|
+
|
57
60
|
Iqvoc::Concept.pref_labeling_class.
|
58
61
|
concept_published.
|
59
62
|
concept_not_expired.
|
60
|
-
label_begins_with(
|
63
|
+
label_begins_with(query).
|
61
64
|
by_label_language(I18n.locale).
|
62
65
|
includes(:target).
|
63
66
|
order("LOWER(#{Label::Base.table_name}.value)").
|
@@ -31,26 +31,26 @@ class Concepts::VersionsController < ApplicationController
|
|
31
31
|
authorize! :merge, new_version
|
32
32
|
|
33
33
|
ActiveRecord::Base.transaction do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
synced = triplestore_syncer.sync([new_version]) # XXX: blocking
|
43
|
-
flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
|
44
|
-
end
|
45
|
-
|
46
|
-
flash[:success] = t('txt.controllers.versioning.published')
|
47
|
-
redirect_to concept_path(id: new_version)
|
48
|
-
else
|
49
|
-
flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
|
34
|
+
new_version.rdf_updated_at = nil
|
35
|
+
new_version.publish
|
36
|
+
new_version.unlock
|
37
|
+
if new_version.publishable?
|
38
|
+
new_version.save
|
39
|
+
|
40
|
+
if current_concept && !current_concept.destroy
|
41
|
+
flash[:error] = t('txt.controllers.versioning.merged_delete_error')
|
50
42
|
redirect_to concept_path(published: 0, id: new_version)
|
51
43
|
end
|
44
|
+
|
45
|
+
if Iqvoc.config['triplestore.autosync']
|
46
|
+
synced = triplestore_syncer.sync([new_version]) # XXX: blocking
|
47
|
+
flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
|
48
|
+
end
|
49
|
+
|
50
|
+
flash[:success] = t('txt.controllers.versioning.published')
|
51
|
+
redirect_to concept_path(id: new_version)
|
52
52
|
else
|
53
|
-
flash[:error] = t('txt.controllers.versioning.
|
53
|
+
flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
|
54
54
|
redirect_to concept_path(published: 0, id: new_version)
|
55
55
|
end
|
56
56
|
end
|
@@ -174,6 +174,9 @@ class ConceptsController < ApplicationController
|
|
174
174
|
|
175
175
|
@datasets = datasets_as_json
|
176
176
|
|
177
|
+
# set to_review to false if someone edits a concepts
|
178
|
+
concept_params["to_review"] = "false"
|
179
|
+
|
177
180
|
if @concept.update_attributes(concept_params)
|
178
181
|
flash[:success] = I18n.t('txt.controllers.versioned_concept.update_success')
|
179
182
|
redirect_to concept_path(published: 0, id: @concept)
|
data/app/models/concept/base.rb
CHANGED
@@ -180,7 +180,7 @@ class Concept::Base < ActiveRecord::Base
|
|
180
180
|
include_to_deep_cloning(:relations, :referenced_relations)
|
181
181
|
|
182
182
|
has_many :labelings, foreign_key: 'owner_id', class_name: 'Labeling::Base', dependent: :destroy
|
183
|
-
has_many :labels, through: :labelings, source: :target
|
183
|
+
has_many :labels, -> { order(:value) }, through: :labelings, source: :target
|
184
184
|
# Deep cloning has to be done in specific relations. S. pref_labels etc
|
185
185
|
|
186
186
|
has_many :notes, class_name: 'Note::Base', as: :owner, dependent: :destroy
|
@@ -237,6 +237,7 @@ class Concept::Base < ActiveRecord::Base
|
|
237
237
|
class_name: Iqvoc::Concept.pref_labeling_class_name
|
238
238
|
|
239
239
|
has_many :pref_labels,
|
240
|
+
-> { order(:value) },
|
240
241
|
through: :pref_labelings,
|
241
242
|
source: :target
|
242
243
|
|
@@ -245,6 +246,7 @@ class Concept::Base < ActiveRecord::Base
|
|
245
246
|
class_name: Iqvoc::Concept.alt_labeling_class_name
|
246
247
|
|
247
248
|
has_many :alt_labels,
|
249
|
+
-> { order(:value) },
|
248
250
|
through: :alt_labelings,
|
249
251
|
source: :target
|
250
252
|
|
@@ -435,13 +437,13 @@ class Concept::Base < ActiveRecord::Base
|
|
435
437
|
@labels ||= labelings.each_with_object({}) do |labeling, hash|
|
436
438
|
((hash[labeling.class.name.to_s] ||= {})[labeling.target.language] ||= []) << labeling.target if labeling.target
|
437
439
|
end
|
438
|
-
((@labels && @labels[labeling_class] && @labels[labeling_class][lang]) || []).select{ |l| l.published? || !only_published }
|
440
|
+
((@labels && @labels[labeling_class] && @labels[labeling_class][lang]) || []).select{ |l| l.published? || !only_published }.sort_by(&:value)
|
439
441
|
end
|
440
442
|
|
441
443
|
def related_concepts_for_relation_class(relation_class, only_published = true)
|
442
444
|
relation_class = relation_class.name if relation_class < ActiveRecord::Base # Use the class name string
|
443
445
|
relations.select { |rel| rel.class.name == relation_class }.map(&:target).
|
444
|
-
select { |c| c.published? || !only_published }
|
446
|
+
select { |c| c.published? || !only_published }.sort_by(&:pref_label)
|
445
447
|
end
|
446
448
|
|
447
449
|
def matches_for_class(match_class)
|
data/app/models/label/base.rb
CHANGED
@@ -63,7 +63,7 @@ class Label::Base < ActiveRecord::Base
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def self.by_query_value(query)
|
66
|
-
where(["LOWER(#{table_name}.value) LIKE ?", query.
|
66
|
+
where(["LOWER(#{table_name}.value) LIKE ?", query.mb_chars.downcase.to_s])
|
67
67
|
end
|
68
68
|
|
69
69
|
# Attention: This means that even label classes without version controll will also
|
@@ -33,6 +33,9 @@
|
|
33
33
|
<% else %>
|
34
34
|
<%= button_to t("txt.views.versioning.to_edit_mode"),
|
35
35
|
collection_versions_lock_path(:origin => @collection.origin), :class => 'btn btn-default' if can?(:lock, @collection) %>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
<% if can?(:destroy, @collection) %>
|
36
39
|
<%= button_to t("txt.views.versioning.delete"),
|
37
40
|
collection_path(:published => 0, :id => @collection.origin),
|
38
41
|
:method => :delete,
|
@@ -37,11 +37,14 @@
|
|
37
37
|
<% else %>
|
38
38
|
<%= button_to t("txt.views.versioning.to_edit_mode"),
|
39
39
|
concept_versions_lock_path(:origin => @concept.origin), :class => 'btn btn-default' if can?(:lock, @concept) %>
|
40
|
+
<% end %>
|
41
|
+
|
42
|
+
<% if can?(:destroy, @concept) %>
|
40
43
|
<%= button_to t("txt.views.versioning.delete"),
|
41
44
|
concept_path(:published => 0, :id => @concept.origin),
|
42
45
|
:method => :delete,
|
43
46
|
:class => 'btn btn-danger',
|
44
|
-
:data => { :confirm => I18n.t("txt.views.versioning.delete_confirm") }
|
47
|
+
:data => { :confirm => I18n.t("txt.views.versioning.delete_confirm") } %>
|
45
48
|
<% end %>
|
46
49
|
</div>
|
47
50
|
|
@@ -4,9 +4,9 @@
|
|
4
4
|
<% if concept.narrower_relations.any? %>
|
5
5
|
<div class="selector">
|
6
6
|
<% if(params[:published] == '0') %>
|
7
|
-
<%= treeview(concept.narrower_relations.published_with_newer_versions.map(&:target)) %>
|
7
|
+
<%= treeview(concept.narrower_relations.published_with_newer_versions.map(&:target).sort_by(&:pref_label)) %>
|
8
8
|
<% else %>
|
9
|
-
<%= treeview(concept.narrower_relations.published.map(&:target)) %>
|
9
|
+
<%= treeview(concept.narrower_relations.published.map(&:target).sort_by(&:pref_label)) %>
|
10
10
|
<% end %>
|
11
11
|
</div>
|
12
12
|
<% end %>
|
@@ -2,7 +2,10 @@
|
|
2
2
|
<div class="translation" lang="<%= note.language %>">
|
3
3
|
<span class="language_flap"><%= note.language %></span>
|
4
4
|
<div class="note_content">
|
5
|
-
|
5
|
+
<% if note.value %>
|
6
|
+
<p><%= auto_link(note.value, :html => { :target => '_blank' }) %></p>
|
7
|
+
<% end %>
|
8
|
+
|
6
9
|
<% if note.annotations.any? %>
|
7
10
|
<dl class="note_annotations">
|
8
11
|
<% note.annotations.each do |annotation| %>
|
data/config/locales/de.yml
CHANGED
@@ -53,6 +53,7 @@ de:
|
|
53
53
|
welcome: "Hallo %{user_name}"
|
54
54
|
move: "Verschieben"
|
55
55
|
save: "Speichern"
|
56
|
+
cancel: "Abbrechen"
|
56
57
|
copy: "Kopieren"
|
57
58
|
reset: "Zurücksetzen"
|
58
59
|
language: "Sprache"
|
@@ -109,8 +110,10 @@ de:
|
|
109
110
|
sources: Föderation
|
110
111
|
settings:
|
111
112
|
title: Titel
|
112
|
-
|
113
|
+
available_languages: verfügbare Sprachen
|
113
114
|
languages_pref_labeling: Sprachen für bevorzugte Labels
|
115
|
+
languages_notes: Sprachen für Notes
|
116
|
+
languages_further_labelings_Labeling: Sprachen für alternative Labels
|
114
117
|
languages_further_labelings_Labeling::SKOS::AltLabel: Sprachen für alternative Labels
|
115
118
|
performance_unbounded_hierarchy: unbegrenzte Hierarchie-Tiefe
|
116
119
|
triplestore_url: Triplestore-URL
|
data/config/locales/en.yml
CHANGED
@@ -53,6 +53,7 @@ en:
|
|
53
53
|
welcome: "Hello %{user_name}"
|
54
54
|
move: "Move"
|
55
55
|
save: "Save"
|
56
|
+
cancel: "Cancel"
|
56
57
|
copy: 'Copy'
|
57
58
|
reset: "Reset"
|
58
59
|
language: "Language"
|
@@ -109,8 +110,10 @@ en:
|
|
109
110
|
sources: Federation
|
110
111
|
settings:
|
111
112
|
title: Site title
|
112
|
-
|
113
|
+
available_languages: available languages
|
113
114
|
languages_pref_labeling: Languages for preferred labels
|
115
|
+
languages_notes: Languages for notes
|
116
|
+
languages_further_labelings_Labeling: Languages for alternative labels
|
114
117
|
languages_further_labelings_Labeling::SKOS::AltLabel: Languages for alternative labels
|
115
118
|
performance_unbounded_hierarchy: Unlimited hierarchy depth
|
116
119
|
triplestore_url: Triplestore URL
|
data/iqvoc.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
s.add_dependency 'linkeddata'
|
33
33
|
s.add_dependency 'font-awesome-rails', '~> 4.2.0'
|
34
34
|
s.add_dependency 'uglifier', '>= 1.3.0'
|
35
|
-
s.add_dependency 'apipie-rails'
|
35
|
+
s.add_dependency 'apipie-rails', '~> 0.3.5'
|
36
36
|
s.add_dependency 'maruku'
|
37
37
|
s.add_dependency 'database_cleaner'
|
38
38
|
s.add_dependency 'delayed_job_active_record', '~> 4.0.1'
|
@@ -70,10 +70,9 @@ module Iqvoc::Environments
|
|
70
70
|
config.assets.raise_runtime_errors = true
|
71
71
|
|
72
72
|
# Raises error for missing translations
|
73
|
-
|
73
|
+
config.action_view.raise_on_missing_translations = true
|
74
74
|
|
75
|
+
# Raises error for missing translations
|
75
76
|
config.i18n.enforce_available_locales = true
|
76
|
-
|
77
|
-
config.action_view.raise_on_missing_translations = true
|
78
77
|
end
|
79
78
|
end
|