micro_api 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88d34ac6588812baff48c14c12b1ab5dac85de8ce875a633b10ed557fd207319
4
- data.tar.gz: '0924c15c703900c1fb9f90387bd1af51da634ca1d52bc4eae3436b93080cc954'
3
+ metadata.gz: 99a6cfc6d82c9d35036f0b7fffb1a7076ad78593e731ee1a025e68fcb60d82dd
4
+ data.tar.gz: 41a25e79645d7f6bb5b9f3135bbb0436ab96ac15f2492512d47c4b6b7ecd9aca
5
5
  SHA512:
6
- metadata.gz: e792082eb0e8dddfd11db78b6f8ffe85219851d7599fb1c1c0035803ae9de121985cab7a5f61b79ff568a0a0597b94b772a8c8fe1140f08ade427acc8260c0be
7
- data.tar.gz: 523a47666b6ab4affed06d1fd0e3c30b52e7a0c9409d246ddc8f811b893a65fb219a51b874db5830ee3c397e530d511e39eff49641562b0be8b4a08edb37c162
6
+ metadata.gz: 9d7f1a612213b649bbe000fef4878674733fa2834406d3151e64b0d8fc25d2575166832a6db26e435b6d1be1fa4ce78e23e82373e73da1d429ec28ca392dee5d
7
+ data.tar.gz: 917ab03be4c3901914ab3c1c21c339fa09eae405889891f7209fe0f70e965782f08fbfeecef2d5012baa76e8451b5153aaa3a9aff982f89afcbc2aa8f18b0995
data/README.md CHANGED
@@ -2,7 +2,16 @@
2
2
  This is a Rails plugin that would like to help the startup of rails applications oriented to microservices or, in general, application deployed on the cloud.
3
3
 
4
4
  ## Usage
5
- How to use my plugin.
5
+ How to use my plugin in a existing project
6
+ ```bash
7
+ bundle add micro_api
8
+ ```
9
+
10
+
11
+ ```bash
12
+ gem install micro_api
13
+ ```
14
+
6
15
 
7
16
  ## Installation
8
17
  Add this line to your application's Gemfile:
@@ -10,6 +19,11 @@ Add this line to your application's Gemfile:
10
19
  ```ruby
11
20
  gem "micro_api"
12
21
  ```
22
+ from localpath
23
+ ```ruby
24
+ gem 'micro_api', path: '/gems/micro_api'
25
+ ```
26
+
13
27
 
14
28
  And then execute:
15
29
  ```bash
@@ -9,6 +9,7 @@ module MicroApi
9
9
  ac: Rails.application.class.to_s.split("::").first, # app code
10
10
  cenv: ENV.fetch("CLOUD_ENV", "local"), # cloud env
11
11
  env: Rails.env, # rails env
12
+ av: app_version,
12
13
  itag: ENV.fetch("IMAGE_TAG", nil), # image tag
13
14
  }
14
15
  end
@@ -17,5 +18,13 @@ module MicroApi
17
18
  exception = ActionController::RoutingError.new("No route matches [#{request.method}] #{request.path}")
18
19
  render json: { error: exception.message }, status: :not_found
19
20
  end
21
+
22
+ private
23
+
24
+ def app_version
25
+ Rails.application.class::VERSION
26
+ rescue StandardError
27
+ nil
28
+ end
20
29
  end
21
30
  end
@@ -30,8 +30,13 @@ module MicroApi
30
30
 
31
31
  desc "This generator add row in application.rb file"
32
32
  def generate_micro_api_application
33
- application 'config.active_record.default_timezone = :utc' if defined?(ActiveRecord)
34
- application 'config.time_zone = "CET"'
33
+ application_list = ["\n"]
34
+ application_list << "config.active_record.default_timezone = :utc" if defined?(ActiveRecord)
35
+ application_list << "config.time_zone = 'CET'"
36
+
37
+ inject_into_file 'config/application.rb', before: /\n end$/ do
38
+ application_list.join("\n ").gsub(" \n", "\n")
39
+ end
35
40
  end
36
41
 
37
42
  desc "This generator creates an initializer file at config/initializers"
@@ -40,10 +45,24 @@ module MicroApi
40
45
  template "staging.rb", "#{Rails.root}/config/environments/staging.rb"
41
46
  end
42
47
 
43
- desc "This generator add row in routes.rb file"
44
- def generate_micro_api_route
45
- route "mount MicroApi::Engine, at: MicroApi.routes_path, as: '#{MicroApi.routes_path}'"
46
- route "match '*path', to: 'micro_api/static#no_route_matches', via: :all"
48
+ desc "This generator add 'api namespace' rows in routes.rb file"
49
+ def generate_micro_api_route_api_namespace
50
+ inject_into_file 'config/routes.rb', before: " # Defines the root path route" do
51
+ " namespace :api, defaults: { format: :json } do\n end\n\n"
52
+ end
53
+ end
54
+
55
+ desc "This generator add final rows in routes.rb file"
56
+ def generate_micro_api_route_last
57
+ routes_list = [
58
+ "\n",
59
+ "mount MicroApi::Engine, at: MicroApi.routes_path, as: '#{MicroApi.routes_path}'",
60
+ "match '*path', to: 'micro_api/static#no_route_matches', via: :all"
61
+ ]
62
+
63
+ inject_into_file 'config/routes.rb', before: /\nend$/ do
64
+ routes_list.join("\n ").gsub(" \n", "\n")
65
+ end
47
66
  end
48
67
  end
49
68
  end
@@ -1,8 +1,34 @@
1
+ require 'lograge'
2
+
1
3
  module MicroApi
2
4
  class Engine < ::Rails::Engine
3
5
  isolate_namespace MicroApi
4
6
  config.generators.api_only = true
5
7
 
8
+ initializer "micro_api.lograge.init" do |app|
9
+ app.configure do
10
+ config.lograge.enabled = true
11
+ config.lograge.base_controller_class = "ActionController::API"
12
+ config.lograge.formatter = Lograge::Formatters::Json.new
13
+ config.colorize_logging = false
14
+ config.lograge.logger = ActiveSupport::Logger.new($stdout)
15
+
16
+ config.lograge.ignore_custom = lambda do |event|
17
+ event.payload[:path] == "#{MicroApi.routes_path}/healthz" && event.payload[:request].remote_ip =~ /^10\./
18
+ end
19
+ config.lograge.custom_payload do |controller|
20
+ {
21
+ level: :info,
22
+ log_type: :rails,
23
+ request_id: controller.request.request_id,
24
+ host: controller.request.host,
25
+ remote_ip: controller.request.remote_ip,
26
+ image_tag: ENV['IMAGE_TAG']
27
+ }
28
+ end
29
+ end
30
+ end
31
+
6
32
  config.generators do |g|
7
33
  g.test_framework :rspec,
8
34
  controller_specs: true,
@@ -1,3 +1,3 @@
1
1
  module MicroApi
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -21,6 +21,8 @@ require "micro_api"
21
21
 
22
22
  module Dummy
23
23
  class Application < Rails::Application
24
+ VERSION = '1.2.3'.freeze
25
+
24
26
  config.load_defaults Rails::VERSION::STRING.to_f
25
27
 
26
28
  # Configuration for the application, engines, and railties goes here.
@@ -38,6 +40,6 @@ module Dummy
38
40
 
39
41
  config.hosts << "www.example.com"
40
42
 
41
- config.time_zone = "CET"
43
+ config.time_zone = 'CET'
42
44
  end
43
45
  end
@@ -1,5 +1,14 @@
1
1
  Rails.application.routes.draw do
2
+ # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
3
+
4
+ namespace :api, defaults: { format: :json } do
5
+ end
6
+
7
+ # Defines the root path route ("/")
8
+ # root "articles#index"
9
+
2
10
  # mount MicroApi::Engine => "/micro_api"
11
+
3
12
  mount MicroApi::Engine, at: MicroApi.routes_path, as: '/mse'
4
13
  match '*path', to: 'micro_api/static#no_route_matches', via: :all
5
14
  end
@@ -4,6 +4,12 @@ RSpec.describe "Statics" do
4
4
  describe "GET /healthz" do
5
5
  before { @route = get("#{MicroApi.routes_path}/healthz") }
6
6
 
7
+ it "returns http success", type: :request do
8
+ expect(response).to have_http_status(:success)
9
+ expect(response.header['Content-Type']).to include 'application/json'
10
+ expect(json).to have_key('status')
11
+ end
12
+
7
13
  it "routes /micro_api/version to the static controller", type: :routing do
8
14
  expect(@route).to route_to(
9
15
  controller: 'micro_api/static',
@@ -11,10 +17,5 @@ RSpec.describe "Statics" do
11
17
  format: :json
12
18
  )
13
19
  end
14
- it "returns http success", type: :request do
15
- expect(response).to have_http_status(:success)
16
- expect(response.header['Content-Type']).to include 'application/json'
17
- expect(json).to have_key('status')
18
- end
19
20
  end
20
21
  end
@@ -7,7 +7,8 @@ RSpec.describe "Statics" do
7
7
  it "returns http success", type: :request do
8
8
  expect(response).to have_http_status(:success)
9
9
  expect(response.header['Content-Type']).to include 'application/json'
10
- expect(json.keys).to contain_exactly('ac', 'cenv', 'env', 'itag')
10
+ expect(json.keys).to contain_exactly('ac', 'cenv', 'env', 'itag', 'av')
11
+ expect(json['av']).to eq('1.2.3'.freeze)
11
12
  end
12
13
 
13
14
  it "routes /micro_api/version to the static controller", type: :routing do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: micro_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-25 00:00:00.000000000 Z
11
+ date: 2024-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-rails
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: lograge
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rails
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -107,8 +121,6 @@ files:
107
121
  - spec/dummy/config/locales/en.yml
108
122
  - spec/dummy/config/puma.rb
109
123
  - spec/dummy/config/routes.rb
110
- - spec/dummy/log/development.log
111
- - spec/dummy/tmp/development_secret.txt
112
124
  - spec/generator/micro_api/installs_generator_spec.rb
113
125
  - spec/rails_helper.rb
114
126
  - spec/requests/micro_api/static_healthz_spec.rb
@@ -125,7 +137,7 @@ metadata:
125
137
  homepage_uri: https://github.com/lelered/micro_api
126
138
  source_code_uri: https://github.com/lelered/micro_api
127
139
  changelog_uri: https://github.com/lelered/micro_api/blob/main/CHANGELOG.md
128
- post_install_message:
140
+ post_install_message:
129
141
  rdoc_options: []
130
142
  require_paths:
131
143
  - lib
@@ -140,8 +152,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
152
  - !ruby/object:Gem::Version
141
153
  version: '0'
142
154
  requirements: []
143
- rubygems_version: 3.4.9
144
- signing_key:
155
+ rubygems_version: 3.4.19
156
+ signing_key:
145
157
  specification_version: 4
146
158
  summary: Engine plugin for Ruby on Rails applications
147
159
  test_files:
@@ -163,8 +175,6 @@ test_files:
163
175
  - spec/dummy/config/puma.rb
164
176
  - spec/dummy/config/routes.rb
165
177
  - spec/dummy/config.ru
166
- - spec/dummy/log/development.log
167
- - spec/dummy/tmp/development_secret.txt
168
178
  - spec/generator/micro_api/installs_generator_spec.rb
169
179
  - spec/rails_helper.rb
170
180
  - spec/requests/micro_api/static_healthz_spec.rb