core_models 0.0.2

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 (71) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/lib/core_models.rb +4 -0
  5. data/lib/core_models/models/concerns/group_concerns.rb +31 -0
  6. data/lib/core_models/models/concerns/role_concerns.rb +31 -0
  7. data/lib/core_models/models/concerns/user_concerns.rb +102 -0
  8. data/lib/core_models/models/group.rb +25 -0
  9. data/lib/core_models/models/group_membership.rb +16 -0
  10. data/lib/core_models/models/groups_role.rb +15 -0
  11. data/lib/core_models/models/permission.rb +24 -0
  12. data/lib/core_models/models/role.rb +33 -0
  13. data/lib/core_models/models/roles_permission.rb +15 -0
  14. data/lib/core_models/models/user.rb +63 -0
  15. data/lib/core_models/version.rb +3 -0
  16. data/lib/generators/core_models_setup_generator.rb +19 -0
  17. data/lib/tasks/core_models_tasks.rake +4 -0
  18. data/spec/dummy/README.rdoc +28 -0
  19. data/spec/dummy/Rakefile +6 -0
  20. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  21. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  22. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  23. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  24. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  25. data/spec/dummy/bin/bundle +3 -0
  26. data/spec/dummy/bin/rails +4 -0
  27. data/spec/dummy/bin/rake +4 -0
  28. data/spec/dummy/bin/setup +29 -0
  29. data/spec/dummy/config.ru +4 -0
  30. data/spec/dummy/config/application.rb +26 -0
  31. data/spec/dummy/config/boot.rb +5 -0
  32. data/spec/dummy/config/database.yml +23 -0
  33. data/spec/dummy/config/environment.rb +5 -0
  34. data/spec/dummy/config/environments/development.rb +41 -0
  35. data/spec/dummy/config/environments/production.rb +79 -0
  36. data/spec/dummy/config/environments/test.rb +42 -0
  37. data/spec/dummy/config/initializers/assets.rb +11 -0
  38. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  39. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  40. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  41. data/spec/dummy/config/initializers/friendly_id.rb +88 -0
  42. data/spec/dummy/config/initializers/inflections.rb +16 -0
  43. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  44. data/spec/dummy/config/initializers/session_store.rb +3 -0
  45. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  46. data/spec/dummy/config/locales/en.yml +23 -0
  47. data/spec/dummy/config/routes.rb +56 -0
  48. data/spec/dummy/config/secrets.yml +22 -0
  49. data/spec/dummy/db/development.sqlite3 +0 -0
  50. data/spec/dummy/db/migrate/20150220064247_create_friendly_id_slugs.rb +15 -0
  51. data/spec/dummy/db/schema.rb +93 -0
  52. data/spec/dummy/db/test.sqlite3 +0 -0
  53. data/spec/dummy/log/development.log +256 -0
  54. data/spec/dummy/log/test.log +21878 -0
  55. data/spec/dummy/public/404.html +67 -0
  56. data/spec/dummy/public/422.html +67 -0
  57. data/spec/dummy/public/500.html +66 -0
  58. data/spec/dummy/public/favicon.ico +0 -0
  59. data/spec/dummy/test.sqlite3 +0 -0
  60. data/spec/models/group_spec.rb +94 -0
  61. data/spec/models/permission_spec.rb +49 -0
  62. data/spec/models/role_spec.rb +113 -0
  63. data/spec/models/user_spec.rb +139 -0
  64. data/spec/rails_helper.rb +57 -0
  65. data/spec/schema.rb +103 -0
  66. data/spec/spec_helper.rb +85 -0
  67. data/spec/support/factories.rb +54 -0
  68. data/spec/support/model_classes.rb +36 -0
  69. data/spec/support/setup.rb +48 -0
  70. data/spec/test.sqlite3 +0 -0
  71. metadata +294 -0
@@ -0,0 +1,88 @@
1
+ # FriendlyId Global Configuration
2
+ #
3
+ # Use this to set up shared configuration options for your entire application.
4
+ # Any of the configuration options shown here can also be applied to single
5
+ # models by passing arguments to the `friendly_id` class method or defining
6
+ # methods in your model.
7
+ #
8
+ # To learn more, check out the guide:
9
+ #
10
+ # http://norman.github.io/friendly_id/file.Guide.html
11
+
12
+ FriendlyId.defaults do |config|
13
+ # ## Reserved Words
14
+ #
15
+ # Some words could conflict with Rails's routes when used as slugs, or are
16
+ # undesirable to allow as slugs. Edit this list as needed for your app.
17
+ config.use :reserved
18
+
19
+ config.reserved_words = %w(new edit index session login logout users admin
20
+ stylesheets assets javascripts images)
21
+
22
+ # ## Friendly Finders
23
+ #
24
+ # Uncomment this to use friendly finders in all models. By default, if
25
+ # you wish to find a record by its friendly id, you must do:
26
+ #
27
+ # MyModel.friendly.find('foo')
28
+ #
29
+ # If you uncomment this, you can do:
30
+ #
31
+ # MyModel.find('foo')
32
+ #
33
+ # This is significantly more convenient but may not be appropriate for
34
+ # all applications, so you must explicity opt-in to this behavior. You can
35
+ # always also configure it on a per-model basis if you prefer.
36
+ #
37
+ # Something else to consider is that using the :finders addon boosts
38
+ # performance because it will avoid Rails-internal code that makes runtime
39
+ # calls to `Module.extend`.
40
+ #
41
+ # config.use :finders
42
+ #
43
+ # ## Slugs
44
+ #
45
+ # Most applications will use the :slugged module everywhere. If you wish
46
+ # to do so, uncomment the following line.
47
+ #
48
+ # config.use :slugged
49
+ #
50
+ # By default, FriendlyId's :slugged addon expects the slug column to be named
51
+ # 'slug', but you can change it if you wish.
52
+ #
53
+ # config.slug_column = 'slug'
54
+ #
55
+ # When FriendlyId can not generate a unique ID from your base method, it appends
56
+ # a UUID, separated by a single dash. You can configure the character used as the
57
+ # separator. If you're upgrading from FriendlyId 4, you may wish to replace this
58
+ # with two dashes.
59
+ #
60
+ # config.sequence_separator = '-'
61
+ #
62
+ # ## Tips and Tricks
63
+ #
64
+ # ### Controlling when slugs are generated
65
+ #
66
+ # As of FriendlyId 5.0, new slugs are generated only when the slug field is
67
+ # nil, but if you're using a column as your base method can change this
68
+ # behavior by overriding the `should_generate_new_friendly_id` method that
69
+ # FriendlyId adds to your model. The change below makes FriendlyId 5.0 behave
70
+ # more like 4.0.
71
+ #
72
+ # config.use Module.new {
73
+ # def should_generate_new_friendly_id?
74
+ # slug.blank? || <your_column_name_here>_changed?
75
+ # end
76
+ # }
77
+ #
78
+ # FriendlyId uses Rails's `parameterize` method to generate slugs, but for
79
+ # languages that don't use the Roman alphabet, that's not usually sufficient.
80
+ # Here we use the Babosa library to transliterate Russian Cyrillic slugs to
81
+ # ASCII. If you use this, don't forget to add "babosa" to your Gemfile.
82
+ #
83
+ # config.use Module.new {
84
+ # def normalize_friendly_id(text)
85
+ # text.to_slug.normalize! :transliterations => [:russian, :latin]
86
+ # end
87
+ # }
88
+ end
@@ -0,0 +1,16 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format. Inflections
4
+ # are locale specific, and you may define rules for as many different
5
+ # locales as you wish. All of these examples are active by default:
6
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
+ # inflect.plural /^(ox)$/i, '\1en'
8
+ # inflect.singular /^(ox)en/i, '\1'
9
+ # inflect.irregular 'person', 'people'
10
+ # inflect.uncountable %w( fish sheep )
11
+ # end
12
+
13
+ # These inflection rules are supported but not enabled by default:
14
+ # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
+ # inflect.acronym 'RESTful'
16
+ # end
@@ -0,0 +1,4 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
@@ -0,0 +1,3 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Rails.application.config.session_store :cookie_store, key: '_dummy_session'
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # This file contains settings for ActionController::ParamsWrapper which
4
+ # is enabled by default.
5
+
6
+ # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
7
+ ActiveSupport.on_load(:action_controller) do
8
+ wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
9
+ end
10
+
11
+ # To enable root element in JSON for ActiveRecord objects.
12
+ # ActiveSupport.on_load(:active_record) do
13
+ # self.include_root_in_json = true
14
+ # end
@@ -0,0 +1,23 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
21
+
22
+ en:
23
+ hello: "Hello world"
@@ -0,0 +1,56 @@
1
+ Rails.application.routes.draw do
2
+ # The priority is based upon order of creation: first created -> highest priority.
3
+ # See how all your routes lay out with "rake routes".
4
+
5
+ # You can have the root of your site routed with "root"
6
+ # root 'welcome#index'
7
+
8
+ # Example of regular route:
9
+ # get 'products/:id' => 'catalog#view'
10
+
11
+ # Example of named route that can be invoked with purchase_url(id: product.id)
12
+ # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
13
+
14
+ # Example resource route (maps HTTP verbs to controller actions automatically):
15
+ # resources :products
16
+
17
+ # Example resource route with options:
18
+ # resources :products do
19
+ # member do
20
+ # get 'short'
21
+ # post 'toggle'
22
+ # end
23
+ #
24
+ # collection do
25
+ # get 'sold'
26
+ # end
27
+ # end
28
+
29
+ # Example resource route with sub-resources:
30
+ # resources :products do
31
+ # resources :comments, :sales
32
+ # resource :seller
33
+ # end
34
+
35
+ # Example resource route with more complex sub-resources:
36
+ # resources :products do
37
+ # resources :comments
38
+ # resources :sales do
39
+ # get 'recent', on: :collection
40
+ # end
41
+ # end
42
+
43
+ # Example resource route with concerns:
44
+ # concern :toggleable do
45
+ # post 'toggle'
46
+ # end
47
+ # resources :posts, concerns: :toggleable
48
+ # resources :photos, concerns: :toggleable
49
+
50
+ # Example resource route within a namespace:
51
+ # namespace :admin do
52
+ # # Directs /admin/products/* to Admin::ProductsController
53
+ # # (app/controllers/admin/products_controller.rb)
54
+ # resources :products
55
+ # end
56
+ end
@@ -0,0 +1,22 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: a4d81d7b4762fd6bd160c031e574a62fd3c276d471c03e539e644524bd41e67e9e9ec0772240eadac543f12e42f2e2a84922c003cd4e9ec3642fd2e33945f818
15
+
16
+ test:
17
+ secret_key_base: 497c2202f218142bc9e3035ea548f728686f5cb651bb5888664df907ff56bbbbde0cfe4459caf63a0b4139de72cbbce291d4a856857549fd0443671af02521fc
18
+
19
+ # Do not keep production secrets in the repository,
20
+ # instead read values from the environment.
21
+ production:
22
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Binary file
@@ -0,0 +1,15 @@
1
+ class CreateFriendlyIdSlugs < ActiveRecord::Migration
2
+ def change
3
+ create_table :friendly_id_slugs do |t|
4
+ t.string :slug, :null => false
5
+ t.integer :sluggable_id, :null => false
6
+ t.string :sluggable_type, :limit => 50
7
+ t.string :scope
8
+ t.datetime :created_at
9
+ end
10
+ add_index :friendly_id_slugs, :sluggable_id
11
+ add_index :friendly_id_slugs, [:slug, :sluggable_type]
12
+ add_index :friendly_id_slugs, [:slug, :sluggable_type, :scope], :unique => true
13
+ add_index :friendly_id_slugs, :sluggable_type
14
+ end
15
+ end
@@ -0,0 +1,93 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20150221025001) do
15
+
16
+ create_table "friendly_id_slugs", force: :cascade do |t|
17
+ t.string "slug", null: false
18
+ t.integer "sluggable_id", null: false
19
+ t.string "sluggable_type", limit: 50
20
+ t.string "scope"
21
+ t.datetime "created_at"
22
+ end
23
+
24
+ add_index "friendly_id_slugs", ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true
25
+ add_index "friendly_id_slugs", ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type"
26
+ add_index "friendly_id_slugs", ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id"
27
+ add_index "friendly_id_slugs", ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type"
28
+
29
+ create_table "group_memberships", force: :cascade do |t|
30
+ t.integer "user_id"
31
+ t.integer "group_id"
32
+ t.integer "role_id"
33
+ end
34
+
35
+ create_table "groups", force: :cascade do |t|
36
+ t.string "group_name"
37
+ t.string "slug"
38
+ t.boolean "can_alter", default: true
39
+ t.boolean "can_delete", default: true
40
+ end
41
+
42
+ add_index "groups", ["slug"], name: "index_groups_on_slug"
43
+
44
+ create_table "groups_roles", force: :cascade do |t|
45
+ t.integer "group_id"
46
+ t.integer "role_id"
47
+ end
48
+
49
+ create_table "permissions", force: :cascade do |t|
50
+ t.string "permission_name"
51
+ t.string "slug"
52
+ t.boolean "can_alter", default: true
53
+ t.boolean "can_delete", default: true
54
+ t.datetime "created_at"
55
+ t.datetime "updated_at"
56
+ end
57
+
58
+ add_index "permissions", ["slug"], name: "index_permissions_on_slug"
59
+
60
+ create_table "roles", force: :cascade do |t|
61
+ t.string "role_name"
62
+ t.string "slug"
63
+ t.boolean "can_alter", default: true
64
+ t.boolean "can_delete", default: true
65
+ t.datetime "created_at"
66
+ t.datetime "updated_at"
67
+ end
68
+
69
+ add_index "roles", ["slug"], name: "index_roles_on_slug"
70
+
71
+ create_table "roles_permissions", force: :cascade do |t|
72
+ t.integer "role_id"
73
+ t.integer "permission_id"
74
+ end
75
+
76
+ create_table "users", force: :cascade do |t|
77
+ t.string "first_name"
78
+ t.string "last_name"
79
+ t.string "user_name"
80
+ t.string "email"
81
+ t.string "password"
82
+ t.string "salt"
83
+ t.string "slug"
84
+ t.string "password_reset_token"
85
+ t.datetime "password_reset_timestamp"
86
+ t.string "auth_token"
87
+ t.datetime "created_at"
88
+ t.datetime "updated_at"
89
+ end
90
+
91
+ add_index "users", ["slug"], name: "index_users_on_slug"
92
+
93
+ end
Binary file
@@ -0,0 +1,256 @@
1
+  (1.7ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
2
+  (0.2ms) select sqlite_version(*)
3
+  (1.2ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
4
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
5
+ Migrating to CreateFriendlyIdSlugs (20150220064247)
6
+  (0.2ms) begin transaction
7
+  (1.6ms) CREATE TABLE "friendly_id_slugs" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "slug" varchar NOT NULL, "sluggable_id" integer NOT NULL, "sluggable_type" varchar(50), "scope" varchar, "created_at" datetime)
8
+  (0.3ms) CREATE INDEX "index_friendly_id_slugs_on_sluggable_id" ON "friendly_id_slugs" ("sluggable_id")
9
+  (0.2ms) SELECT sql
10
+ FROM sqlite_master
11
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
12
+ UNION ALL
13
+ SELECT sql
14
+ FROM sqlite_temp_master
15
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
16
+
17
+  (0.2ms) CREATE INDEX "index_friendly_id_slugs_on_slug_and_sluggable_type" ON "friendly_id_slugs" ("slug", "sluggable_type")
18
+  (0.1ms) SELECT sql
19
+ FROM sqlite_master
20
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
21
+ UNION ALL
22
+ SELECT sql
23
+ FROM sqlite_temp_master
24
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
25
+
26
+  (0.1ms)  SELECT sql
27
+ FROM sqlite_master
28
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
29
+ UNION ALL
30
+ SELECT sql
31
+ FROM sqlite_temp_master
32
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
33
+ 
34
+  (0.6ms) CREATE UNIQUE INDEX "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope" ON "friendly_id_slugs" ("slug", "sluggable_type", "scope")
35
+  (0.1ms)  SELECT sql
36
+ FROM sqlite_master
37
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope' AND type='index'
38
+ UNION ALL
39
+ SELECT sql
40
+ FROM sqlite_temp_master
41
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope' AND type='index'
42
+ 
43
+  (0.2ms) SELECT sql
44
+ FROM sqlite_master
45
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
46
+ UNION ALL
47
+ SELECT sql
48
+ FROM sqlite_temp_master
49
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
50
+
51
+  (0.1ms)  SELECT sql
52
+ FROM sqlite_master
53
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
54
+ UNION ALL
55
+ SELECT sql
56
+ FROM sqlite_temp_master
57
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
58
+ 
59
+  (0.3ms) CREATE INDEX "index_friendly_id_slugs_on_sluggable_type" ON "friendly_id_slugs" ("sluggable_type")
60
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150220064247"]]
61
+  (32.5ms) commit transaction
62
+ Migrating to CreateUser (20150221024005)
63
+  (0.3ms) begin transaction
64
+ DEPRECATION WARNING: `#timestamp` was called without specifying an option for `null`. In Rails 5, this behavior will change to `null: false`. You should manually specify `null: true` to prevent the behavior of your existing migrations from changing. (called from block in change at /Users/Adam/Documents/Rails-Projects/core_models/spec/dummy/db/migrate/20150221024005_create_user.rb:14)
65
+  (0.5ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar, "last_name" varchar, "user_name" varchar, "email" varchar, "password" varchar, "salt" varchar, "slug" varchar, "password_reset_token" varchar, "password_reset_timestamp" datetime, "auth_token" varchar, "created_at" datetime, "updated_at" datetime)
66
+  (0.1ms) CREATE INDEX "index_users_on_slug" ON "users" ("slug")
67
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150221024005"]]
68
+  (1.2ms) commit transaction
69
+ Migrating to CreateRole (20150221024159)
70
+  (0.2ms) begin transaction
71
+ DEPRECATION WARNING: `#timestamp` was called without specifying an option for `null`. In Rails 5, this behavior will change to `null: false`. You should manually specify `null: true` to prevent the behavior of your existing migrations from changing. (called from block in change at /Users/Adam/Documents/Rails-Projects/core_models/spec/dummy/db/migrate/20150221024159_create_role.rb:8)
72
+  (1.2ms) CREATE TABLE "roles" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "role_name" varchar, "slug" varchar, "can_alter" boolean DEFAULT 't', "can_delete" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime) 
73
+  (0.1ms) CREATE INDEX "index_roles_on_slug" ON "roles" ("slug")
74
+ SQL (0.5ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150221024159"]]
75
+  (2.9ms) commit transaction
76
+ Migrating to CreatePermission (20150221024409)
77
+  (0.1ms) begin transaction
78
+ DEPRECATION WARNING: `#timestamp` was called without specifying an option for `null`. In Rails 5, this behavior will change to `null: false`. You should manually specify `null: true` to prevent the behavior of your existing migrations from changing. (called from block in change at /Users/Adam/Documents/Rails-Projects/core_models/spec/dummy/db/migrate/20150221024409_create_permission.rb:8)
79
+  (1.3ms) CREATE TABLE "permissions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "permission_name" varchar, "slug" varchar, "can_alter" boolean DEFAULT 't', "can_delete" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime)
80
+  (0.2ms) CREATE INDEX "index_permissions_on_slug" ON "permissions" ("slug")
81
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150221024409"]]
82
+  (2.2ms) commit transaction
83
+ Migrating to CreateGroup (20150221024519)
84
+  (0.2ms) begin transaction
85
+  (1.1ms) CREATE TABLE "groups" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "group_name" varchar, "slug" varchar, "can_alter" boolean DEFAULT 't', "can_delete" boolean DEFAULT 't') 
86
+  (0.1ms) SELECT sql
87
+ FROM sqlite_master
88
+ WHERE name='index_permissions_on_slug' AND type='index'
89
+ UNION ALL
90
+ SELECT sql
91
+ FROM sqlite_temp_master
92
+ WHERE name='index_permissions_on_slug' AND type='index'
93
+
94
+  (0.9ms) rollback transaction
95
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
96
+ Migrating to CreateGroup (20150221024519)
97
+  (0.2ms) begin transaction
98
+  (0.7ms) CREATE TABLE "groups" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "group_name" varchar, "slug" varchar, "can_alter" boolean DEFAULT 't', "can_delete" boolean DEFAULT 't') 
99
+  (0.1ms) select sqlite_version(*)
100
+  (0.2ms) CREATE INDEX "index_groups_on_slug" ON "groups" ("slug")
101
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150221024519"]]
102
+  (1.9ms) commit transaction
103
+ Migrating to CreateJoinTableRolesGroups (20150221024728)
104
+  (0.1ms) begin transaction
105
+  (0.1ms) rollback transaction
106
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
107
+ Migrating to CreateJoinTableRolesGroups (20150221024728)
108
+  (0.1ms) begin transaction
109
+  (0.1ms) rollback transaction
110
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
111
+ Migrating to CreateJoinTableRolesGroups (20150221024728)
112
+  (0.1ms) begin transaction
113
+  (0.4ms) CREATE TABLE "groups_roles" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "group_id" integer, "role_id" integer) 
114
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150221024728"]]
115
+  (1.0ms) commit transaction
116
+ Migrating to CreateJoinTableRolesPermissions (20150221024807)
117
+  (0.1ms) begin transaction
118
+  (0.5ms) CREATE TABLE "roles_permissions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "role_id" integer, "permission_id" integer) 
119
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150221024807"]]
120
+  (1.2ms) commit transaction
121
+ Migrating to CreateTrippleJoinTableUserGroupRole (20150221025001)
122
+  (0.2ms) begin transaction
123
+  (0.6ms) CREATE TABLE "group_memberships" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "group_id" integer, "role_id" integer) 
124
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20150221025001"]]
125
+  (1.1ms) commit transaction
126
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
127
+  (0.1ms)  SELECT sql
128
+ FROM sqlite_master
129
+ WHERE name='index_friendly_id_slugs_on_sluggable_type' AND type='index'
130
+ UNION ALL
131
+ SELECT sql
132
+ FROM sqlite_temp_master
133
+ WHERE name='index_friendly_id_slugs_on_sluggable_type' AND type='index'
134
+ 
135
+  (0.1ms) SELECT sql
136
+ FROM sqlite_master
137
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope' AND type='index'
138
+ UNION ALL
139
+ SELECT sql
140
+ FROM sqlite_temp_master
141
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope' AND type='index'
142
+
143
+  (0.1ms)  SELECT sql
144
+ FROM sqlite_master
145
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
146
+ UNION ALL
147
+ SELECT sql
148
+ FROM sqlite_temp_master
149
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
150
+ 
151
+  (0.1ms) SELECT sql
152
+ FROM sqlite_master
153
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
154
+ UNION ALL
155
+ SELECT sql
156
+ FROM sqlite_temp_master
157
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
158
+
159
+  (0.1ms)  SELECT sql
160
+ FROM sqlite_master
161
+ WHERE name='index_groups_on_slug' AND type='index'
162
+ UNION ALL
163
+ SELECT sql
164
+ FROM sqlite_temp_master
165
+ WHERE name='index_groups_on_slug' AND type='index'
166
+ 
167
+  (0.1ms) SELECT sql
168
+ FROM sqlite_master
169
+ WHERE name='index_permissions_on_slug' AND type='index'
170
+ UNION ALL
171
+ SELECT sql
172
+ FROM sqlite_temp_master
173
+ WHERE name='index_permissions_on_slug' AND type='index'
174
+
175
+  (0.1ms)  SELECT sql
176
+ FROM sqlite_master
177
+ WHERE name='index_roles_on_slug' AND type='index'
178
+ UNION ALL
179
+ SELECT sql
180
+ FROM sqlite_temp_master
181
+ WHERE name='index_roles_on_slug' AND type='index'
182
+ 
183
+  (0.1ms) SELECT sql
184
+ FROM sqlite_master
185
+ WHERE name='index_users_on_slug' AND type='index'
186
+ UNION ALL
187
+ SELECT sql
188
+ FROM sqlite_temp_master
189
+ WHERE name='index_users_on_slug' AND type='index'
190
+
191
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
192
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
193
+  (0.1ms)  SELECT sql
194
+ FROM sqlite_master
195
+ WHERE name='index_friendly_id_slugs_on_sluggable_type' AND type='index'
196
+ UNION ALL
197
+ SELECT sql
198
+ FROM sqlite_temp_master
199
+ WHERE name='index_friendly_id_slugs_on_sluggable_type' AND type='index'
200
+ 
201
+  (0.1ms) SELECT sql
202
+ FROM sqlite_master
203
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope' AND type='index'
204
+ UNION ALL
205
+ SELECT sql
206
+ FROM sqlite_temp_master
207
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope' AND type='index'
208
+
209
+  (0.1ms)  SELECT sql
210
+ FROM sqlite_master
211
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
212
+ UNION ALL
213
+ SELECT sql
214
+ FROM sqlite_temp_master
215
+ WHERE name='index_friendly_id_slugs_on_slug_and_sluggable_type' AND type='index'
216
+ 
217
+  (0.1ms) SELECT sql
218
+ FROM sqlite_master
219
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
220
+ UNION ALL
221
+ SELECT sql
222
+ FROM sqlite_temp_master
223
+ WHERE name='index_friendly_id_slugs_on_sluggable_id' AND type='index'
224
+
225
+  (0.1ms)  SELECT sql
226
+ FROM sqlite_master
227
+ WHERE name='index_groups_on_slug' AND type='index'
228
+ UNION ALL
229
+ SELECT sql
230
+ FROM sqlite_temp_master
231
+ WHERE name='index_groups_on_slug' AND type='index'
232
+ 
233
+  (0.1ms) SELECT sql
234
+ FROM sqlite_master
235
+ WHERE name='index_permissions_on_slug' AND type='index'
236
+ UNION ALL
237
+ SELECT sql
238
+ FROM sqlite_temp_master
239
+ WHERE name='index_permissions_on_slug' AND type='index'
240
+
241
+  (0.1ms)  SELECT sql
242
+ FROM sqlite_master
243
+ WHERE name='index_roles_on_slug' AND type='index'
244
+ UNION ALL
245
+ SELECT sql
246
+ FROM sqlite_temp_master
247
+ WHERE name='index_roles_on_slug' AND type='index'
248
+ 
249
+  (0.1ms) SELECT sql
250
+ FROM sqlite_master
251
+ WHERE name='index_users_on_slug' AND type='index'
252
+ UNION ALL
253
+ SELECT sql
254
+ FROM sqlite_temp_master
255
+ WHERE name='index_users_on_slug' AND type='index'
256
+