introspective_admin 0.0.1

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 (119) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock +279 -0
  5. data/LICENSE +22 -0
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +52 -0
  8. data/Rakefile +26 -0
  9. data/bin/rails +12 -0
  10. data/introspective_admin.gemspec +38 -0
  11. data/lib/introspective_admin/base.rb +170 -0
  12. data/lib/introspective_admin/version.rb +3 -0
  13. data/lib/introspective_admin.rb +4 -0
  14. data/lib/tasks/introspective_admin_tasks.rake +4 -0
  15. data/spec/admin/company_admin_spec.rb +72 -0
  16. data/spec/admin/job_admin_spec.rb +61 -0
  17. data/spec/admin/location_admin_spec.rb +65 -0
  18. data/spec/admin/project__admin_spec.rb +71 -0
  19. data/spec/dummy/README.rdoc +28 -0
  20. data/spec/dummy/Rakefile +6 -0
  21. data/spec/dummy/app/admin/company_admin.rb +4 -0
  22. data/spec/dummy/app/admin/job_admin.rb +4 -0
  23. data/spec/dummy/app/admin/location_admin.rb +4 -0
  24. data/spec/dummy/app/admin/project_admin.rb +6 -0
  25. data/spec/dummy/app/admin/role_admin.rb +5 -0
  26. data/spec/dummy/app/admin/user_admin.rb +9 -0
  27. data/spec/dummy/app/assets/images/.keep +0 -0
  28. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  29. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  30. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  31. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  32. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  33. data/spec/dummy/app/mailers/.keep +0 -0
  34. data/spec/dummy/app/models/.keep +0 -0
  35. data/spec/dummy/app/models/abstract_adapter.rb +13 -0
  36. data/spec/dummy/app/models/admin_user.rb +6 -0
  37. data/spec/dummy/app/models/chat.rb +18 -0
  38. data/spec/dummy/app/models/chat_message.rb +34 -0
  39. data/spec/dummy/app/models/chat_message_user.rb +17 -0
  40. data/spec/dummy/app/models/chat_user.rb +16 -0
  41. data/spec/dummy/app/models/company.rb +12 -0
  42. data/spec/dummy/app/models/concerns/.keep +0 -0
  43. data/spec/dummy/app/models/job.rb +10 -0
  44. data/spec/dummy/app/models/locatable.rb +6 -0
  45. data/spec/dummy/app/models/location.rb +26 -0
  46. data/spec/dummy/app/models/location_beacon.rb +16 -0
  47. data/spec/dummy/app/models/location_gps.rb +64 -0
  48. data/spec/dummy/app/models/project.rb +20 -0
  49. data/spec/dummy/app/models/project_job.rb +7 -0
  50. data/spec/dummy/app/models/role.rb +25 -0
  51. data/spec/dummy/app/models/team.rb +9 -0
  52. data/spec/dummy/app/models/team_user.rb +13 -0
  53. data/spec/dummy/app/models/user/chatter.rb +79 -0
  54. data/spec/dummy/app/models/user.rb +75 -0
  55. data/spec/dummy/app/models/user_location.rb +28 -0
  56. data/spec/dummy/app/models/user_project_job.rb +16 -0
  57. data/spec/dummy/app/views/layouts/application.html.erb +13 -0
  58. data/spec/dummy/bin/bundle +3 -0
  59. data/spec/dummy/bin/rails +4 -0
  60. data/spec/dummy/bin/rake +4 -0
  61. data/spec/dummy/bin/setup +29 -0
  62. data/spec/dummy/config/application.rb +32 -0
  63. data/spec/dummy/config/boot.rb +5 -0
  64. data/spec/dummy/config/database.yml +18 -0
  65. data/spec/dummy/config/environment.rb +11 -0
  66. data/spec/dummy/config/environments/development.rb +41 -0
  67. data/spec/dummy/config/environments/production.rb +79 -0
  68. data/spec/dummy/config/environments/test.rb +43 -0
  69. data/spec/dummy/config/initializers/active_admin.rb +7 -0
  70. data/spec/dummy/config/initializers/assets.rb +11 -0
  71. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  72. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  73. data/spec/dummy/config/initializers/devise.rb +260 -0
  74. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  75. data/spec/dummy/config/initializers/inflections.rb +16 -0
  76. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  77. data/spec/dummy/config/initializers/session_store.rb +3 -0
  78. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  79. data/spec/dummy/config/locales/en.yml +23 -0
  80. data/spec/dummy/config/routes.rb +9 -0
  81. data/spec/dummy/config/secrets.yml +22 -0
  82. data/spec/dummy/config.ru +4 -0
  83. data/spec/dummy/db/development.sqlite3 +0 -0
  84. data/spec/dummy/db/migrate/20141002205024_devise_create_users.rb +42 -0
  85. data/spec/dummy/db/migrate/20141002211055_devise_create_admin_users.rb +48 -0
  86. data/spec/dummy/db/migrate/20141002211057_create_active_admin_comments.rb +19 -0
  87. data/spec/dummy/db/migrate/20141002220722_add_lockable_to_users.rb +8 -0
  88. data/spec/dummy/db/migrate/20150406213646_create_companies.rb +11 -0
  89. data/spec/dummy/db/migrate/20150414213154_add_user_authentication_token.rb +11 -0
  90. data/spec/dummy/db/migrate/20150415222005_create_roles.rb +12 -0
  91. data/spec/dummy/db/migrate/20150505181635_create_chats.rb +9 -0
  92. data/spec/dummy/db/migrate/20150505181636_create_chat_users.rb +11 -0
  93. data/spec/dummy/db/migrate/20150505181640_create_chat_messages.rb +11 -0
  94. data/spec/dummy/db/migrate/20150507191529_create_chat_message_users.rb +11 -0
  95. data/spec/dummy/db/migrate/20150601200526_create_locations.rb +12 -0
  96. data/spec/dummy/db/migrate/20150601200533_create_locatables.rb +10 -0
  97. data/spec/dummy/db/migrate/20150601212924_create_location_beacons.rb +15 -0
  98. data/spec/dummy/db/migrate/20150601213542_create_location_gps.rb +12 -0
  99. data/spec/dummy/db/migrate/20150609201823_create_user_locations.rb +14 -0
  100. data/spec/dummy/db/migrate/20150617232519_create_projects.rb +10 -0
  101. data/spec/dummy/db/migrate/20150617232521_create_jobs.rb +9 -0
  102. data/spec/dummy/db/migrate/20150617232522_create_project_jobs.rb +11 -0
  103. data/spec/dummy/db/migrate/20150623170133_create_user_project_jobs.rb +12 -0
  104. data/spec/dummy/db/migrate/20150701234929_create_teams.rb +11 -0
  105. data/spec/dummy/db/migrate/20150701234930_create_team_users.rb +11 -0
  106. data/spec/dummy/db/migrate/20150727214950_add_confirmable_to_devise.rb +11 -0
  107. data/spec/dummy/db/migrate/20150820190524_add_user_names.rb +6 -0
  108. data/spec/dummy/db/migrate/20150909225019_add_password_to_project.rb +5 -0
  109. data/spec/dummy/db/schema.rb +261 -0
  110. data/spec/dummy/lib/assets/.keep +0 -0
  111. data/spec/dummy/log/.keep +0 -0
  112. data/spec/dummy/public/404.html +67 -0
  113. data/spec/dummy/public/422.html +67 -0
  114. data/spec/dummy/public/500.html +66 -0
  115. data/spec/dummy/public/favicon.ico +0 -0
  116. data/spec/rails_helper.rb +13 -0
  117. data/spec/support/blueprints.rb +119 -0
  118. data/spec/support/location_helper.rb +56 -0
  119. metadata +420 -0
@@ -0,0 +1,20 @@
1
+ class Project < AbstractAdapter
2
+ belongs_to :owner, foreign_key: :owner_id, class_name: 'Company'
3
+
4
+ has_many :roles, as: :ownable
5
+ has_many :admins, through: :roles, source: :user
6
+ accepts_nested_attributes_for :roles, allow_destroy: true
7
+
8
+ has_many :project_jobs, dependent: :destroy, inverse_of: :project
9
+ has_many :jobs, through: :project_jobs
10
+ accepts_nested_attributes_for :project_jobs, allow_destroy: true
11
+
12
+ has_many :user_project_jobs, dependent: :destroy, inverse_of: :project
13
+ has_many :users, through: :user_project_jobs, inverse_of: :projects
14
+ accepts_nested_attributes_for :user_project_jobs, allow_destroy: true
15
+
16
+ has_many :teams, dependent: :destroy, inverse_of: :project
17
+ accepts_nested_attributes_for :teams, allow_destroy: true
18
+
19
+
20
+ end
@@ -0,0 +1,7 @@
1
+ class ProjectJob < AbstractAdapter
2
+ belongs_to :project
3
+ belongs_to :job
4
+
5
+ delegate :title, to: :job
6
+
7
+ end
@@ -0,0 +1,25 @@
1
+ class Role < AbstractAdapter
2
+ belongs_to :user
3
+ belongs_to :ownable, polymorphic: true
4
+
5
+ validates_uniqueness_of :user_id, scope: [:ownable_type,:ownable_id], unless: "user_id.nil?", message: "user has already been assigned that role"
6
+ validates_inclusion_of :ownable_type, in: ['Company', 'Project']
7
+
8
+ delegate :email, to: :user, allow_nil: true
9
+ def attributes
10
+ scuper.merge(email: email)
11
+ end
12
+
13
+ def self.ownable_assign_options(model=nil)
14
+ (Company.all + Project.all).map { |i| [ "#{i.class}: #{i.name}", "#{i.class}-#{i.id}"] }
15
+ end
16
+
17
+ def ownable_assign
18
+ ownable.present? ? "#{ownable_type}-#{ownable_id}" : nil
19
+ end
20
+
21
+ def ownable_assign=(value)
22
+ self.ownable_type,self.ownable_id = value.split('-')
23
+ end
24
+
25
+ end
@@ -0,0 +1,9 @@
1
+ class Team < AbstractAdapter
2
+ belongs_to :project
3
+ belongs_to :creator, class_name: 'User'
4
+
5
+ has_many :team_users, inverse_of: :team
6
+ has_many :users, through: :team_users
7
+ accepts_nested_attributes_for :team_users, allow_destroy: true
8
+
9
+ end
@@ -0,0 +1,13 @@
1
+ class TeamUser < AbstractAdapter
2
+ belongs_to :user
3
+ belongs_to :team
4
+
5
+ validate :user_on_project
6
+
7
+ def user_on_project
8
+ unless user && team && user.projects.include?(team.project)
9
+ errors.add(:user, "#{user.try(:name)} is not on the #{team.try(:project).try(:name)} project")
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,79 @@
1
+ module User::Chatter
2
+
3
+ def message_query(chat_id: chat_id, new: true)
4
+ messages.joins(:chat_message_users)
5
+ .where('chat_message_users.user_id'=> id)
6
+ .where(new ? {'chat_message_users.read_at'=>nil} : '')
7
+ .where(chat_id ? {'chat_messages.chat_id'=> chat_id} : '')
8
+ .order('') # or it will add an order by id clause that breaks the count query.
9
+ end
10
+
11
+ def new_messages?(chat=nil) # returns a hash of chat_ids with new message counts
12
+ chat_id = chat.kind_of?(Chat) ? chat.id : chat
13
+ new = message_query(chat_id: chat_id, new: true)
14
+ .select("chat_messages.chat_id, count(chat_messages.id) as count")
15
+ .group('chat_id')
16
+
17
+ chat ? { chat_id => new.first.try(:count)||0 } : Hash[new.map {|c| [c.chat_id, c.count]} ]
18
+ end
19
+
20
+ def read_messages(chat: nil, mark_as_read: false, new: true)
21
+ chat_id = chat.kind_of?(Chat) ? chat.id : chat
22
+ new = message_query(chat_id: chat_id, new: new).order('chat_messages.created_at').includes(:author) # :chat?
23
+ new.map(&:chat).uniq.each {|chat| mark_as_read(chat) } if mark_as_read
24
+ new
25
+ end
26
+
27
+ def chat(users: users, message: message)
28
+ users = [users].flatten
29
+ users = users.first.kind_of?(User) ? users : User.where(id: users)
30
+ chat = Chat.create(creator: self)
31
+ chat.users.push users
32
+ chat.messages.build(message: message, author: self)
33
+ chat.save!
34
+ chat
35
+ end
36
+
37
+ def reply(chat: chat, message: message)
38
+ chat = chat.kind_of?(Chat) ? chat : Chat.find(chat)
39
+ mark_as_read(chat) # a reply implies that the thread has been read
40
+ chat.messages.build(message: message, author: self)
41
+ chat.save!
42
+ chat
43
+ end
44
+
45
+ def add_chatters(chat: chat, users: users)
46
+ users = [users].flatten
47
+ users = users.first.kind_of?(User) ? users : User.where(id: users)
48
+ chat = chat.kind_of?(Chat) ? chat : Chat.find(chat)
49
+
50
+ if chat.active_users.include?(self) # only current participants can add new users
51
+ chat.users.push users
52
+ chat.messages.build(chat: chat, author: self, message: "#{self.name} [[ADDED_USER_MESSAGE]] #{users.map(&:name).join(',')}")
53
+ chat.save!
54
+ else
55
+ chat.errors[:base] << "Only current chat participants can add users."
56
+ raise ActiveRecord::RecordInvalid.new(chat)
57
+ end
58
+ end
59
+
60
+ def leave_chat(chat)
61
+ chat = chat.kind_of?(Chat) ? chat : Chat.find(chat)
62
+
63
+ if chat.active_users.include?(self)
64
+ reply(chat:chat, message: "#{name} [[DEPARTS_MESSAGE]]")
65
+ chat.chat_users.detect {|cu| cu.user_id == self.id}.update_attributes(departed_at: Time.now)
66
+ else
67
+ true
68
+ end
69
+ end
70
+
71
+ def mark_as_read(chat)
72
+ ChatMessageUser.joins(:chat_message).where('read_at IS NULL AND chat_messages.chat_id = ? AND user_id = ?', chat.id, id).update_all(read_at: Time.now)
73
+ end
74
+
75
+ def mark_messages_as_read(messages)
76
+ chat_message_users.where("chat_message_id in (?) and read_at IS NULL", messages.map(&:id)).update_all(read_at: Time.now)
77
+ end
78
+
79
+ end
@@ -0,0 +1,75 @@
1
+ class User < AbstractAdapter
2
+ # Include default devise modules. Others available are:
3
+ # :confirmable, :lockable, :timeoutable and :omniauthable
4
+ devise :database_authenticatable, :registerable, :confirmable,
5
+ :recoverable, :rememberable, :trackable, :validatable, :lockable
6
+
7
+ scope :active, -> { where(:locked_at => nil) }
8
+ scope :inactive, -> { where('locked_at is not null') }
9
+
10
+ has_many :user_locations, dependent: :destroy
11
+
12
+ has_many :user_project_jobs, dependent: :destroy, inverse_of: :user
13
+ has_many :jobs, through: :user_project_jobs, inverse_of: :users
14
+ has_many :projects, through: :user_project_jobs, inverse_of: :users
15
+ accepts_nested_attributes_for :user_project_jobs
16
+
17
+ before_validation :set_default_password_from_project, on: :create
18
+
19
+ has_many :team_users
20
+ has_many :teams, through: :team_users
21
+
22
+ has_many :own_chats, foreign_key: :creator_id, class_name: 'Chat'
23
+ has_many :chat_users
24
+ has_many :chats, through: :chat_users
25
+ has_many :chat_message_users
26
+ has_many :messages, ->{ where('chat_messages.created_at >= chat_users.created_at and (chat_users.departed_at IS NULL OR chat_messages.created_at <= chat_users.departed_at)') }, through: :chats
27
+ include User::Chatter
28
+
29
+ has_many :roles, dependent: :destroy, inverse_of: :user
30
+ accepts_nested_attributes_for :roles, allow_destroy: true
31
+ has_many :admin_companies, through: :roles, source: :ownable, source_type: Company
32
+ has_many :admin_projects, through: :roles, source: :ownable, source_type: Project
33
+
34
+ def all_admin_projects # aggregate companies' projects with project admin roles
35
+ (admin_companies.map(&:projects)+admin_projects).flatten
36
+ end
37
+
38
+ def admin?(record)
39
+ roles.detect{|r| r.ownable == record }.present?
40
+ end
41
+
42
+ def company_admin? # an admin of any company
43
+ roles.detect{|r| r.ownable_type == 'Company' }.present?
44
+ end
45
+
46
+ def project_admin? # an admin of any project
47
+ company_admin? || roles.detect{|r| r.ownable_type == 'Project' }.present?
48
+ end
49
+
50
+
51
+ def set_default_password_from_project
52
+ self.password = user_project_jobs.first.try(:project).try(:default_password) if password.blank?
53
+ end
54
+
55
+ def name
56
+ [first_name,last_name].delete_if(&:blank?).join(' ')
57
+ end
58
+
59
+ def avatar_url(size='medium')
60
+ avatar.try(:file).try(:url,size)
61
+ end
62
+
63
+ def self.attribute_param_types
64
+ { "skip_confirmation_email" => Virtus::Attribute::Boolean }
65
+ end
66
+
67
+ def skip_confirmation_email=(s)
68
+ return unless s.to_s == "true"
69
+ # skip_confirmation! does not work with update_attributes, a work-around:
70
+ self.update_column(:email, email) && self.reload if self.valid? && self.id
71
+ # devise: confirm the user without requiring a confirmation email
72
+ self.skip_confirmation!
73
+ end
74
+
75
+ end
@@ -0,0 +1,28 @@
1
+ class UserLocation < AbstractAdapter
2
+ belongs_to :user
3
+ belongs_to :location
4
+ belongs_to :detectable, polymorphic: true
5
+
6
+ validates_inclusion_of :detectable_type, in: %w(LocationBeacon LocationGps)
7
+
8
+ default_scope { includes(:detectable).order("created_at desc") }
9
+
10
+ def coords=(c) # convenience method to set coordinates by an array of [lat,lng,alt]
11
+ self.lat = c[0]
12
+ self.lng = c[1]
13
+ self.alt = c[2]
14
+ end
15
+
16
+ def beacon
17
+ detectable.is_a?(LocationBeacon) ? detectable : {}
18
+ end
19
+
20
+ def distance
21
+ if location.gps && lat && lng
22
+ location.gps.distance_from(lat,lng)
23
+ else
24
+ nil
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,16 @@
1
+ class UserProjectJob < AbstractAdapter
2
+ belongs_to :user, inverse_of: :user_project_jobs
3
+ belongs_to :project, inverse_of: :user_project_jobs
4
+ belongs_to :job, inverse_of: :user_project_jobs
5
+
6
+ validates_inclusion_of :job, in: proc {|r| r.project.try(:jobs) || [] }
7
+
8
+ delegate :email, :avatar_url, to: :user
9
+ delegate :title, to: :job
10
+ delegate :name, to: :project
11
+
12
+ def self.options_for_job(project=nil)
13
+ project.jobs
14
+ end
15
+
16
+ end
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= stylesheet_link_tag 'application', media: 'all' %>
6
+ <%= csrf_meta_tags %>
7
+ </head>
8
+ <body>
9
+
10
+ <%= yield %>
11
+
12
+ </body>
13
+ </html>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
3
+ require_relative '../config/boot'
4
+ require 'rails/commands'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require_relative '../config/boot'
3
+ require 'rake'
4
+ Rake.application.run
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pathname'
3
+
4
+ # path to your application root.
5
+ APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
6
+
7
+ Dir.chdir APP_ROOT do
8
+ # This script is a starting point to setup your application.
9
+ # Add necessary setup steps to this file:
10
+
11
+ puts "== Installing dependencies =="
12
+ system "gem install bundler --conservative"
13
+ system "bundle check || bundle install"
14
+
15
+ # puts "\n== Copying sample files =="
16
+ # unless File.exist?("config/database.yml")
17
+ # system "cp config/database.yml.sample config/database.yml"
18
+ # end
19
+
20
+ puts "\n== Preparing database =="
21
+ system "bin/rake db:setup"
22
+
23
+ puts "\n== Removing old logs and tempfiles =="
24
+ system "rm -f log/*"
25
+ system "rm -rf tmp/cache"
26
+
27
+ puts "\n== Restarting application server =="
28
+ system "touch tmp/restart.txt"
29
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ # Pick the frameworks you want:
4
+ require "active_record/railtie"
5
+ require "action_controller/railtie"
6
+ require "action_mailer/railtie"
7
+ require "action_view/railtie"
8
+ require "sprockets/railtie"
9
+ # require "rails/test_unit/railtie"
10
+
11
+ #Bundler.require(*Rails.groups)
12
+ require "introspective_admin"
13
+
14
+ module Dummy
15
+ class Application < Rails::Application
16
+ # Settings in config/environments/* take precedence over those specified here.
17
+ # Application configuration should go into files in config/initializers
18
+ # -- all .rb files in that directory are automatically loaded.
19
+
20
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
21
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
22
+ # config.time_zone = 'Central Time (US & Canada)'
23
+
24
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
25
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
26
+ # config.i18n.default_locale = :de
27
+
28
+ # Do not swallow errors in after_commit/after_rollback callbacks.
29
+ config.active_record.raise_in_transactional_callbacks = true
30
+ end
31
+ end
32
+
@@ -0,0 +1,5 @@
1
+ # Set up gems listed in the Gemfile.
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
5
+ $LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,18 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3-ruby (not necessary on OS X Leopard)
3
+ development:
4
+ adapter: sqlite3
5
+ database: db/development.sqlite3
6
+ pool: 5
7
+ timeout: 5000
8
+
9
+ # Warning: The database defined as "test" will be erased and
10
+ # re-generated from your development database when you run "rake".
11
+ # Do not set this db to the same as development or production.
12
+ test:
13
+ adapter: sqlite3
14
+ database: ":memory:"
15
+
16
+ production:
17
+ adapter: sqlite3
18
+ database: ":memory:"
@@ -0,0 +1,11 @@
1
+ # Load the Rails application.
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the Rails application.
5
+ Rails.application.initialize!
6
+
7
+ load "#{Rails.root}/db/schema.rb"
8
+ #Dir[Rails.root.join("app/models/**/*.rb")].each { |f| require f }
9
+ Dir[Rails.root.join("app/admin/**/*.rb")].each { |f| require f }
10
+ Rails.application.reload_routes!
11
+
@@ -0,0 +1,41 @@
1
+ Rails.application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
+
4
+ # In the development environment your application's code is reloaded on
5
+ # every request. This slows down response time but is perfect for development
6
+ # since you don't have to restart the web server when you make code changes.
7
+ config.cache_classes = false
8
+
9
+ # Do not eager load code on boot.
10
+ config.eager_load = false
11
+
12
+ # Show full error reports and disable caching.
13
+ config.consider_all_requests_local = true
14
+ config.action_controller.perform_caching = false
15
+
16
+ # Don't care if the mailer can't send.
17
+ config.action_mailer.raise_delivery_errors = false
18
+
19
+ # Print deprecation notices to the Rails logger.
20
+ config.active_support.deprecation = :log
21
+
22
+ # Raise an error on page load if there are pending migrations.
23
+ config.active_record.migration_error = :page_load
24
+
25
+ # Debug mode disables concatenation and preprocessing of assets.
26
+ # This option may cause significant delays in view rendering with a large
27
+ # number of complex assets.
28
+ config.assets.debug = true
29
+
30
+ # Asset digests allow you to set far-future HTTP expiration dates on all assets,
31
+ # yet still be able to expire them through the digest params.
32
+ config.assets.digest = true
33
+
34
+ # Adds additional error checking when serving assets at runtime.
35
+ # Checks for improperly declared sprockets dependencies.
36
+ # Raises helpful error messages.
37
+ config.assets.raise_runtime_errors = true
38
+
39
+ # Raises error for missing translations
40
+ # config.action_view.raise_on_missing_translations = true
41
+ end
@@ -0,0 +1,79 @@
1
+ Rails.application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
+
4
+ # Code is not reloaded between requests.
5
+ config.cache_classes = true
6
+
7
+ # Eager load code on boot. This eager loads most of Rails and
8
+ # your application in memory, allowing both threaded web servers
9
+ # and those relying on copy on write to perform better.
10
+ # Rake tasks automatically ignore this option for performance.
11
+ config.eager_load = true
12
+
13
+ # Full error reports are disabled and caching is turned on.
14
+ config.consider_all_requests_local = false
15
+ config.action_controller.perform_caching = true
16
+
17
+ # Enable Rack::Cache to put a simple HTTP cache in front of your application
18
+ # Add `rack-cache` to your Gemfile before enabling this.
19
+ # For large-scale production use, consider using a caching reverse proxy like
20
+ # NGINX, varnish or squid.
21
+ # config.action_dispatch.rack_cache = true
22
+
23
+ # Disable serving static files from the `/public` folder by default since
24
+ # Apache or NGINX already handles this.
25
+ config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
26
+
27
+ # Compress JavaScripts and CSS.
28
+ config.assets.js_compressor = :uglifier
29
+ # config.assets.css_compressor = :sass
30
+
31
+ # Do not fallback to assets pipeline if a precompiled asset is missed.
32
+ config.assets.compile = false
33
+
34
+ # Asset digests allow you to set far-future HTTP expiration dates on all assets,
35
+ # yet still be able to expire them through the digest params.
36
+ config.assets.digest = true
37
+
38
+ # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
39
+
40
+ # Specifies the header that your server uses for sending files.
41
+ # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
42
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
43
+
44
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
45
+ # config.force_ssl = true
46
+
47
+ # Use the lowest log level to ensure availability of diagnostic information
48
+ # when problems arise.
49
+ config.log_level = :debug
50
+
51
+ # Prepend all log lines with the following tags.
52
+ # config.log_tags = [ :subdomain, :uuid ]
53
+
54
+ # Use a different logger for distributed setups.
55
+ # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
56
+
57
+ # Use a different cache store in production.
58
+ # config.cache_store = :mem_cache_store
59
+
60
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server.
61
+ # config.action_controller.asset_host = 'http://assets.example.com'
62
+
63
+ # Ignore bad email addresses and do not raise email delivery errors.
64
+ # Set this to true and configure the email server for immediate delivery to raise delivery errors.
65
+ # config.action_mailer.raise_delivery_errors = false
66
+
67
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
68
+ # the I18n.default_locale when a translation cannot be found).
69
+ config.i18n.fallbacks = true
70
+
71
+ # Send deprecation notices to registered listeners.
72
+ config.active_support.deprecation = :notify
73
+
74
+ # Use default logging formatter so that PID and timestamp are not suppressed.
75
+ config.log_formatter = ::Logger::Formatter.new
76
+
77
+ # Do not dump schema after migrations.
78
+ config.active_record.dump_schema_after_migration = false
79
+ end
@@ -0,0 +1,43 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
+
4
+ # The test environment is used exclusively to run your application's
5
+ # test suite. You never need to work with it otherwise. Remember that
6
+ # your test database is "scratch space" for the test suite and is wiped
7
+ # and recreated between test runs. Don't rely on the data there!
8
+ config.cache_classes = true
9
+
10
+ # Do not eager load code on boot. This avoids loading your whole application
11
+ # just for the purpose of running a single test. If you are using a tool that
12
+ # preloads Rails for running tests, you may have to set it to true.
13
+ config.eager_load = false
14
+
15
+ # Configure static file server for tests with Cache-Control for performance.
16
+ config.serve_static_files = true
17
+ config.static_cache_control = 'public, max-age=3600'
18
+
19
+ # Show full error reports and disable caching.
20
+ config.consider_all_requests_local = true
21
+ config.action_controller.perform_caching = false
22
+
23
+ # Raise exceptions instead of rendering exception templates.
24
+ config.action_dispatch.show_exceptions = false
25
+
26
+ # Disable request forgery protection in test environment.
27
+ config.action_controller.allow_forgery_protection = false
28
+
29
+ # Tell Action Mailer not to deliver emails to the real world.
30
+ # The :test delivery method accumulates sent emails in the
31
+ # ActionMailer::Base.deliveries array.
32
+ config.action_mailer.perform_deliveries = false
33
+ config.action_mailer.delivery_method = :test
34
+
35
+ # Randomize the order test cases are executed.
36
+ config.active_support.test_order = :random
37
+
38
+ # Print deprecation notices to the stderr.
39
+ config.active_support.deprecation = :stderr
40
+
41
+ # Raises error for missing translations
42
+ # config.action_view.raise_on_missing_translations = true
43
+ end
@@ -0,0 +1,7 @@
1
+ ActiveAdmin.setup do |config|
2
+ config.authentication_method = nil #:authenticate_admin_user!
3
+ config.current_user_method = nil #:current_admin_user
4
+ config.logout_link_path = :destroy_admin_user_session_path
5
+ config.batch_actions = true
6
+ end
7
+
@@ -0,0 +1,11 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Version of your assets, change this if you want to expire all your assets.
4
+ Rails.application.config.assets.version = '1.0'
5
+
6
+ # Add additional assets to the asset load path
7
+ # Rails.application.config.assets.paths << Emoji.images_path
8
+
9
+ # Precompile additional assets.
10
+ # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
11
+ # Rails.application.config.assets.precompile += %w( search.js )
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
+ # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
+
6
+ # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # Rails.backtrace_cleaner.remove_silencers!
@@ -0,0 +1,3 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Rails.application.config.action_dispatch.cookies_serializer = :json