your_platform 0.0.2 → 1.0.0

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.
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