ibrain-core 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +75 -0
  4. data/Rakefile +7 -0
  5. data/app/controllers/concerns/ibrain_errors.rb +23 -0
  6. data/app/controllers/concerns/ibrain_handler.rb +42 -0
  7. data/app/controllers/ibrain/base_controller.rb +28 -0
  8. data/app/controllers/ibrain/graphql_controller.rb +55 -0
  9. data/app/graphql/ibrain/base_schema.rb +52 -0
  10. data/app/graphql/ibrain/extentions/default_value.rb +15 -0
  11. data/app/graphql/ibrain/interfaces/base_interface.rb +5 -0
  12. data/app/graphql/ibrain/interfaces/person_interface.rb +15 -0
  13. data/app/graphql/ibrain/interfaces/record_interface.rb +10 -0
  14. data/app/graphql/ibrain/lazy/base.rb +8 -0
  15. data/app/graphql/ibrain/loaders/association_loader.rb +61 -0
  16. data/app/graphql/ibrain/mutations/base_mutation.rb +35 -0
  17. data/app/graphql/ibrain/policies/base_policy.rb +45 -0
  18. data/app/graphql/ibrain/policies/graphql_policy.rb +8 -0
  19. data/app/graphql/ibrain/resolvers/base_aggregate.rb +9 -0
  20. data/app/graphql/ibrain/resolvers/base_resolver.rb +15 -0
  21. data/app/graphql/ibrain/types/aggregate_type.rb +9 -0
  22. data/app/graphql/ibrain/types/base_argument.rb +11 -0
  23. data/app/graphql/ibrain/types/base_connection.rb +16 -0
  24. data/app/graphql/ibrain/types/base_edge.rb +10 -0
  25. data/app/graphql/ibrain/types/base_enum.rb +8 -0
  26. data/app/graphql/ibrain/types/base_field.rb +15 -0
  27. data/app/graphql/ibrain/types/base_input_object.rb +9 -0
  28. data/app/graphql/ibrain/types/base_interface.rb +14 -0
  29. data/app/graphql/ibrain/types/base_node.rb +13 -0
  30. data/app/graphql/ibrain/types/base_object.rb +14 -0
  31. data/app/graphql/ibrain/types/base_query_type.rb +14 -0
  32. data/app/graphql/ibrain/types/base_scalar.rb +8 -0
  33. data/app/graphql/ibrain/types/base_union.rb +10 -0
  34. data/app/graphql/ibrain/types/filter_type.rb +8 -0
  35. data/app/graphql/ibrain/types/node_type.rb +11 -0
  36. data/app/graphql/ibrain/util/field_combiner.rb +13 -0
  37. data/app/graphql/ibrain/util/query_combiner.rb +13 -0
  38. data/app/graphql/mutations/insert_user.rb +18 -0
  39. data/app/models/ibrain/ability.rb +51 -0
  40. data/app/models/ibrain/application_record.rb +7 -0
  41. data/app/models/ibrain/base.rb +47 -0
  42. data/app/models/ibrain/concerns/ransackable_attributes.rb +22 -0
  43. data/app/models/ibrain/concerns/soft_deletable.rb +16 -0
  44. data/app/models/ibrain/concerns/user_api_authentication.rb +23 -0
  45. data/app/models/ibrain/concerns/user_methods.rb +25 -0
  46. data/app/models/ibrain/legacy_user.rb +19 -0
  47. data/app/models/ibrain/role.rb +14 -0
  48. data/app/models/ibrain/role_user.rb +18 -0
  49. data/config/initializers/friendly_id.rb +87 -0
  50. data/config/locales/en.yml +10 -0
  51. data/config/locales/jp.yml +10 -0
  52. data/config/locales/vi.yml +10 -0
  53. data/config/routes.rb +9 -0
  54. data/lib/generators/ibrain/graphql/core.rb +75 -0
  55. data/lib/generators/ibrain/graphql/mutation_generator.rb +58 -0
  56. data/lib/generators/ibrain/graphql/object_generator.rb +80 -0
  57. data/lib/generators/ibrain/graphql/resolver_generator.rb +33 -0
  58. data/lib/generators/ibrain/graphql/resolvers_generator.rb +59 -0
  59. data/lib/generators/ibrain/graphql/templates/aggregate.erb +10 -0
  60. data/lib/generators/ibrain/graphql/templates/mutation.erb +16 -0
  61. data/lib/generators/ibrain/graphql/templates/object.erb +11 -0
  62. data/lib/generators/ibrain/graphql/templates/resolver.erb +15 -0
  63. data/lib/generators/ibrain/graphql/templates/resolvers.erb +13 -0
  64. data/lib/generators/ibrain/graphql/type_generator.rb +101 -0
  65. data/lib/generators/ibrain/install/install_generator.rb +189 -0
  66. data/lib/generators/ibrain/install/templates/config/database.tt +23 -0
  67. data/lib/generators/ibrain/install/templates/config/initializers/cors.tt +25 -0
  68. data/lib/generators/ibrain/install/templates/config/initializers/ibrain.rb.tt +55 -0
  69. data/lib/generators/ibrain/install/templates/config/puma.tt +43 -0
  70. data/lib/generators/ibrain/install/templates/graphql/app_schema.rb.tt +4 -0
  71. data/lib/generators/ibrain/install/templates/graphql/types/mutation_type.rb.tt +10 -0
  72. data/lib/generators/ibrain/install/templates/graphql/types/query_type.rb.tt +13 -0
  73. data/lib/ibrain/app_configuration.rb +66 -0
  74. data/lib/ibrain/config.rb +5 -0
  75. data/lib/ibrain/core/class_constantizer.rb +41 -0
  76. data/lib/ibrain/core/controller_helpers/auth.rb +64 -0
  77. data/lib/ibrain/core/controller_helpers/current_host.rb +17 -0
  78. data/lib/ibrain/core/controller_helpers/response.rb +52 -0
  79. data/lib/ibrain/core/controller_helpers/strong_parameters.rb +21 -0
  80. data/lib/ibrain/core/engine.rb +16 -0
  81. data/lib/ibrain/core/environment.rb +17 -0
  82. data/lib/ibrain/core/environment_extension.rb +27 -0
  83. data/lib/ibrain/core/role_configuration.rb +72 -0
  84. data/lib/ibrain/core/validators/email.rb +23 -0
  85. data/lib/ibrain/core/version.rb +17 -0
  86. data/lib/ibrain/core/versioned_value.rb +73 -0
  87. data/lib/ibrain/core.rb +86 -0
  88. data/lib/ibrain/encryptor.rb +27 -0
  89. data/lib/ibrain/i18n.rb +17 -0
  90. data/lib/ibrain/logger.rb +23 -0
  91. data/lib/ibrain/permission_sets/base.rb +33 -0
  92. data/lib/ibrain/permission_sets/super_user.rb +11 -0
  93. data/lib/ibrain/permission_sets.rb +4 -0
  94. data/lib/ibrain/permitted_attributes.rb +26 -0
  95. data/lib/ibrain/preferences/configuration.rb +170 -0
  96. data/lib/ibrain/preferences/preferable.rb +183 -0
  97. data/lib/ibrain/preferences/preferable_class_methods.rb +140 -0
  98. data/lib/ibrain/user_class_handle.rb +29 -0
  99. data/lib/ibrain_core.rb +3 -0
  100. data/lib/tasks/ibrain/auto_annotate_models.rake +61 -0
  101. data/lib/tasks/ibrain/core_tasks.rake +5 -0
  102. data/lib/tasks/ibrain/ridgepole.rake +37 -0
  103. metadata +293 -0
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ # NOTE: only doing this in development as some production environments (Heroku)
4
+ # NOTE: are sensitive to local FS writes, and besides -- it's just not proper
5
+ # NOTE: to have a dev-mode tool do its thing in production.
6
+ if Rails.env.development?
7
+ require 'annotate'
8
+ task set_annotation_options: :environment do
9
+ # You can override any of these by setting an environment variable of the
10
+ # same name.
11
+ Annotate.set_defaults(
12
+ 'active_admin' => 'false',
13
+ 'additional_file_patterns' => [],
14
+ 'routes' => 'false',
15
+ 'models' => 'true',
16
+ 'position_in_routes' => 'before',
17
+ 'position_in_class' => 'before',
18
+ 'position_in_test' => 'before',
19
+ 'position_in_fixture' => 'before',
20
+ 'position_in_factory' => 'before',
21
+ 'position_in_serializer' => 'before',
22
+ 'show_foreign_keys' => 'true',
23
+ 'show_complete_foreign_keys' => 'false',
24
+ 'show_indexes' => 'true',
25
+ 'simple_indexes' => 'false',
26
+ 'model_dir' => 'app/models',
27
+ 'root_dir' => '',
28
+ 'include_version' => 'false',
29
+ 'require' => '',
30
+ 'exclude_tests' => 'false',
31
+ 'exclude_fixtures' => 'false',
32
+ 'exclude_factories' => 'false',
33
+ 'exclude_serializers' => 'false',
34
+ 'exclude_scaffolds' => 'true',
35
+ 'exclude_controllers' => 'true',
36
+ 'exclude_helpers' => 'true',
37
+ 'exclude_sti_subclasses' => 'false',
38
+ 'ignore_model_sub_dir' => 'false',
39
+ 'ignore_columns' => nil,
40
+ 'ignore_routes' => nil,
41
+ 'ignore_unknown_models' => 'false',
42
+ 'hide_limit_column_types' => 'integer,bigint,boolean',
43
+ 'hide_default_column_types' => 'json,jsonb,hstore',
44
+ 'skip_on_db_migrate' => 'false',
45
+ 'format_bare' => 'true',
46
+ 'format_rdoc' => 'false',
47
+ 'format_yard' => 'false',
48
+ 'format_markdown' => 'false',
49
+ 'sort' => 'false',
50
+ 'force' => 'false',
51
+ 'frozen' => 'false',
52
+ 'classified_sort' => 'true',
53
+ 'trace' => 'false',
54
+ 'wrapper_open' => nil,
55
+ 'wrapper_close' => nil,
56
+ 'with_comment' => 'true'
57
+ )
58
+ end
59
+
60
+ Annotate.load_tasks
61
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # desc "Explaining what the task does"
3
+ # task :ibrain_core do
4
+ # # Task goes here
5
+ # end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :ridgepole do
4
+ desc 'Apply database schema'
5
+ task apply: :environment do
6
+ ridgepole('--apply', "-E #{Rails.env}", "--file #{schema_file}")
7
+ Rake::Task['db:schema:dump'].invoke if Rails.env.development?
8
+ Rake::Task['annotate_models'].invoke if Rails.env.development?
9
+ end
10
+
11
+ desc 'Export database schema'
12
+ task export: :environment do
13
+ ridgepole('--export', "-E #{Rails.env}", '--split', "--output #{schema_file}")
14
+ end
15
+
16
+ desc 'import seed data'
17
+ task seed: :environment do
18
+ path = Rails.root.join("db/seeds/#{Rails.env}.rb")
19
+ path = path.sub(Rails.env, 'development') unless File.exist?(path)
20
+ require path
21
+ end
22
+
23
+ private
24
+
25
+ def schema_file
26
+ Rails.root.join('db/Schemafile')
27
+ end
28
+
29
+ def config_file
30
+ Rails.root.join('config/database.yml')
31
+ end
32
+
33
+ def ridgepole(*options)
34
+ command = ['bundle exec ridgepole', "--config #{config_file}"]
35
+ system [command + options].join(' ')
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,293 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ibrain-core
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Tai Nguyen Van
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-12-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord-session_store
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: awesome_nested_set
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.4.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.4.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: cancancan
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.15.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.15.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: friendly_id
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 5.4.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 5.4.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: gem-release
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.2.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.2.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: kaminari
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.2.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.2.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: puma
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rack-cors
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.1
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 6.1.4
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 6.1.4.1
135
+ type: :runtime
136
+ prerelease: false
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: 6.1.4
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 6.1.4.1
145
+ - !ruby/object:Gem::Dependency
146
+ name: ransack
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: 2.4.2
152
+ type: :runtime
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: 2.4.2
159
+ description: Its Core is an sso authen gem for Ruby on Rails.
160
+ email:
161
+ - nvt.tryup@gmail.com
162
+ executables: []
163
+ extensions: []
164
+ extra_rdoc_files: []
165
+ files:
166
+ - MIT-LICENSE
167
+ - README.md
168
+ - Rakefile
169
+ - app/controllers/concerns/ibrain_errors.rb
170
+ - app/controllers/concerns/ibrain_handler.rb
171
+ - app/controllers/ibrain/base_controller.rb
172
+ - app/controllers/ibrain/graphql_controller.rb
173
+ - app/graphql/ibrain/base_schema.rb
174
+ - app/graphql/ibrain/extentions/default_value.rb
175
+ - app/graphql/ibrain/interfaces/base_interface.rb
176
+ - app/graphql/ibrain/interfaces/person_interface.rb
177
+ - app/graphql/ibrain/interfaces/record_interface.rb
178
+ - app/graphql/ibrain/lazy/base.rb
179
+ - app/graphql/ibrain/loaders/association_loader.rb
180
+ - app/graphql/ibrain/mutations/base_mutation.rb
181
+ - app/graphql/ibrain/policies/base_policy.rb
182
+ - app/graphql/ibrain/policies/graphql_policy.rb
183
+ - app/graphql/ibrain/resolvers/base_aggregate.rb
184
+ - app/graphql/ibrain/resolvers/base_resolver.rb
185
+ - app/graphql/ibrain/types/aggregate_type.rb
186
+ - app/graphql/ibrain/types/base_argument.rb
187
+ - app/graphql/ibrain/types/base_connection.rb
188
+ - app/graphql/ibrain/types/base_edge.rb
189
+ - app/graphql/ibrain/types/base_enum.rb
190
+ - app/graphql/ibrain/types/base_field.rb
191
+ - app/graphql/ibrain/types/base_input_object.rb
192
+ - app/graphql/ibrain/types/base_interface.rb
193
+ - app/graphql/ibrain/types/base_node.rb
194
+ - app/graphql/ibrain/types/base_object.rb
195
+ - app/graphql/ibrain/types/base_query_type.rb
196
+ - app/graphql/ibrain/types/base_scalar.rb
197
+ - app/graphql/ibrain/types/base_union.rb
198
+ - app/graphql/ibrain/types/filter_type.rb
199
+ - app/graphql/ibrain/types/node_type.rb
200
+ - app/graphql/ibrain/util/field_combiner.rb
201
+ - app/graphql/ibrain/util/query_combiner.rb
202
+ - app/graphql/mutations/insert_user.rb
203
+ - app/models/ibrain/ability.rb
204
+ - app/models/ibrain/application_record.rb
205
+ - app/models/ibrain/base.rb
206
+ - app/models/ibrain/concerns/ransackable_attributes.rb
207
+ - app/models/ibrain/concerns/soft_deletable.rb
208
+ - app/models/ibrain/concerns/user_api_authentication.rb
209
+ - app/models/ibrain/concerns/user_methods.rb
210
+ - app/models/ibrain/legacy_user.rb
211
+ - app/models/ibrain/role.rb
212
+ - app/models/ibrain/role_user.rb
213
+ - config/initializers/friendly_id.rb
214
+ - config/locales/en.yml
215
+ - config/locales/jp.yml
216
+ - config/locales/vi.yml
217
+ - config/routes.rb
218
+ - lib/generators/ibrain/graphql/core.rb
219
+ - lib/generators/ibrain/graphql/mutation_generator.rb
220
+ - lib/generators/ibrain/graphql/object_generator.rb
221
+ - lib/generators/ibrain/graphql/resolver_generator.rb
222
+ - lib/generators/ibrain/graphql/resolvers_generator.rb
223
+ - lib/generators/ibrain/graphql/templates/aggregate.erb
224
+ - lib/generators/ibrain/graphql/templates/mutation.erb
225
+ - lib/generators/ibrain/graphql/templates/object.erb
226
+ - lib/generators/ibrain/graphql/templates/resolver.erb
227
+ - lib/generators/ibrain/graphql/templates/resolvers.erb
228
+ - lib/generators/ibrain/graphql/type_generator.rb
229
+ - lib/generators/ibrain/install/install_generator.rb
230
+ - lib/generators/ibrain/install/templates/config/database.tt
231
+ - lib/generators/ibrain/install/templates/config/initializers/cors.tt
232
+ - lib/generators/ibrain/install/templates/config/initializers/ibrain.rb.tt
233
+ - lib/generators/ibrain/install/templates/config/puma.tt
234
+ - lib/generators/ibrain/install/templates/graphql/app_schema.rb.tt
235
+ - lib/generators/ibrain/install/templates/graphql/types/mutation_type.rb.tt
236
+ - lib/generators/ibrain/install/templates/graphql/types/query_type.rb.tt
237
+ - lib/ibrain/app_configuration.rb
238
+ - lib/ibrain/config.rb
239
+ - lib/ibrain/core.rb
240
+ - lib/ibrain/core/class_constantizer.rb
241
+ - lib/ibrain/core/controller_helpers/auth.rb
242
+ - lib/ibrain/core/controller_helpers/current_host.rb
243
+ - lib/ibrain/core/controller_helpers/response.rb
244
+ - lib/ibrain/core/controller_helpers/strong_parameters.rb
245
+ - lib/ibrain/core/engine.rb
246
+ - lib/ibrain/core/environment.rb
247
+ - lib/ibrain/core/environment_extension.rb
248
+ - lib/ibrain/core/role_configuration.rb
249
+ - lib/ibrain/core/validators/email.rb
250
+ - lib/ibrain/core/version.rb
251
+ - lib/ibrain/core/versioned_value.rb
252
+ - lib/ibrain/encryptor.rb
253
+ - lib/ibrain/i18n.rb
254
+ - lib/ibrain/logger.rb
255
+ - lib/ibrain/permission_sets.rb
256
+ - lib/ibrain/permission_sets/base.rb
257
+ - lib/ibrain/permission_sets/super_user.rb
258
+ - lib/ibrain/permitted_attributes.rb
259
+ - lib/ibrain/preferences/configuration.rb
260
+ - lib/ibrain/preferences/preferable.rb
261
+ - lib/ibrain/preferences/preferable_class_methods.rb
262
+ - lib/ibrain/user_class_handle.rb
263
+ - lib/ibrain_core.rb
264
+ - lib/tasks/ibrain/auto_annotate_models.rake
265
+ - lib/tasks/ibrain/core_tasks.rake
266
+ - lib/tasks/ibrain/ridgepole.rake
267
+ homepage: https://techfox.io
268
+ licenses:
269
+ - MIT
270
+ metadata:
271
+ homepage_uri: https://techfox.io
272
+ source_code_uri: https://github.com/john-techfox/ibrain-core.git
273
+ rubygems_mfa_required: 'true'
274
+ post_install_message:
275
+ rdoc_options: []
276
+ require_paths:
277
+ - lib
278
+ required_ruby_version: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
283
+ required_rubygems_version: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - ">="
286
+ - !ruby/object:Gem::Version
287
+ version: '0'
288
+ requirements: []
289
+ rubygems_version: 3.2.22
290
+ signing_key:
291
+ specification_version: 4
292
+ summary: Its Core is an sso authen gem for Ruby on Rails.
293
+ test_files: []