sp-duh 2.0.6

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 (56) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +661 -0
  3. data/README.md +2 -0
  4. data/Rakefile +32 -0
  5. data/config/i18n/i18n.xlsx +0 -0
  6. data/config/initializers/active_record/connection_adapters_postgre_sql_adapter.rb +165 -0
  7. data/config/initializers/active_record/migration_without_transaction.rb +4 -0
  8. data/config/initializers/active_record/migrator.rb +34 -0
  9. data/config/initializers/rails/generators.rb +13 -0
  10. data/config/jsonapi/settings.yml +14 -0
  11. data/config/locales/pt.yml +15 -0
  12. data/lib/generators/accounting_migration/accounting_migration_generator.rb +10 -0
  13. data/lib/generators/accounting_migration/templates/migration.rb +42 -0
  14. data/lib/generators/accounting_payroll_migration/accounting_payroll_migration_generator.rb +10 -0
  15. data/lib/generators/accounting_payroll_migration/templates/migration.rb +73 -0
  16. data/lib/generators/sharded_migration/sharded_migration_generator.rb +10 -0
  17. data/lib/generators/sharded_migration/templates/migration.rb +45 -0
  18. data/lib/sp-duh.rb +32 -0
  19. data/lib/sp/duh.rb +180 -0
  20. data/lib/sp/duh/adapters/pg/text_decoder/json.rb +15 -0
  21. data/lib/sp/duh/adapters/pg/text_encoder/json.rb +15 -0
  22. data/lib/sp/duh/db/transfer/backup.rb +71 -0
  23. data/lib/sp/duh/db/transfer/restore.rb +89 -0
  24. data/lib/sp/duh/engine.rb +35 -0
  25. data/lib/sp/duh/exceptions.rb +70 -0
  26. data/lib/sp/duh/i18n/excel_loader.rb +26 -0
  27. data/lib/sp/duh/jsonapi/adapters/base.rb +168 -0
  28. data/lib/sp/duh/jsonapi/adapters/db.rb +36 -0
  29. data/lib/sp/duh/jsonapi/adapters/raw_db.rb +77 -0
  30. data/lib/sp/duh/jsonapi/configuration.rb +167 -0
  31. data/lib/sp/duh/jsonapi/doc/apidoc_documentation_format_generator.rb +286 -0
  32. data/lib/sp/duh/jsonapi/doc/generator.rb +32 -0
  33. data/lib/sp/duh/jsonapi/doc/schema_catalog_helper.rb +97 -0
  34. data/lib/sp/duh/jsonapi/doc/victor_pinus_metadata_format_parser.rb +374 -0
  35. data/lib/sp/duh/jsonapi/exceptions.rb +56 -0
  36. data/lib/sp/duh/jsonapi/model/base.rb +25 -0
  37. data/lib/sp/duh/jsonapi/model/concerns/attributes.rb +94 -0
  38. data/lib/sp/duh/jsonapi/model/concerns/model.rb +42 -0
  39. data/lib/sp/duh/jsonapi/model/concerns/persistence.rb +221 -0
  40. data/lib/sp/duh/jsonapi/model/concerns/serialization.rb +59 -0
  41. data/lib/sp/duh/jsonapi/parameters.rb +44 -0
  42. data/lib/sp/duh/jsonapi/resource_publisher.rb +28 -0
  43. data/lib/sp/duh/jsonapi/service.rb +110 -0
  44. data/lib/sp/duh/migrations.rb +47 -0
  45. data/lib/sp/duh/migrations/migrator.rb +41 -0
  46. data/lib/sp/duh/repl.rb +193 -0
  47. data/lib/sp/duh/version.rb +25 -0
  48. data/lib/tasks/db_utils.rake +98 -0
  49. data/lib/tasks/doc.rake +27 -0
  50. data/lib/tasks/i18n.rake +23 -0
  51. data/lib/tasks/oauth.rake +29 -0
  52. data/lib/tasks/transfer.rake +48 -0
  53. data/lib/tasks/xls2jrxml.rake +15 -0
  54. data/test/jsonapi/server.rb +67 -0
  55. data/test/tasks/test.rake +10 -0
  56. metadata +170 -0
@@ -0,0 +1,25 @@
1
+ #
2
+ # Copyright (c) 2011-2017 Cloudware S.A. All rights reserved.
3
+ #
4
+ # This file is part of sp-duh.
5
+ #
6
+ # sp-duh is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU Affero General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # sp-duh is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU Affero General Public License
17
+ # along with sp-duh. If not, see <http://www.gnu.org/licenses/>.
18
+ #
19
+ # encoding: utf-8
20
+ #
21
+ module SP
22
+ module Duh
23
+ VERSION = File.read(File.expand_path('../../../../VERSION', __FILE__))
24
+ end
25
+ end
@@ -0,0 +1,98 @@
1
+ require 'yaml'
2
+ require 'pg'
3
+
4
+ def load_db_from_yml_spec (a_spec)
5
+ a_spec["folders"].each do |elem|
6
+ Pathname.glob("#{MOD_PATH}/db/#{elem}/**/").sort.each do |folder|
7
+ Dir["#{folder}/*.sql"].sort.each do |file|
8
+ puts "file #{file}"
9
+ $db.exec( File.read(file) )
10
+ end
11
+ end
12
+ end
13
+
14
+ return if a_spec["execute"].nil?
15
+
16
+ a_spec["folders"].each do |folder|
17
+ next unless a_spec["execute"].has_key?(folder)
18
+ next unless a_spec["execute"][folder].is_a?(Array)
19
+ a_spec["execute"][folder].each do |to_execute|
20
+ puts to_execute
21
+ $db.exec( "SELECT #{ to_execute};" )
22
+ end
23
+ end
24
+ end
25
+
26
+ def load_db_config
27
+ ENV['RAILS_ENV'] ||= 'development'
28
+ $db_config = YAML.load_file(File.join('config', 'database.yml'))[ENV['RAILS_ENV']]
29
+ end
30
+
31
+ def connect_to_pg
32
+ load_db_config()
33
+ $db = PG.connect(host: $db_config['host'], port: $db_config['port'], dbname: $db_config['database'], user: $db_config['username'], password: $db_config['password'])
34
+ end
35
+
36
+ def config_json_api
37
+ jsonapi_service = SP::Duh::JSONAPI::Service.new($db, JSONAPI_PREFIX)
38
+ jsonapi_service.setup()
39
+ jsonapi_service.configuration.reload!
40
+ end
41
+
42
+ task :pg_connect do
43
+ $db.close unless $db.nil?
44
+ connect_to_pg()
45
+ $db
46
+ end
47
+
48
+ desc 'Reload jsonapi'
49
+ task :config_jsonapi => :pg_connect do
50
+ config_json_api()
51
+ end
52
+
53
+ task :production_safety do
54
+ load_db_config()
55
+ unless Object.const_defined?('FORBIDDEN_HOSTS')
56
+ raise "To run this task you must define 'FORBIDDEN_HOSTS' No, you don't know what you are doing!!!!"
57
+ end
58
+ if FORBIDDEN_HOSTS.include? %x[hostname -s].strip
59
+ raise "For safety reasons this task can't be run on this machine, no you don't know what you are doing"
60
+ end
61
+ unless %w(localhost tocstaging cloudex 127.0.0.1).include? $db_config['host']
62
+ raise "For safety reasons database host #{$db_config['host']} is not allowed"
63
+ end
64
+ end
65
+
66
+ desc 'Reload GEM functions defined in db_functions.yml (FOR LOCAL GEM ONLY)'
67
+ task :reload_functions => [:production_safety, :pg_connect] do
68
+ unless Object.const_defined?('MOD_PATH')
69
+ raise "To run this task you must define 'MOD_PATH'!"
70
+ end
71
+ load_db_from_yml_spec(YAML.load_file(File.join(MOD_PATH, 'config', 'db_functions.yml')))
72
+ end
73
+
74
+ desc 'Create a new database seed using db_seed.yml spec'
75
+ task :create_db => :production_safety do
76
+
77
+ begin
78
+ connect_to_pg()
79
+ unless $db.nil?
80
+ $db.close
81
+ nuke_db = ask('Are you sure? The current database will be destroyed!!!!') { |q| q.default = 'no' }
82
+ if nuke_db.downcase == 'yes'
83
+ %x[dropdb -p #{$db_config['port']} -U #{$db_config['username']} -h #{$db_config['host']} #{$db_config['database']}]
84
+ raise 'dropdb failed, bailing out' unless $?.success?
85
+ end
86
+ end
87
+ rescue
88
+ end
89
+
90
+ %x[PGPASSWORD=#{$db_config['password']} createdb -h #{$db_config['host']} -U #{$db_config['username']} #{$db_config['database']}]
91
+ raise 'createdb failed, bailing out' unless $?.success?
92
+ connect_to_pg()
93
+ load_db_from_yml_spec(YAML.load_file(File.join(MOD_PATH, 'config', 'db_seed.yml')))
94
+ load_db_from_yml_spec(YAML.load_file(File.join(MOD_PATH, 'config', 'db_functions.yml')))
95
+ config_json_api()
96
+ end
97
+
98
+
@@ -0,0 +1,27 @@
1
+ namespace :sp do
2
+ namespace :duh do
3
+ namespace :jsonapi do
4
+ namespace :doc do
5
+
6
+ desc "Generate (JSONAPI) API documentation"
7
+ task :generate, [ :publisher, :version, :folder ] => :environment do |task, arguments|
8
+
9
+ if arguments[:publisher].nil? || arguments[:version].nil?
10
+ raise "Usage: rake sp:duh:jsonapi:doc:generate[<resource publisher>,<API version>[,<documentation_folder; default = ./apidoc>]"
11
+ end
12
+
13
+ Rails.logger = Logger.new(STDOUT)
14
+
15
+ generator = SP::Duh::JSONAPI::Doc::Generator.new($db || ActiveRecord::Base.connection.raw_connection)
16
+ if arguments[:folder].nil?
17
+ generator.generate(arguments[:publisher], arguments[:version])
18
+ else
19
+ generator.generate(arguments[:publisher], arguments[:version], arguments[:folder])
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ namespace :i18n do
2
+
3
+ desc "Reload all i18n entries into the database"
4
+ task :reload => :environment do
5
+
6
+ # Can we use the Rails' connection
7
+ if defined?($db)
8
+ pg_connection = $db
9
+ elsif defined?(Rails)
10
+ pg_connection = ActiveRecord::Base.connection.raw_connection
11
+ else
12
+ raise "No connection to Postgres!"
13
+ end
14
+
15
+ # For now, this is the only Excel file we will handle
16
+ excel_filename = File.join(SP::Duh.root, 'config', 'i18n', 'i18n.xlsx')
17
+ loader = SP::Duh::I18n::ExcelLoader.new(excel_filename, pg_connection)
18
+ loader.clear
19
+ loader.reload
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,29 @@
1
+ require 'redis'
2
+
3
+ namespace :sp do
4
+ namespace :duh do
5
+
6
+ desc "Copy OAuth configurations to Redis"
7
+ task :oauth, [ :root_path ] do |task, args|
8
+
9
+ root_path = args.to_hash[:root_path] || '.'
10
+ redis_config = HashWithIndifferentAccess[YAML.load_file(File.join(root_path, 'config/redis.yml'))]
11
+ oauth_config = HashWithIndifferentAccess[YAML.load_file(File.join(root_path, 'config/oauth.yml'))]
12
+
13
+ redis = Redis.new(:host => redis_config[:casper][:hostname], :port => redis_config[:casper][:port])
14
+ oauth_config[:'oauth-apps'].each do |service|
15
+ service['clients'].each do |client|
16
+ # First, remove old key
17
+ redis.del "#{service['service_id']}:oauth:#{client['client_id']}"
18
+ client.each do |key, value|
19
+ redis.hmset(
20
+ "#{service['service_id']}:oauth:#{client['client_id']}" ,
21
+ "#{key}" , "#{value}"
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,48 @@
1
+ namespace :sp do
2
+ namespace :duh do
3
+ namespace :transfer do
4
+
5
+ desc "Backup a sharded company for restoring to a different database"
6
+ task :backup, [ :company_id, :backup_file ] => :environment do |task, arguments|
7
+
8
+ if arguments[:company_id].nil?
9
+ raise "Usage: rake sp:duh:transfer:backup[<company_id> [, <backup_file> ]]"
10
+ end
11
+
12
+ company_id = arguments[:company_id].to_i
13
+ backer = SP::Duh::Db::Transfer::Backup.new(ActiveRecord::Base.connection.raw_connection)
14
+ backer.execute(company_id, arguments[:backup_file])
15
+
16
+ end
17
+
18
+ desc "Restore a sharded company backed up from a different database"
19
+ task :restore, [ :company_id, :backup_file ] => :environment do |task, arguments|
20
+
21
+ if arguments[:company_id].nil? || arguments[:backup_file].nil?
22
+ raise "Usage: rake sp:duh:transfer:backup[<company_id>, <backup_file>]"
23
+ end
24
+
25
+ company_id = arguments[:company_id].to_i
26
+ backup_file = arguments[:backup_file].to_s
27
+ restorer = SP::Duh::Db::Transfer::Restore.new(ActiveRecord::Base.connection.raw_connection)
28
+ restorer.execute(company_id, backup_file)
29
+
30
+ end
31
+
32
+ desc "Validate and get info from a sharded company backup"
33
+ task :check, [ :company_id, :backup_file ] => :environment do |task, arguments|
34
+
35
+ if arguments[:company_id].nil? || arguments[:backup_file].nil?
36
+ raise "Usage: rake sp:duh:transfer:check[<company_id>, <backup_file>]"
37
+ end
38
+
39
+ company_id = arguments[:company_id].to_i
40
+ backup_file = arguments[:backup_file].to_s
41
+ restorer = SP::Duh::Db::Transfer::Restore.new(ActiveRecord::Base.connection.raw_connection)
42
+ restorer.execute(company_id, backup_file, true)
43
+
44
+ end
45
+
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,15 @@
1
+
2
+ desc 'Convert excel model to JRXML'
3
+ task :xls2jrxml, [:xls_file] do |task, args|
4
+ args = args.to_hash()
5
+ args[:xls_file] = "#{args[:xls_file]}.xlsx" unless args[:xls_file].end_with?('.xlsx')
6
+
7
+ jrxml_base = File.basename(args[:xls_file], '.xlsx')
8
+ Dir.mkdir './tmp' unless Dir.exists?('./tmp')
9
+
10
+ converter = ::Sp::Excel::Loader::Jrxml::ExcelToJrxml.new(args[:xls_file], nil, true, true, false)
11
+ File.rename("#{jrxml_base}.jrxml", "./tmp/#{jrxml_base}_compat.jrxml")
12
+
13
+ converter = ::Sp::Excel::Loader::Jrxml::ExcelToJrxml.new(args[:xls_file], nil, true, true, true)
14
+ File.rename("#{jrxml_base}.jrxml", "./tmp/#{jrxml_base}.jrxml")
15
+ end
@@ -0,0 +1,67 @@
1
+ require 'sinatra'
2
+ require 'json'
3
+ require 'yaml'
4
+ require 'pg'
5
+ require 'byebug'
6
+
7
+ Bundler.require
8
+
9
+ # Load test configuration
10
+
11
+ configuration = YAML.load_file(File.join(File.expand_path(File.dirname(__FILE__)), 'config.yml'))
12
+
13
+ server_configuration = configuration['server'] || {}
14
+ test_port = server_configuration['port'] || 9001
15
+
16
+ set :logging, true
17
+ set :port, test_port
18
+
19
+ # Open connection to the test database
20
+
21
+ pg_configuration = configuration['database'] || {}
22
+ pg_connection = PG.connect({
23
+ host: pg_configuration['host'],
24
+ port: pg_configuration['port'],
25
+ dbname: pg_configuration['database'],
26
+ user: pg_configuration['username'],
27
+ password: pg_configuration['password']
28
+ })
29
+
30
+ # Initialize and configure the test JSONAPI service
31
+
32
+ jsonapi_configuration = configuration['jsonapi'] || {}
33
+ url = jsonapi_configuration['url'] || "http://localhost:#{test_port}"
34
+
35
+ # The testing environment will include all JSONAPI resources defined for the given url
36
+ # No reloading of resources is done, since this gem does not know which publishers are available
37
+ jsonapi_service = SP::Duh::JSONAPI::Service.new(pg_connection, url)
38
+ $jsonapi_adapter = SP::Duh::JSONAPI::Adapters::RawDb.new(jsonapi_service)
39
+
40
+ get '/*' do
41
+ process_request
42
+ end
43
+
44
+ post '/*' do
45
+ process_request
46
+ end
47
+
48
+ put '/*' do
49
+ process_request
50
+ end
51
+
52
+ patch '/*' do
53
+ process_request
54
+ end
55
+
56
+ delete '/*' do
57
+ process_request
58
+ end
59
+
60
+ def process_request
61
+ content_type 'application/vnd.api+json', :charset => 'utf-8'
62
+ # Send the sharding parameters in the request headers
63
+ schema = request.env['HTTP_X_JSONAPI_SCHEMA'] || ''
64
+ prefix = request.env['HTTP_X_JSONAPI_PREFIX'] || ''
65
+ $jsonapi_adapter.request(request.fullpath, schema, prefix, request.body.read, request.request_method.upcase)
66
+ end
67
+
@@ -0,0 +1,10 @@
1
+ namespace :test do
2
+
3
+ namespace :jsonapi do
4
+ desc "Start the JSONAPI test server"
5
+ task :server do
6
+ system "ruby test/jsonapi/server.rb"
7
+ end
8
+ end
9
+
10
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sp-duh
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Jorge Morais
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-12-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: highline
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sp-excel-loader
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: awesome_print
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '8.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '8.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.2'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.2'
83
+ description: Gem to manage JSONAPI requests to a resourceful database
84
+ email:
85
+ - jorge.morais@cldware.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - LICENSE
91
+ - README.md
92
+ - Rakefile
93
+ - config/i18n/i18n.xlsx
94
+ - config/initializers/active_record/connection_adapters_postgre_sql_adapter.rb
95
+ - config/initializers/active_record/migration_without_transaction.rb
96
+ - config/initializers/active_record/migrator.rb
97
+ - config/initializers/rails/generators.rb
98
+ - config/jsonapi/settings.yml
99
+ - config/locales/pt.yml
100
+ - lib/generators/accounting_migration/accounting_migration_generator.rb
101
+ - lib/generators/accounting_migration/templates/migration.rb
102
+ - lib/generators/accounting_payroll_migration/accounting_payroll_migration_generator.rb
103
+ - lib/generators/accounting_payroll_migration/templates/migration.rb
104
+ - lib/generators/sharded_migration/sharded_migration_generator.rb
105
+ - lib/generators/sharded_migration/templates/migration.rb
106
+ - lib/sp-duh.rb
107
+ - lib/sp/duh.rb
108
+ - lib/sp/duh/adapters/pg/text_decoder/json.rb
109
+ - lib/sp/duh/adapters/pg/text_encoder/json.rb
110
+ - lib/sp/duh/db/transfer/backup.rb
111
+ - lib/sp/duh/db/transfer/restore.rb
112
+ - lib/sp/duh/engine.rb
113
+ - lib/sp/duh/exceptions.rb
114
+ - lib/sp/duh/i18n/excel_loader.rb
115
+ - lib/sp/duh/jsonapi/adapters/base.rb
116
+ - lib/sp/duh/jsonapi/adapters/db.rb
117
+ - lib/sp/duh/jsonapi/adapters/raw_db.rb
118
+ - lib/sp/duh/jsonapi/configuration.rb
119
+ - lib/sp/duh/jsonapi/doc/apidoc_documentation_format_generator.rb
120
+ - lib/sp/duh/jsonapi/doc/generator.rb
121
+ - lib/sp/duh/jsonapi/doc/schema_catalog_helper.rb
122
+ - lib/sp/duh/jsonapi/doc/victor_pinus_metadata_format_parser.rb
123
+ - lib/sp/duh/jsonapi/exceptions.rb
124
+ - lib/sp/duh/jsonapi/model/base.rb
125
+ - lib/sp/duh/jsonapi/model/concerns/attributes.rb
126
+ - lib/sp/duh/jsonapi/model/concerns/model.rb
127
+ - lib/sp/duh/jsonapi/model/concerns/persistence.rb
128
+ - lib/sp/duh/jsonapi/model/concerns/serialization.rb
129
+ - lib/sp/duh/jsonapi/parameters.rb
130
+ - lib/sp/duh/jsonapi/resource_publisher.rb
131
+ - lib/sp/duh/jsonapi/service.rb
132
+ - lib/sp/duh/migrations.rb
133
+ - lib/sp/duh/migrations/migrator.rb
134
+ - lib/sp/duh/repl.rb
135
+ - lib/sp/duh/version.rb
136
+ - lib/tasks/db_utils.rake
137
+ - lib/tasks/doc.rake
138
+ - lib/tasks/i18n.rake
139
+ - lib/tasks/oauth.rake
140
+ - lib/tasks/transfer.rake
141
+ - lib/tasks/xls2jrxml.rake
142
+ - test/jsonapi/server.rb
143
+ - test/tasks/test.rake
144
+ homepage: https://github.com/vpfpinho/sp-duh
145
+ licenses:
146
+ - AGPL
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 2.4.8
165
+ signing_key:
166
+ specification_version: 4
167
+ summary: Gem to manage JSONAPI requests to a resourceful database
168
+ test_files:
169
+ - test/jsonapi/server.rb
170
+ - test/tasks/test.rake