your_platform 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -0
  3. data/Rakefile +39 -5
  4. data/app/controllers/application_controller.rb +9 -1
  5. data/app/controllers/search_controller.rb +4 -4
  6. data/app/helpers/sublime_helper.rb +1 -1
  7. data/app/models/active_record_json_url_extension.rb +14 -17
  8. data/app/models/attachment.rb +1 -1
  9. data/app/models/bookmark.rb +1 -1
  10. data/app/models/cache_store_extension.rb +7 -7
  11. data/app/models/concerns/user_avatar.rb +1 -1
  12. data/app/models/concerns/user_corporations.rb +1 -1
  13. data/app/models/dag_link.rb +1 -1
  14. data/app/models/event.rb +1 -1
  15. data/app/models/flag.rb +1 -1
  16. data/app/models/geo_location.rb +1 -1
  17. data/app/models/group.rb +14 -12
  18. data/app/models/group_mixins/memberships.rb +1 -1
  19. data/app/models/last_seen_activity.rb +1 -1
  20. data/app/models/nav_node.rb +1 -1
  21. data/app/models/page.rb +1 -1
  22. data/app/models/post.rb +1 -1
  23. data/app/models/profile_field.rb +3 -8
  24. data/app/models/profile_field_mixins/has_child_profile_fields.rb +1 -1
  25. data/app/models/profile_field_types/address.rb +1 -1
  26. data/app/models/relationship.rb +1 -1
  27. data/app/models/setting.rb +1 -1
  28. data/app/models/status_group_membership.rb +1 -1
  29. data/app/models/status_group_membership_info.rb +0 -2
  30. data/app/models/user.rb +9 -7
  31. data/app/models/user_account.rb +1 -1
  32. data/app/models/user_group_membership.rb +1 -1
  33. data/app/models/workflow.rb +1 -1
  34. data/config/environment.rb +3 -3
  35. data/config/initializers/assets.rb +7 -0
  36. data/config/initializers/best_in_place_display_definitions.rb +6 -6
  37. data/config/initializers/protected_attributes.rb +7 -0
  38. data/config/routes.rb +2 -2
  39. data/db/migrate/20130309193623_add_devise_to_user_accounts.rb +7 -1
  40. data/lib/best_in_place/controller_extensions.rb +15 -15
  41. data/lib/best_in_place/helper.rb +11 -104
  42. data/lib/your_platform/engine.rb +1 -2
  43. data/lib/your_platform/version.rb +1 -1
  44. data/spec/models/active_record_json_url_extension_spec.rb +4 -4
  45. data/spec/models/bookmark_spec.rb +2 -2
  46. data/spec/models/corporation_spec.rb +3 -2
  47. data/spec/models/event_spec.rb +3 -3
  48. data/spec/models/group_mixins/corporations_spec.rb +1 -1
  49. data/spec/models/profileable_spec.rb +1 -1
  50. data/spec/models/structureable_mixins/has_special_groups_spec.rb +1 -1
  51. data/spec/models/user_group_membership_mixins/validity_range_for_indirect_memberships_spec.rb +6 -1
  52. data/spec/models/user_spec.rb +1 -1
  53. data/spec/spec_helper.rb +1 -1
  54. metadata +14 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d4f4254548dff774d063fd40e179c3e06189f97
4
- data.tar.gz: da0eb80eaa45c980cedc8058e84cde0c514452d5
3
+ metadata.gz: bdb2a476e0a91647e85d31eb03cd09af8a3734c5
4
+ data.tar.gz: 133ef1bc00d68b4f1220107aa59f606cb1d7e410
5
5
  SHA512:
6
- metadata.gz: 2e1cd54d69ff299c954eb839409122955c90e2f1e9f76d12265160190032cbcc6df87f25a3f9c4208249dde489c5f22540dd30e705f16f10da2051227802c432
7
- data.tar.gz: 1d6a2f147d4abe217de66389ee16d7b4625b8d7f2ce94d1e35459c82c16a878586f1fdae580c2a9d26d3955d01c3cae664110873727df465c09cdfaafed62536
6
+ metadata.gz: 157f81d8d96f7ab2b1a69743dd03b9874367f9a4ba09adc265353661574cacdc0aa9a234b35553e0d0f0415e332374f9d1e1bafc8f53bb9d7e34f1808f03e721
7
+ data.tar.gz: 347e57de5ce3d7a4c598095fe4a181df8244537563b40374fd6b67dce612691888426ca473f92d11fef0bb4296db50c2b51a30b476194af8a608cea5ecfb85e0
data/README.md CHANGED
@@ -35,6 +35,16 @@ If you have any troubles, **feel free to contact us on our [gitter channel](http
35
35
 
36
36
  Our [code documentation can be found on rubydoc.info](http://www.rubydoc.info/github/fiedl/your_platform).
37
37
 
38
+ ## Versioning
39
+
40
+ * Have a quick look at [rubygem's short explanation of semantic versioning](http://guides.rubygems.org/patterns/#semantic-versioning).
41
+ * The version can be bumped using one of these:
42
+
43
+ ```
44
+ rake version:bump:major
45
+ rake version:bump:minor
46
+ rake version:bump:patch
47
+ ```
38
48
 
39
49
  ## Contributing
40
50
 
@@ -44,6 +54,7 @@ Our [code documentation can be found on rubydoc.info](http://www.rubydoc.info/gi
44
54
  4. Push to the branch (`git push origin my-new-feature`)
45
55
  5. Create new Pull Request
46
56
 
57
+
47
58
  ## Authors and License
48
59
 
49
60
  **Copyright** (c) 2012-2015, Sebastian Fiedlschuster
data/Rakefile CHANGED
@@ -1,15 +1,49 @@
1
1
  #!/usr/bin/env rake
2
2
 
3
+ # Load demo application environment.
4
+ #
3
5
  require File.expand_path('../demo_app/my_platform/config/application', __FILE__)
4
- require 'rspec/core/rake_task'
5
- require 'rspec-rerun'
6
6
 
7
- MyPlatform::Application.load_tasks
8
7
 
9
- pattern = "{./spec/**/*_spec.rb}"
8
+ # Do not load the application tasks for the moment, which would
9
+ # invoke test:prepare, which has been dropped.
10
+ #
11
+ # # MyPlatform::Application.load_tasks
12
+
13
+
14
+ # Use rspec-rerun as default task.
15
+ #
16
+ # - rake
17
+ # - rake rspec-rerun:spec
18
+ #
19
+ require 'rspec/core/rake_task'
20
+ require 'rspec-rerun'
10
21
 
11
22
  ENV['RSPEC_RERUN_RETRY_COUNT'] ||= '3'
12
- ENV['RSPEC_RERUN_PATTERN'] ||= pattern
23
+ ENV['RSPEC_RERUN_PATTERN'] ||= "{./spec/**/*_spec.rb}"
13
24
 
14
25
  task default: 'rspec-rerun:spec'
15
26
 
27
+
28
+ # Version bumping mechanism.
29
+ # See: https://gist.github.com/grosser/1261469
30
+ #
31
+ # - rake version:bump:major
32
+ # - rake version:bump:minor
33
+ # - rake version:bump:patch
34
+ #
35
+ rule /^version:bump:.*/ do |t|
36
+ sh "git status | grep 'nothing to commit'" # ensure we are not dirty
37
+ index = ['major', 'minor','patch'].index(t.name.split(':').last)
38
+ file = 'lib/your_platform/version.rb'
39
+
40
+ version_file = File.read(file)
41
+ old_version, *version_parts = version_file.match(/(\d+)\.(\d+)\.(\d+)/).to_a
42
+ version_parts[index] = version_parts[index].to_i + 1
43
+ version_parts[2] = 0 if index < 2
44
+ version_parts[1] = 0 if index < 1
45
+ new_version = version_parts * '.'
46
+ File.open(file,'w'){|f| f.write(version_file.sub(old_version, new_version)) }
47
+
48
+ sh "bundle && git add #{file} Gemfile.lock && git commit -m 'bump version to #{new_version}.'"
49
+ end
@@ -3,6 +3,7 @@ class ApplicationController < ActionController::Base
3
3
 
4
4
  layout "bootstrap"
5
5
 
6
+
6
7
  # TODO: Change before_filter to before_action (http://stackoverflow.com/questions/16519828)
7
8
  #
8
9
  before_filter :redirect_www_subdomain, :set_locale
@@ -17,6 +18,7 @@ class ApplicationController < ActionController::Base
17
18
 
18
19
  # https://github.com/ryanb/cancan
19
20
  #
21
+ before_action :configure_permitted_devise_parameters, if: :devise_controller?
20
22
  check_authorization(:unless => :devise_controller?)
21
23
  rescue_from CanCan::AccessDenied do |exception|
22
24
  session['return_to_after_login'] = request.fullpath
@@ -156,7 +158,7 @@ class ApplicationController < ActionController::Base
156
158
  # If the current_user can? :read the :mini_profiler, is defined in the Ability class.
157
159
  #
158
160
  def authorize_miniprofiler
159
- Rack::MiniProfiler.authorize_request if can? :use, Rack::MiniProfiler
161
+ #Rack::MiniProfiler.authorize_request if can? :use, Rack::MiniProfiler
160
162
  end
161
163
 
162
164
 
@@ -232,5 +234,11 @@ class ApplicationController < ActionController::Base
232
234
  def after_sign_in_path_for(resource)
233
235
  session['return_to_after_login'] || root_path
234
236
  end
237
+
238
+ protected
239
+
240
+ def configure_permitted_devise_parameters
241
+ devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :password) }
242
+ end
235
243
 
236
244
  end
@@ -42,10 +42,10 @@ class SearchController < ApplicationController
42
42
 
43
43
  # eleminiate duplicate results
44
44
  #
45
- @users.uniq!
46
- @pages.uniq!
47
- @groups.uniq!
48
- @events.uniq!
45
+ @users = @users.uniq
46
+ @pages = @pages.uniq
47
+ @groups = @groups.uniq
48
+ @events = @events.uniq
49
49
 
50
50
  # AUTHORIZATION
51
51
  #
@@ -6,7 +6,7 @@ module SublimeHelper
6
6
  #
7
7
 
8
8
  # def sublime_token
9
- # ::SECRETS["sublime_token"] || ""
9
+ # Rails.application.secrets.sublime_token || ""
10
10
  # end
11
11
  #
12
12
  # def sublime_script_tag
@@ -1,16 +1,16 @@
1
1
  module ActiveRecordJsonUrlExtension
2
2
  extend ActiveSupport::Concern
3
3
 
4
- def serializable_hash( options = {} )
5
- options[ :methods ] = [ :url ] if not options[ :methods ]
6
- options[ :methods ] = [ options[ :methods ] ] if options[ :methods ].kind_of? Symbol
7
- options[ :methods ] << :url if options[ :methods ]
8
- raise 'options[ :methods ] should be an array' unless options[ :methods ].kind_of? Array
4
+ def serializable_hash(options = {})
5
+ options[:methods] = [:url] if not options[:methods]
6
+ options[:methods] = [options[:methods]] if options[:methods].kind_of? Symbol
7
+ options[:methods] << :url if options[:methods]
8
+ raise 'options[:methods] should be an array' unless options[:methods].kind_of? Array
9
9
  super options
10
10
  end
11
11
 
12
12
  def url
13
- UrlHelper.new( self ).url
13
+ UrlHelper.new(self).url
14
14
  end
15
15
 
16
16
  # The following class generates a scope that prevents the url helpers
@@ -22,30 +22,27 @@ module ActiveRecordJsonUrlExtension
22
22
  #
23
23
  # my_instance = MyModel.create()
24
24
  #
25
- # You may call <tt>my_instance.url()</tt> to get the same result as for
26
- # <tt>url_for(my_instance)</tt>.
25
+ # You may call `my_instance.url()` to get the same result as for
26
+ # `url_for(my_instance)`.
27
27
  # But you should not be able to call, for example,
28
- # <tt>my_instance.my_model_path( ... )</tt>.
28
+ # `my_instance.my_model_path( ... )`.
29
29
  #
30
30
  class UrlHelper
31
-
32
31
  include Rails.application.routes.url_helpers
33
32
  include ActionDispatch::Routing::UrlFor
34
33
 
35
- def initialize( obj )
34
+ def initialize(obj)
36
35
  @obj = obj
37
36
  end
38
37
 
39
38
  def url_options
40
- Rails.application.config.action_mailer.default_url_options
39
+ Rails.application.config.action_mailer.default_url_options || raise("Please set 'config.action_mailer.default_url_options = {host: ...}' in the application config.")
41
40
  end
42
-
41
+
43
42
  def url
44
- url_for @obj
43
+ url_for(@obj)
45
44
  end
46
-
47
45
  end
48
-
49
46
  end
50
47
 
51
- ActiveRecord::Base.send( :include, ActiveRecordJsonUrlExtension )
48
+ ActiveRecord::Base.send(:include, ActiveRecordJsonUrlExtension)
@@ -1,5 +1,5 @@
1
1
  class Attachment < ActiveRecord::Base
2
- attr_accessible :description, :file, :parent_id, :parent_type, :title, :author
2
+ attr_accessible :description, :file, :parent_id, :parent_type, :title, :author if defined? attr_accessible
3
3
 
4
4
  belongs_to :parent, polymorphic: true
5
5
  belongs_to :author, :class_name => "User", foreign_key: 'author_user_id'
@@ -6,7 +6,7 @@
6
6
  # Such bookmarkable objects may be other users, or pages, groups, et cetera.
7
7
  #
8
8
  class Bookmark < ActiveRecord::Base
9
- attr_accessible :bookmarkable_id, :bookmarkable_type, :user_id, :user, :bookmarkable
9
+ attr_accessible :bookmarkable_id, :bookmarkable_type, :user_id, :user, :bookmarkable if defined? attr_accessible
10
10
 
11
11
  belongs_to :bookmarkable, polymorphic: true
12
12
  belongs_to :user
@@ -10,13 +10,13 @@ module CacheStoreExtension
10
10
  return result
11
11
  end
12
12
 
13
- def fetch(key, options = {}, &block)
14
- rescue_from_undefined_class_or_module do
15
- rescue_from_other_errors(block) do
16
- super(key, {force: @ignore_cache}.merge(options), &block)
17
- end
18
- end
19
- end
13
+ #def fetch(key, options = {}, &block)
14
+ # rescue_from_undefined_class_or_module do
15
+ # rescue_from_other_errors(block) do
16
+ # super(key, {force: @ignore_cache}.merge(options), &block)
17
+ # end
18
+ # end
19
+ #end
20
20
 
21
21
  def delete_regex(regex)
22
22
  if @data
@@ -10,7 +10,7 @@ module UserAvatar
10
10
 
11
11
  included do
12
12
  attachment :avatar, type: :image
13
- attr_accessible :avatar, :remove_avatar
13
+ attr_accessible :avatar, :remove_avatar if defined? attr_accessible
14
14
  end
15
15
 
16
16
  end
@@ -12,7 +12,7 @@ module UserCorporations
12
12
  extend ActiveSupport::Concern
13
13
 
14
14
  included do
15
- attr_accessible :corporation_name
15
+ attr_accessible :corporation_name if defined? attr_accessible
16
16
  end
17
17
 
18
18
  def corporation_id
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  class DagLink < ActiveRecord::Base
3
3
 
4
- attr_accessible :ancestor_id, :ancestor_type, :count, :descendant_id, :descendant_type, :direct
4
+ attr_accessible :ancestor_id, :ancestor_type, :count, :descendant_id, :descendant_type, :direct if defined? attr_accessible
5
5
  acts_as_dag_links polymorphic: true
6
6
 
7
7
  # We have to workaround a bug in Rails 3 here. But, since Rails 3 is no longer fully supported,
data/app/models/event.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Event < ActiveRecord::Base
2
- attr_accessible :description, :location, :end_at, :name, :start_at, :localized_start_at, :localized_end_at, :publish_on_local_website, :publish_on_global_website
2
+ attr_accessible :description, :location, :end_at, :name, :start_at, :localized_start_at, :localized_end_at, :publish_on_local_website, :publish_on_global_website if defined? attr_accessible
3
3
 
4
4
  is_structureable ancestor_class_names: %w(Group), descendant_class_names: %w(Group Page)
5
5
  is_navable
data/app/models/flag.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Flag < ActiveRecord::Base
2
- attr_accessible :flagable_id, :flagable_type, :key
2
+ attr_accessible :flagable_id, :flagable_type, :key if defined? attr_accessible
3
3
 
4
4
  belongs_to :flagable, polymorphic: true
5
5
 
@@ -1,5 +1,5 @@
1
1
  class GeoLocation < ActiveRecord::Base
2
- attr_accessible :address #, :city, :country, :country_code, :latitude, :longitude, :postal_code, :queried_at
2
+ attr_accessible :address if defined? attr_accessible
3
3
 
4
4
 
5
5
  # When to perform geocoding queries (to google)
data/app/models/group.rb CHANGED
@@ -6,17 +6,19 @@
6
6
  #
7
7
  class Group < ActiveRecord::Base
8
8
 
9
- attr_accessible( :name, # just the name of the group; example: 'Corporation A'
10
- :body, # a description text displayed on the groups pages top
11
- :token, # (optional) a short-name, abbreviation of the group's name, in
12
- # a global context; example: 'A'
13
- :internal_token, # (optional) an internal abbreviation, i.e. used by the
14
- # members of the group; example: 'AC'
15
- :extensive_name, # (optional) a long version of the group's name;
16
- # example: 'The Corporation of A'
17
- :direct_members_titles_string # Used for inline-editing: The comma-separated
18
- # titles of the child users of the group.
19
- )
9
+ if defined? attr_accessible
10
+ attr_accessible( :name, # just the name of the group; example: 'Corporation A'
11
+ :body, # a description text displayed on the groups pages top
12
+ :token, # (optional) a short-name, abbreviation of the group's name, in
13
+ # a global context; example: 'A'
14
+ :internal_token, # (optional) an internal abbreviation, i.e. used by the
15
+ # members of the group; example: 'AC'
16
+ :extensive_name, # (optional) a long version of the group's name;
17
+ # example: 'The Corporation of A'
18
+ :direct_members_titles_string # Used for inline-editing: The comma-separated
19
+ # titles of the child users of the group.
20
+ )
21
+ end
20
22
 
21
23
  include ActiveModel::ForbiddenAttributesProtection # TODO: Move into initializer
22
24
 
@@ -70,7 +72,7 @@ class Group < ActiveRecord::Base
70
72
  name + (parent_events.first ? ": " + parent_events.first.name : '')
71
73
  elsif has_flag? :contact_people
72
74
  name + (parent_events.first ? ": " + parent_events.first.name : '')
73
- elsif has_flag? :admins_parent
75
+ elsif has_flag?(:admins_parent) && parent_groups.first.parent_groups.first
74
76
  name + ": " + parent_groups.first.parent_groups.first.name
75
77
  elsif super.present?
76
78
  super
@@ -95,7 +95,7 @@ module GroupMixins::Memberships
95
95
  end
96
96
 
97
97
  def memberships_including_members
98
- memberships.includes(:descendant).order('valid_from' => 'desc')
98
+ memberships.includes(:descendant).order(valid_from: :desc)
99
99
  end
100
100
 
101
101
  # This returns the memberships that appear in the member list
@@ -1,5 +1,5 @@
1
1
  class LastSeenActivity < ActiveRecord::Base
2
- attr_accessible :description, :link_to_object_id, :link_to_object_type, :user_id
2
+ attr_accessible :description, :link_to_object_id, :link_to_object_type, :user_id if defined? attr_accessible
3
3
 
4
4
  belongs_to :user
5
5
  belongs_to :link_to_object, polymorphic: true
@@ -4,7 +4,7 @@
4
4
  # relevant to the position of the Navable object within the navigational structure.
5
5
  #
6
6
  class NavNode < ActiveRecord::Base
7
- attr_accessible :breadcrumb_item, :hidden_menu, :menu_item, :slim_breadcrumb, :slim_menu, :slim_url, :url_component
7
+ attr_accessible :breadcrumb_item, :hidden_menu, :menu_item, :slim_breadcrumb, :slim_menu, :slim_url, :url_component if defined? attr_accessible
8
8
 
9
9
  belongs_to :navable, polymorphic: true
10
10
 
data/app/models/page.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class Page < ActiveRecord::Base
2
2
 
3
- attr_accessible :content, :title, :redirect_to, :author
3
+ attr_accessible :content, :title, :redirect_to, :author if defined? attr_accessible
4
4
 
5
5
  is_structureable ancestor_class_names: %w(Page User Group Event), descendant_class_names: %w(Page User Group)
6
6
  is_navable
data/app/models/post.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class Post < ActiveRecord::Base
2
- attr_accessible :author_user_id, :external_author, :group_id, :sent_at, :sticky, :subject, :text
2
+ attr_accessible :author_user_id, :external_author, :group_id, :sent_at, :sticky, :subject, :text if defined? attr_accessible
3
3
  belongs_to :group
4
4
  belongs_to :author, :class_name => "User", foreign_key: 'author_user_id'
5
5
 
@@ -1,10 +1,12 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  class ProfileField < ActiveRecord::Base
3
3
 
4
- attr_accessible :label, :type, :value, :key, :profileable_id, :profileable_type
4
+ attr_accessible :label, :type, :value, :key, :profileable_id, :profileable_type if defined? attr_accessible
5
5
 
6
6
  belongs_to :profileable, polymorphic: true
7
7
 
8
+ after_commit :delete_cache
9
+
8
10
  include ProfileFieldMixins::HasChildProfileFields
9
11
 
10
12
  # Only allow the type column to be an existing class name.
@@ -88,13 +90,6 @@ class ProfileField < ActiveRecord::Base
88
90
  end
89
91
  end
90
92
 
91
- # Overwrite save to ensure that the cache is deleted in case of changes.
92
- #
93
- def save( *args )
94
- delete_cache
95
- super( *args )
96
- end
97
-
98
93
  def delete_cache
99
94
  super
100
95
  parent.try(:delete_cache)
@@ -28,7 +28,7 @@ module ProfileFieldMixins::HasChildProfileFields
28
28
  before_save :build_child_fields_if_absent
29
29
  after_save :save_child_profile_fields
30
30
 
31
- attr_accessible *keys
31
+ attr_accessible *keys if defined? attr_accessible
32
32
 
33
33
  include HasChildProfileFieldsInstanceMethods
34
34
 
@@ -5,7 +5,7 @@ module ProfileFieldTypes
5
5
  class Address < ProfileField
6
6
  def self.model_name; ProfileField.model_name; end
7
7
 
8
- attr_accessible :postal_address
8
+ attr_accessible :postal_address if defined? attr_accessible
9
9
 
10
10
  # Google Maps integration
11
11
  # see: http://rubydoc.info/gems/gmaps4rails/
@@ -10,7 +10,7 @@
10
10
  #
11
11
  class Relationship < ActiveRecord::Base
12
12
 
13
- attr_accessible :user1, :user2, :name, :who, :is, :of, :who_by_title, :of_by_title
13
+ attr_accessible :user1, :user2, :name, :who, :is, :of, :who_by_title, :of_by_title if defined? attr_accessible
14
14
 
15
15
  belongs_to :user1, class_name: "User", inverse_of: :relationships_as_first_user
16
16
  belongs_to :user2, class_name: "User", inverse_of: :relationships_as_second_user
@@ -1,5 +1,5 @@
1
1
  class Setting < RailsSettings::CachedSettings
2
- attr_accessible :var
2
+ attr_accessible :var if defined? attr_accessible
3
3
 
4
4
  def self.app_name=(name)
5
5
  super(name)
@@ -18,7 +18,7 @@ class StatusGroupMembership < UserGroupMembership
18
18
  :event, :event=, # alias methods
19
19
  to: :find_or_create_status_group_membership_info )
20
20
 
21
- attr_accessible :event_by_name
21
+ attr_accessible :event_by_name if defined? attr_accessible
22
22
 
23
23
  # Alias Methods For Delegated Methods
24
24
  # ==========================================================================================
@@ -1,7 +1,5 @@
1
1
  class StatusGroupMembershipInfo < ActiveRecord::Base
2
2
 
3
- attr_accessible
4
-
5
3
  belongs_to :membership, touch: true, class_name: "StatusGroupMembership", inverse_of: :status_group_membership_info
6
4
 
7
5
  belongs_to :promoted_by_workflow, foreign_key: 'promoted_by_workflow_id', class_name: "Workflow"
data/app/models/user.rb CHANGED
@@ -1,16 +1,18 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  class User < ActiveRecord::Base
3
3
 
4
- attr_accessible :first_name, :last_name, :name, :alias, :email, :create_account, :female, :add_to_group,
5
- :add_to_corporation, :date_of_birth, :localized_date_of_birth,
6
- :aktivmeldungsdatum, :study_address, :home_address, :work_address, :phone, :mobile
4
+ if defined? attr_accessible
5
+ attr_accessible :first_name, :last_name, :name, :alias, :email, :create_account, :female, :add_to_group,
6
+ :add_to_corporation, :date_of_birth, :localized_date_of_birth,
7
+ :aktivmeldungsdatum, :study_address, :home_address, :work_address, :phone, :mobile
8
+ end
7
9
 
8
10
  attr_accessor :create_account, :add_to_group, :add_to_corporation
9
11
  # Boolean, der vormerkt, ob dem (neuen) Benutzer ein Account hinzugefügt werden soll.
10
12
 
11
13
  validates_presence_of :first_name, :last_name
12
- validates_format_of :first_name, with: /^[^\,]*$/ # The name must not contain a comma.
13
- validates_format_of :last_name, with: /^[^\,]*$/
14
+ validates_format_of :first_name, with: /\A[^\,]*\z/ # The name must not contain a comma.
15
+ validates_format_of :last_name, with: /\A[^\,]*\z/
14
16
 
15
17
  validates_uniqueness_of :alias, :if => Proc.new { |user| user.account and user.alias.present? }
16
18
  validates_format_of :email, :with => Devise::email_regexp, :if => Proc.new { |user| user.email.present? }, judge: :ignore
@@ -289,7 +291,7 @@ class User < ActiveRecord::Base
289
291
  unless readonly?
290
292
  if description and not self.incognito?
291
293
  activity = find_or_build_last_seen_activity
292
- activity.touch # even if the attributes didn't change. The user probably hit 'reload' then.
294
+ activity.touch unless activity.new_record? # even if the attributes didn't change. The user probably hit 'reload' then.
293
295
  activity.description = description
294
296
  activity.link_to_object = object
295
297
  activity.save
@@ -393,7 +395,7 @@ class User < ActiveRecord::Base
393
395
  cached do
394
396
  if first_corporation
395
397
  my_memberships = UserGroupMembership.find_all_by_user( self )
396
- my_memberships = my_memberships.now.reorder{ |membership| membership.valid_from }
398
+ my_memberships = my_memberships.now.reorder(:valid_from)
397
399
  my_groups = my_memberships.collect { |membership| membership.try( :group ) } if my_memberships
398
400
  my_groups ||= []
399
401
  my_groups.select do |group|
@@ -33,7 +33,7 @@ class UserAccount < ActiveRecord::Base
33
33
  # Can unlock via email or after a specified time period.
34
34
  #
35
35
  devise :database_authenticatable, :recoverable, :rememberable, :validatable, :registerable
36
- attr_accessible :password, :password_confirmation, :remember_me
36
+ attr_accessible :login, :password, :password_confirmation, :remember_me if defined? attr_accessible
37
37
 
38
38
  # Virtual attribute for authenticating by either username, alias or email
39
39
  attr_accessor :login
@@ -28,7 +28,7 @@ class UserGroupMembership < DagLink
28
28
  #
29
29
  has_many_flags
30
30
  may_need_review
31
- attr_accessible :needs_review
31
+ attr_accessible :needs_review if defined? attr_accessible
32
32
 
33
33
 
34
34
  # General Properties
@@ -1,5 +1,5 @@
1
1
  class Workflow < WorkflowKit::Workflow #< ActiveRecord::Base
2
- attr_accessible :name
2
+ attr_accessible :name if defined? attr_accessible
3
3
 
4
4
  is_structureable ancestor_class_names: %w(Group)
5
5
 
@@ -1,5 +1,5 @@
1
- # Load the rails application
1
+ # Load the Rails application.
2
2
  require File.expand_path('../application', __FILE__)
3
3
 
4
- # Initialize the rails application
5
- MyPlatform::Application.initialize!
4
+ # Initialize the Rails application.
5
+ Rails.application.initialize!
@@ -0,0 +1,7 @@
1
+ # This file lists the assets that need to be compiled into separate files.
2
+
3
+ # Layout
4
+ Rails.application.config.assets.precompile += %w( bootstrap_setup.css bootstrap_layout.css )
5
+
6
+ # Galleria
7
+ Rails.application.config.assets.precompile += %w( galleria-classic.js galleria/classic-loader.gif galleria/classic-map.png )
@@ -19,13 +19,13 @@
19
19
 
20
20
  # This calls the instance method on the model: ProfileField#display_html
21
21
  #
22
- BestInPlace::DisplayMethods.add_model_method('ProfileField', :value, :display_html)
22
+ BestInPlace::DisplayMethods.add_model_method(ProfileField, :value, :display_html)
23
23
 
24
24
  # This calls a helper method `markup(str)`.
25
25
  #
26
- BestInPlace::DisplayMethods.add_helper_method('Page', :content, :markup)
27
- BestInPlace::DisplayMethods.add_helper_method('Group', :body, :markup)
28
- BestInPlace::DisplayMethods.add_helper_method('Event', :description, :markup)
26
+ BestInPlace::DisplayMethods.add_helper_method(Page, :content, :markup)
27
+ BestInPlace::DisplayMethods.add_helper_method(Group, :body, :markup)
28
+ BestInPlace::DisplayMethods.add_helper_method(Event, :description, :markup)
29
29
 
30
- BestInPlace::DisplayMethods.add_helper_method('Group', :direct_members_titles_string, :add_quick_links_to_comma_separated_list)
31
- BestInPlace::DisplayMethods.add_helper_method('User', :corporation_name, :add_quick_link)
30
+ BestInPlace::DisplayMethods.add_helper_method(Group, :direct_members_titles_string, :add_quick_links_to_comma_separated_list)
31
+ BestInPlace::DisplayMethods.add_helper_method(User, :corporation_name, :add_quick_link)
@@ -0,0 +1,7 @@
1
+ module SanitizeOverride
2
+ def sanitize_forbidden_attributes(attributes)
3
+ attributes
4
+ end
5
+ end
6
+
7
+ ActiveRecord::Relation.include SanitizeOverride
data/config/routes.rb CHANGED
@@ -13,8 +13,8 @@ Rails.application.routes.draw do
13
13
  # Users should be allowed to change their password(update registration), but not to sign up(create registration)
14
14
  devise_for :user_accounts, :controllers => {:sessions => 'sessions'}, :skip => [:registrations]
15
15
  devise_scope :user_account do
16
- match 'sign_in' => 'devise/sessions#new', as: :sign_in
17
- match 'sign_out' => 'devise/sessions#destroy', as: :sign_out
16
+ get 'sign_in' => 'devise/sessions#new', as: :sign_in
17
+ delete 'sign_out' => 'devise/sessions#destroy', as: :sign_out
18
18
  get 'change_password' => 'devise/registrations#edit', :as => 'edit_registration'
19
19
  get 'change_password' => 'devise/registrations#edit', :as => 'edit_password'
20
20
  get 'change_password' => 'devise/registrations#edit', :as => 'change_password'
@@ -3,7 +3,13 @@ class AddDeviseToUserAccounts < ActiveRecord::Migration
3
3
  change_table(:user_accounts) do |t|
4
4
  ## Database authenticatable
5
5
  #t.string :email, :null => false, :default => ""
6
- t.string :encrypted_password, :null => false, :default => ""
6
+ if Rails.version.starts_with?("3")
7
+ t.string :encrypted_password, :null => false, :default => ""
8
+ else
9
+ # https://github.com/fiedl/wingolfsplattform/commit/01f7d3182387aaca99564216661bb7b222fee084#diff-e7267e28ca9cf34b8ba67e6b088344caR5
10
+ # http://stackoverflow.com/a/12990129/2066546
11
+ t.change :encrypted_password, :string, null: false, default: ""
12
+ end
7
13
 
8
14
  ## Recoverable
9
15
  t.string :reset_password_token
@@ -5,21 +5,21 @@ module BestInPlace
5
5
  module ControllerExtensions
6
6
 
7
7
  private
8
- def respond_bip_ok(obj)
9
- #if obj.respond_to?(:id)
10
- # klass = "#{obj.class}_#{obj.id}"
11
- #else
12
- # klass = obj.class.to_s
13
- #end
14
- param_key = BestInPlace::Utils.object_to_key(obj)
15
- updating_attr = params[param_key].keys.first
16
-
17
- if renderer = BestInPlace::DisplayMethods.lookup(obj.class.name, updating_attr) || BestInPlace::DisplayMethods.lookup(obj.class.base_class.name, updating_attr)
18
- render :json => renderer.render_json(obj)
19
- else
20
- head :no_content
21
- end
22
- end
8
+ # def respond_bip_ok(obj)
9
+ # #if obj.respond_to?(:id)
10
+ # # klass = "#{obj.class}_#{obj.id}"
11
+ # #else
12
+ # # klass = obj.class.to_s
13
+ # #end
14
+ # param_key = BestInPlace::Utils.object_to_key(obj)
15
+ # updating_attr = params[param_key].keys.first
16
+ #
17
+ # if renderer = BestInPlace::DisplayMethods.lookup(obj.class.name, updating_attr) || BestInPlace::DisplayMethods.lookup(obj.class.base_class.name, updating_attr)
18
+ # render :json => renderer.render_json(obj)
19
+ # else
20
+ # head :no_content
21
+ # end
22
+ # end
23
23
 
24
24
  end
25
25
  end
@@ -2,115 +2,22 @@ require 'best_in_place'
2
2
  require_dependency(Gem::Specification.find_by_name('best_in_place').gem_dir + '/' + 'lib/best_in_place/helper')
3
3
 
4
4
  module BestInPlace
5
- module BestInPlaceHelpers
6
-
7
- def best_in_place(object, field, opts = {})
8
- if opts[:display_as] && opts[:display_with]
9
- raise ArgumentError, "Can't use both 'display_as' and 'display_with' options at the same time"
10
- end
11
-
12
- if opts[:display_with] && !opts[:display_with].is_a?(Proc) && !ViewHelpers.respond_to?(opts[:display_with])
13
- raise ArgumentError, "Can't find helper #{opts[:display_with]}"
14
- end
15
-
16
- real_object = real_object_for object
17
- opts[:type] ||= :input
18
- opts[:collection] ||= []
19
- field = field.to_s
20
-
21
- display_value = build_value_for(real_object, field, opts)
22
-
23
- collection = nil
24
- value = nil
25
- if opts[:type] == :select && !opts[:collection].blank?
26
- value = real_object.send(field)
27
- display_value = Hash[opts[:collection]].stringify_keys[value.to_s]
28
- collection = opts[:collection].to_json
29
- end
30
- if opts[:type] == :checkbox
31
- value = !!real_object.send(field)
32
- if opts[:collection].blank? || opts[:collection].size != 2
33
- opts[:collection] = ["No", "Yes"]
34
- end
35
- display_value = value ? opts[:collection][1] : opts[:collection][0]
36
- collection = opts[:collection].to_json
37
- end
38
- classes = ["best_in_place"]
39
- unless opts[:classes].nil?
40
- # the next three lines enable this opt to handle both a stings and a arrays
41
- classes << opts[:classes]
42
- classes.flatten!
43
- end
44
-
45
- out = "<span class='#{classes.join(" ")}'"
46
- out << " id='#{BestInPlace::Utils.build_best_in_place_id(real_object, field)}'"
47
- out << " data-url='#{opts[:path].blank? ? url_for(object) : url_for(opts[:path])}'"
48
- out << " data-object='#{opts[:object_name] || BestInPlace::Utils.object_to_key(real_object)}'"
49
- out << " data-collection='#{attribute_escape(collection)}'" unless collection.blank?
50
- out << " data-attribute='#{field}'"
51
- out << " data-activator='#{opts[:activator]}'" unless opts[:activator].blank?
52
- out << " data-ok-button='#{opts[:ok_button]}'" unless opts[:ok_button].blank?
53
- out << " data-ok-button-class='#{opts[:ok_button_class]}'" unless opts[:ok_button_class].blank?
54
- out << " data-cancel-button='#{opts[:cancel_button]}'" unless opts[:cancel_button].blank?
55
- out << " data-cancel-button-class='#{opts[:cancel_button_class]}'" unless opts[:cancel_button_class].blank?
56
- out << " data-nil='#{attribute_escape(opts[:nil])}'" unless opts[:nil].blank?
57
- out << " data-use-confirm='#{opts[:use_confirm]}'" unless opts[:use_confirm].nil?
58
- out << " data-type='#{opts[:type]}'"
59
- out << " data-inner-class='#{opts[:inner_class]}'" if opts[:inner_class]
60
- out << " data-html-attrs='#{opts[:html_attrs].to_json}'" unless opts[:html_attrs].blank?
61
- out << " data-original-content='#{attribute_escape(real_object.send(field))}'" #if opts[:display_as] || opts[:display_with]
62
- out << " data-value='#{attribute_escape(value)}'" if value
63
-
64
- if opts[:data] && opts[:data].is_a?(Hash)
65
- opts[:data].each do |k, v|
66
- if !v.is_a?(String) && !v.is_a?(Symbol)
67
- v = v.to_json
68
- end
69
- out << %( data-#{k.to_s.dasherize}="#{v}")
70
- end
71
- end
72
- if !opts[:sanitize].nil? && !opts[:sanitize]
73
- out << " data-sanitize='false'>"
74
- out << display_value.to_s
75
- else
76
- out << ">#{h(display_value.to_s)}"
77
- end
78
- out << "</span>"
79
- raw out
80
- end
5
+ module Helper
81
6
 
82
7
  private
83
8
 
84
- def build_value_for(object, field, opts)
9
+ # This overrides the lookup for best in place displays.
10
+ # The original method is defined here:
11
+ # https://github.com/bernat/best_in_place/blob/master/lib/best_in_place/helper.rb#L93
12
+ #
13
+ # This is needed in order to render according to the definitions of
14
+ # config/initializers/best_in_place_display_definitions.rb
15
+ #
16
+ def best_in_place_build_value_for(object, field, opts)
85
17
  return "" if object.send(field).blank?
86
-
87
- # klass = if object.respond_to?(:id)
88
- # "#{object.class}_#{object.id}"
89
- # else
90
- # object.class.to_s
91
- # end
92
- #
93
- # if opts[:display_as]
94
- # BestInPlace::DisplayMethods.add_model_method(klass, field, opts[:display_as])
95
- # object.send(opts[:display_as]).to_s
96
- #
97
- # elsif opts[:display_with].try(:is_a?, Proc)
98
- # BestInPlace::DisplayMethods.add_helper_proc(klass, field, opts[:display_with])
99
- # opts[:display_with].call(object.send(field))
100
- #
101
- # elsif opts[:display_with]
102
- # BestInPlace::DisplayMethods.add_helper_method(klass, field, opts[:display_with], opts[:helper_options])
103
- # if opts[:helper_options]
104
- # BestInPlace::ViewHelpers.send(opts[:display_with], object.send(field), opts[:helper_options])
105
- # else
106
- # BestInPlace::ViewHelpers.send(opts[:display_with], object.send(field))
107
- # end
108
- #
109
- # else
110
- # object.send(field).to_s
111
- # end
112
18
 
113
- renderer = BestInPlace::DisplayMethods.lookup(object.class.name, field) || BestInPlace::DisplayMethods.lookup(object.class.base_class.name, field)
19
+ renderer = BestInPlace::DisplayMethods.lookup(object.class, field) || BestInPlace::DisplayMethods.lookup(object.class.base_class, field)
20
+
114
21
  if renderer.nil?
115
22
  return object.send(field).to_s
116
23
  elsif renderer.opts[:type] == :helper
@@ -7,7 +7,7 @@ require 'rubygems'
7
7
 
8
8
  # Rails and Additions
9
9
  require 'rails-i18n'
10
- require 'strong_parameters'
10
+ require 'strong_parameters' unless defined? ActionController::Parameters
11
11
 
12
12
  # JavaScript
13
13
  require 'jquery-ui-rails'
@@ -54,7 +54,6 @@ require 'gmaps4rails'
54
54
 
55
55
  # Form Helpers
56
56
  require 'formtastic'
57
- require 'judge/formtastic'
58
57
 
59
58
  # File Uploads
60
59
  require 'carrierwave'
@@ -1,3 +1,3 @@
1
1
  module YourPlatform
2
- VERSION = "0.0.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -42,7 +42,7 @@ describe ActiveRecordJsonUrlExtension do
42
42
  subject { @user.serializable_hash }
43
43
  it { should be_kind_of Hash }
44
44
  it "should include the url" do
45
- subject[ :url ].should == @user.url
45
+ subject['url'].should == @user.url
46
46
  end
47
47
 
48
48
  describe "for associated objects" do
@@ -52,16 +52,16 @@ describe ActiveRecordJsonUrlExtension do
52
52
  end
53
53
  subject { @user.serializable_hash( :include => :parent_groups ) }
54
54
  it "should include the urls of the associated objects" do
55
- subject[ :parent_groups ][ 0 ][ :url ].should == @group.url
55
+ subject['parent_groups'][0]['url'].should == @group.url
56
56
  end
57
57
 
58
58
  describe "with other methods being included as well" do
59
59
  subject { @user.serializable_hash( :include => { :parent_groups => { :methods => :title } } ) }
60
60
  it "should include the other methods" do
61
- subject[ :parent_groups ][ 0 ][ :title ].should == @group.title
61
+ subject['parent_groups'][0]['title'].should == @group.title
62
62
  end
63
63
  it "should include the url" do
64
- subject[ :parent_groups ][ 0 ][ :url ].should == @group.url
64
+ subject['parent_groups'][0]['url'].should == @group.url
65
65
  end
66
66
  end
67
67
  end
@@ -57,12 +57,12 @@ describe Bookmark do
57
57
  describe "#serializable_hash" do
58
58
  it "should include the bookmarkable object's title" do
59
59
  @bookmarks.each do |bookmark| # check it for several types of bookmarks
60
- bookmark.serializable_hash[ :bookmarkable ][ :title ].should == bookmark.bookmarkable.title
60
+ bookmark.serializable_hash['bookmarkable']['title'].should == bookmark.bookmarkable.title
61
61
  end
62
62
  end
63
63
  it "should include the bookmarkable object's url" do
64
64
  @bookmarks.each do |bookmark|
65
- bookmark.serializable_hash[ :bookmarkable ][ :url ].should == bookmark.bookmarkable.url
65
+ bookmark.serializable_hash['bookmarkable']['url'].should == bookmark.bookmarkable.url
66
66
  end
67
67
  end
68
68
  end
@@ -25,7 +25,8 @@ describe Corporation do
25
25
  it { should_not include @group }
26
26
 
27
27
  it "should return an array of Corporation-type objects" do
28
- subject.should be_kind_of Array
28
+ subject.should be_kind_of ActiveRecord::Relation
29
+ subject.to_a.should be_kind_of Array
29
30
  subject.first.should be_kind_of Corporation
30
31
  end
31
32
  it "should not find the officers_parent group of the corporations_parent" do
@@ -121,7 +122,7 @@ describe Corporation do
121
122
  specify "the cache should be updated after a status group is renamed" do
122
123
  @corporation.status_groups # This created the cached version.
123
124
  @status_group.update_attributes name: 'New Status Name'
124
- subject.map(&:name).should include 'New Status Name'
125
+ subject.reload.map(&:name).should include 'New Status Name'
125
126
  end
126
127
  end
127
128
 
@@ -43,7 +43,7 @@ describe Event do
43
43
  subject.should == @event.parent_groups
44
44
  end
45
45
  it "should return an array of the associated groups" do
46
- subject.should be_kind_of Array
46
+ subject.to_a.should be_kind_of Array
47
47
  subject.should include @group
48
48
  end
49
49
  end
@@ -125,8 +125,8 @@ describe Event do
125
125
  describe "chained with .find_all_by_group" do
126
126
  subject { Event.find_all_by_group( @group ).upcoming }
127
127
  it "should commute with find_all_by_group" do
128
- Event.find_all_by_group( @group ).upcoming.should ==
129
- Event.upcoming.find_all_by_group( @group )
128
+ Event.find_all_by_group(@group).upcoming.to_a.should ==
129
+ Event.upcoming.find_all_by_group(@group).to_a
130
130
  end
131
131
  it "should return associated events starting in the future" do
132
132
  subject.should include @upcoming_event
@@ -57,7 +57,7 @@ describe GroupMixins::Corporations do
57
57
  subject.should == Group.find_corporation_groups
58
58
  end
59
59
  it "should be of the proper type" do # bug test: is the `corporations` method overridden correctly?
60
- subject.should be_kind_of Array
60
+ subject.to_a.should be_kind_of Array
61
61
  subject.first.should_not be_kind_of User
62
62
  subject.first.should be_kind_of Group
63
63
  end
@@ -120,7 +120,7 @@ describe Profileable do
120
120
  end
121
121
  subject { @profileable.profile_fields }
122
122
  it "should be an Array of ProfileFields" do
123
- subject.should be_kind_of Array
123
+ subject.to_a.should be_kind_of Array
124
124
  subject.first.should be_kind_of ProfileField
125
125
  end
126
126
  describe "#to_json" do
@@ -390,7 +390,7 @@ describe StructureableMixins::HasSpecialGroups do
390
390
  it { should == @my_structureable.testers }
391
391
  end
392
392
  context "for an absent special group" do
393
- it { should be_kind_of Array }
393
+ its(:to_a) { should be_kind_of Array }
394
394
  it { should_not == nil }
395
395
  end
396
396
  end
@@ -36,6 +36,11 @@ describe UserGroupMembershipMixins::ValidityRangeForIndirectMemberships do
36
36
  @direct_membership_a.update_attribute(:valid_to, @t2)
37
37
  @direct_membership_b.update_attribute(:valid_from, @t2)
38
38
  @direct_membership_b.update_attribute(:valid_to, @t3)
39
+ @indirect_membership.delete_cache
40
+
41
+ @direct_membership_a.reload
42
+ @direct_membership_b.reload
43
+ @indirect_membership.reload
39
44
  end
40
45
 
41
46
  specify "preliminaries" do
@@ -98,7 +103,7 @@ describe UserGroupMembershipMixins::ValidityRangeForIndirectMemberships do
98
103
  @direct_membership_b.update_attribute(:valid_from, @t2)
99
104
  @direct_membership_b.update_attribute(:valid_to, @t3)
100
105
  end
101
- subject { @indirect_membership.recalculate_validity_range_from_direct_memberships; @indirect_membership.reload }
106
+ subject { @indirect_membership.reload.recalculate_validity_range_from_direct_memberships; @indirect_membership.reload }
102
107
  it "should make the indirect validity range match the direct memberships' combined range" do
103
108
  subject
104
109
  @indirect_membership.valid_from.to_i.should == @t1.to_i
@@ -1665,7 +1665,7 @@ describe User do
1665
1665
  it { should include @hidden_user }
1666
1666
  it { should_not include @visible_user }
1667
1667
  it "should be chainable" do
1668
- subject.where(id: @hidden_user.id).should == User.where(id: @hidden_user.id).hidden
1668
+ subject.where(id: @hidden_user.id).to_a.should == User.where(id: @hidden_user.id).hidden.to_a
1669
1669
  subject.count.should > 0
1670
1670
  end
1671
1671
  end
data/spec/spec_helper.rb CHANGED
@@ -171,7 +171,7 @@ Spork.prefork do
171
171
  # in the specs.
172
172
  #
173
173
  config.include RSpec::Matchers
174
- config.include Rails.application.routes.url_helpers
174
+ config.include Rails.application.routes.url_helpers if Rails.version.starts_with?("3")
175
175
  config.include FactoryGirl::Syntax::Methods
176
176
  config.include EmailSpec::Helpers
177
177
  config.include EmailSpec::Matchers
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: your_platform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Fiedlschuster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-30 00:00:00.000000000 Z
11
+ date: 2015-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.2.21
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.2.21
27
27
  - !ruby/object:Gem::Dependency
@@ -182,14 +182,14 @@ dependencies:
182
182
  name: devise
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - "~>"
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
187
  version: 2.2.5
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - "~>"
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: 2.2.5
195
195
  - !ruby/object:Gem::Dependency
@@ -238,16 +238,16 @@ dependencies:
238
238
  name: rails-settings-cached
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
- - - '='
241
+ - - ">="
242
242
  - !ruby/object:Gem::Version
243
- version: 0.2.4
243
+ version: '0'
244
244
  type: :runtime
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
- - - '='
248
+ - - ">="
249
249
  - !ruby/object:Gem::Version
250
- version: 0.2.4
250
+ version: '0'
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: haml
253
253
  requirement: !ruby/object:Gem::Requirement
@@ -322,14 +322,14 @@ dependencies:
322
322
  name: best_in_place
323
323
  requirement: !ruby/object:Gem::Requirement
324
324
  requirements:
325
- - - "~>"
325
+ - - ">="
326
326
  - !ruby/object:Gem::Version
327
327
  version: 2.1.0
328
328
  type: :runtime
329
329
  prerelease: false
330
330
  version_requirements: !ruby/object:Gem::Requirement
331
331
  requirements:
332
- - - "~>"
332
+ - - ">="
333
333
  - !ruby/object:Gem::Version
334
334
  version: 2.1.0
335
335
  - !ruby/object:Gem::Dependency
@@ -388,20 +388,6 @@ dependencies:
388
388
  - - ">="
389
389
  - !ruby/object:Gem::Version
390
390
  version: '0'
391
- - !ruby/object:Gem::Dependency
392
- name: judge-formtastic
393
- requirement: !ruby/object:Gem::Requirement
394
- requirements:
395
- - - ">="
396
- - !ruby/object:Gem::Version
397
- version: '0'
398
- type: :runtime
399
- prerelease: false
400
- version_requirements: !ruby/object:Gem::Requirement
401
- requirements:
402
- - - ">="
403
- - !ruby/object:Gem::Version
404
- version: '0'
405
391
  - !ruby/object:Gem::Dependency
406
392
  name: carrierwave
407
393
  requirement: !ruby/object:Gem::Requirement
@@ -1148,6 +1134,7 @@ files:
1148
1134
  - config/initializers/active_record_structureable_extension.rb
1149
1135
  - config/initializers/active_record_update_attributes_bip_extension.rb
1150
1136
  - config/initializers/array_extension.rb
1137
+ - config/initializers/assets.rb
1151
1138
  - config/initializers/best_in_place_display_definitions.rb
1152
1139
  - config/initializers/cache_store_extension.rb
1153
1140
  - config/initializers/devise.rb
@@ -1157,6 +1144,7 @@ files:
1157
1144
  - config/initializers/mime_types.rb
1158
1145
  - config/initializers/mini_profiler.rb
1159
1146
  - config/initializers/object_to_b_extension.rb
1147
+ - config/initializers/protected_attributes.rb
1160
1148
  - config/initializers/refile.rb
1161
1149
  - config/initializers/sidekiq.rb
1162
1150
  - config/locales/attachments/de.yml