r2-oas 0.2.0 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -0
  3. data/GEMSPEC.md +19 -22
  4. data/README.ja.md +61 -0
  5. data/README.md +60 -0
  6. data/lib/r2-oas.rb +2 -4
  7. data/lib/r2-oas/app_configuration.rb +1 -1
  8. data/lib/r2-oas/deploy/client.rb +33 -6
  9. data/lib/r2-oas/lib/core_ext/hash/deep_merge.rb +44 -0
  10. data/lib/r2-oas/lib/core_ext/object/blank.rb +135 -0
  11. data/lib/r2-oas/schema/editor.rb +13 -2
  12. data/lib/r2-oas/schema/ui.rb +0 -1
  13. data/lib/r2-oas/task_logging.rb +0 -4
  14. data/lib/r2-oas/tasks/common.rake +0 -1
  15. data/lib/r2-oas/tasks/tool.rake +9 -2
  16. data/lib/r2-oas/version.rb +1 -1
  17. data/r2-oas.gemspec +12 -13
  18. metadata +61 -78
  19. data/.github/ISSUE_TEMPLATE.md +0 -12
  20. data/.github/PULL_REQUEST_TEMPLATE.md +0 -12
  21. data/.gitignore +0 -12
  22. data/.rspec +0 -3
  23. data/.rubocop.yml +0 -7
  24. data/.rubocop_todo.yml +0 -249
  25. data/.travis.yml +0 -24
  26. data/CODE_OF_CONDUCT.md +0 -74
  27. data/Gemfile +0 -12
  28. data/Gemfile.lock +0 -224
  29. data/Rakefile +0 -8
  30. data/bin/console +0 -12
  31. data/bin/setup +0 -8
  32. data/docs/.nojekyll +0 -0
  33. data/docs/README.md +0 -173
  34. data/docs/_sidebar.md +0 -23
  35. data/docs/attention/if_clash.md +0 -19
  36. data/docs/index.html +0 -29
  37. data/docs/schema/3.0.0.md +0 -155
  38. data/docs/setting/COC.md +0 -14
  39. data/docs/setting/CORS.md +0 -22
  40. data/docs/setting/configure.md +0 -176
  41. data/docs/usage/analyze_docs.md +0 -875
  42. data/docs/usage/clean_docs.md +0 -19
  43. data/docs/usage/deploy_docs.md +0 -839
  44. data/docs/usage/display_paths_list.md +0 -35
  45. data/docs/usage/display_paths_stats.md +0 -54
  46. data/docs/usage/edit_docs.md +0 -218
  47. data/docs/usage/generate_docs.md +0 -412
  48. data/docs/usage/monitor_docs.md +0 -219
  49. data/docs/usage/use_hook_methods.md +0 -236
  50. data/docs/usage/use_hook_to_generate_docs.md +0 -235
  51. data/docs/usage/use_schema_namespace.md +0 -181
  52. data/docs/usage/use_tag_namespace.md +0 -180
  53. data/docs/usage/view_docs.md +0 -262
  54. data/lib/r2-oas/deploy/swagger-ui/dist/favicon-16x16.png +0 -0
  55. data/lib/r2-oas/deploy/swagger-ui/dist/favicon-32x32.png +0 -0
  56. data/lib/r2-oas/deploy/swagger-ui/dist/oauth2-redirect.html +0 -68
  57. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-bundle.js +0 -134
  58. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-bundle.js.map +0 -1
  59. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-standalone-preset.js +0 -22
  60. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui-standalone-preset.js.map +0 -1
  61. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.css +0 -4
  62. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.css.map +0 -1
  63. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.js +0 -9
  64. data/lib/r2-oas/deploy/swagger-ui/dist/swagger-ui.js.map +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8bf20ae2c0c99f94558e59869340907ff824e3ae915ca75937c3b442239e3abe
4
- data.tar.gz: 1b4c900930a1ea5450f233f7f03a627ff5ae7c6976d62a3c8ffbf3e5ed07bd22
3
+ metadata.gz: 74e2483dd3c1980c894757819275ef05b794820d5aebe22b08bf737df2f31c63
4
+ data.tar.gz: 52b4b0abf260d18852cdaad9ea1d7b70aa76cc63e15a7793e528b8769e715b94
5
5
  SHA512:
6
- metadata.gz: fdd920f94d39c3f0823c3aa6696f5ecb8d401808d3e0424115d2e8ac8758e052c50db3c2ac4ca6fd0b55fd44ab3b5d52ac175f3abacfab3e1c6adacdb1a58054
7
- data.tar.gz: b01b1249e8fa3dc3de707783f33ff1720e96af0a85c5cd90e9877175419a143243bb6bbf6678f680af1a14af055ab87f3753c43d98903a4cca06cffd29b92055
6
+ metadata.gz: 23f55926a604e6f49424294867e183a4cb4d1dc0a5b6a0e3fa9751eb56bc667477868a56436a08a3c3855939f3d9b8959c56ca7d5496086be6ffe8b2f45a06bc
7
+ data.tar.gz: 799eae1d0bf672a6615cb8917b4aa633b92cb01df314adbfd00cab520176dff47b97be49316430e1b2c51bf0083f114331f6bcb48c5cab14837985b910846ace
@@ -1,5 +1,46 @@
1
1
  # Change Log
2
2
 
3
+ ## v0.3.4
4
+
5
+ 2020-07-11
6
+
7
+ - [`Other`] Modify gemspec `files` fields ([#147](https://github.com/yukihirop/r2-oas/pull/147))
8
+ - Add `r2-oas.gemspec` into gemspec `files`
9
+
10
+ ## v0.3.3
11
+
12
+ 2020-07-11
13
+
14
+ - [`FixBugs`] A cute pet store syndrome 🐈 ([f3f4c30](https://github.com/yukihirop/r2-oas/pull/144))
15
+ - [`FixBugs`] R2OAS.logger.level does not work ([f3f4c30](https://github.com/yukihirop/r2-oas/pull/144))
16
+ - [`Breaking`] Change default namespace type from `:underbar` to `:dot` ([f3f4c30](https://github.com/yukihirop/r2-oas/pull/144))
17
+ - [`Other`] Modify gemspec `files` fields ([f3f4c30](https://github.com/yukihirop/r2-oas/pull/144))
18
+
19
+ See milestone [v0.3.3](https://github.com/yukihirop/r2-oas/milestone/3?closed=1)
20
+
21
+ ## v0.3.2
22
+
23
+ 2020-07-05
24
+
25
+ - [`Feature`] The file size at the time of gem install was reduced by about 10MB. ([dbdbce9 ](https://github.com/yukihirop/r2-oas/pull/138))
26
+
27
+ ## v0.3.1
28
+
29
+ 2020-06-07
30
+
31
+ - [`Breaking`] Remove unnecessary runtime dependencies ([384ea1a](https://github.com/yukihirop/r2-oas/pull/132))
32
+
33
+ ## v0.3.0
34
+
35
+ 2020-05-30
36
+
37
+ - [`Feature/Breaking`] Support Ruby 2.7 🎉 ([931ec4b](https://github.com/yukihirop/r2-oas/pull/122))
38
+
39
+ - Remove `Gemfile.lock`
40
+
41
+ - [`Developer`] Create script to test all support ruby in development ([8d0df98](https://github.com/yukihirop/r2-oas/pull/124))
42
+ - [`Docs`] Add docs about Trableshouting ([f4a782f](https://github.com/yukihirop/r2-oas/pull/125))
43
+
3
44
  ## v0.2.0
4
45
 
5
46
  2020-05-02
data/GEMSPEC.md CHANGED
@@ -1,23 +1,20 @@
1
- Let's intuitively write API documentation with Swagger Editor in your Rails Project! 😊
2
-
3
- Configureless and no DSL. 👍 But you can also configure.
4
-
5
- Loosely coupled to your Rails project. 👍
6
-
7
- So If it doesn't, you can always stop easily. 😢
8
-
9
- Generate api docment(OpenAPI) side only from `Rails` routing.
10
-
11
- Provide rake tasks to management API Docment (OpenAPI) 🎉
12
-
13
-
14
- $ bundle exec rake routes:oas:docs # generate
15
- $ bundle exec rake routes:oas:ui # view
16
- $ bundle exec rake routes:oas:editor # edit
17
- $ bundle exec rake routes:oas:monitor # monitor
18
- $ bundle exec rake routes:oas:dist # distribute
19
- $ bundle exec rake routes:oas:clean # clean
20
- $ bundle exec rake routes:oas:analyze # analyze
21
- $ bundle exec rake routes:oas:deploy # deploy
22
-
1
+ Configureless and no DSL. 👍 But you can also configure.
2
+ Manage with yaml file instead of Ruby code.
3
+ Loosely coupled to your Rails project. 👍
4
+ So if you want to use another tool, you can port it right away. 😢
5
+ Generate api docment(OpenAPI) side only from `Rails` routing.
6
+
7
+ Provide rake tasks to management API Docment (OpenAPI) 🎉
8
+
9
+
10
+ $ bundle exec rake routes:oas:docs
11
+ $ bundle exec rake routes:oas:ui
12
+ $ bundle exec rake routes:oas:editor
13
+ $ bundle exec rake routes:oas:monitor
14
+ $ bundle exec rake routes:oas:dist
15
+ $ bundle exec rake routes:oas:clean
16
+ $ bundle exec rake routes:oas:analyze
17
+ $ bundle exec rake routes:oas:deploy
18
+
19
+
23
20
  Happy Coding ❗️
@@ -157,6 +157,67 @@ OpenAPIの3.0.0をサポートしてます。
157
157
 
158
158
  公式ドキュメントはこちら => https://yukihirop.github.io/r2-oas/#/usage/use_hook_methods
159
159
 
160
+
161
+ ## Bundle and Rspec with multiple ruby ​​versions
162
+
163
+ #### Bundle
164
+
165
+ ```bash
166
+ /bin/bash devscript/all_support_ruby.sh bundle
167
+ .
168
+ .
169
+ .
170
+ ===== Bundle install for All Support Ruby Result =====
171
+ ruby-2.3.3: 0
172
+ ruby-2.4.2: 0
173
+ ruby-2.5.8: 0
174
+ ruby-2.6.6: 0
175
+ ruby-2.7.1: 0
176
+ ======================================================
177
+ ```
178
+
179
+ rubyのバージョンを `2.6.6` と `2.7.1` に指定する場合
180
+
181
+ ```bash
182
+ /bin/bash devscript/all_support_ruby.sh bundle 2.6.6 2.7.1
183
+ .
184
+ .
185
+ .
186
+ ===== Bundle install for All Support Ruby Result =====
187
+ ruby-2.6.6: 0
188
+ ruby-2.7.1: 0
189
+ ======================================================
190
+ ```
191
+
192
+ #### Rspec
193
+
194
+ ```bash
195
+ /bin/bash devscript/all_support_ruby.sh rspec
196
+ .
197
+ .
198
+ .
199
+ ===== Rspec for All Support Ruby Result =====
200
+ ruby-2.3.3: 0
201
+ ruby-2.4.2: 0
202
+ ruby-2.5.8: 0
203
+ ruby-2.6.6: 0
204
+ ruby-2.7.1: 0
205
+ =============================================
206
+ ```
207
+
208
+ rubyのバージョンを `2.6.6` と `2.7.1` に指定する場合
209
+
210
+ ```bash
211
+ /bin/bash devscript/all_support_ruby.sh rspec 2.6.6 2.7.1
212
+ .
213
+ .
214
+ .
215
+ ===== Rspec for All Support Ruby Result =====
216
+ ruby-2.6.6: 0
217
+ ruby-2.7.1: 0
218
+ =============================================
219
+ ```
220
+
160
221
  ## 🔩 CORS
161
222
 
162
223
  [rack-cors](https://github.com/cyu/rack-cors)を使用する事でCORSを可能にします。
data/README.md CHANGED
@@ -156,6 +156,66 @@ Supported hook(life cycle methods) is like this:
156
156
 
157
157
  Full docs are available at https://yukihirop.github.io/r2-oas/#/usage/use_hook_methods
158
158
 
159
+ ## Bundle and Rspec with multiple ruby ​​versions
160
+
161
+ #### Bundle
162
+
163
+ ```bash
164
+ /bin/bash devscript/all_support_ruby.sh bundle
165
+ .
166
+ .
167
+ .
168
+ ===== Bundle install for All Support Ruby Result =====
169
+ ruby-2.3.3: 0
170
+ ruby-2.4.2: 0
171
+ ruby-2.5.8: 0
172
+ ruby-2.6.6: 0
173
+ ruby-2.7.1: 0
174
+ ======================================================
175
+ ```
176
+
177
+ If specify ruby version `2.6.6` and `2.7.1`
178
+
179
+ ```bash
180
+ /bin/bash devscript/all_support_ruby.sh bundle 2.6.6 2.7.1
181
+ .
182
+ .
183
+ .
184
+ ===== Bundle install for All Support Ruby Result =====
185
+ ruby-2.6.6: 0
186
+ ruby-2.7.1: 0
187
+ ======================================================
188
+ ```
189
+
190
+ #### Rspec
191
+
192
+ ```bash
193
+ /bin/bash devscript/all_support_ruby.sh rspec
194
+ .
195
+ .
196
+ .
197
+ ===== Rspec for All Support Ruby Result =====
198
+ ruby-2.3.3: 0
199
+ ruby-2.4.2: 0
200
+ ruby-2.5.8: 0
201
+ ruby-2.6.6: 0
202
+ ruby-2.7.1: 0
203
+ =============================================
204
+ ```
205
+
206
+ If specify ruby version `2.6.6` and `2.7.1`
207
+
208
+ ```bash
209
+ /bin/bash devscript/all_support_ruby.sh rspec 2.6.6 2.7.1
210
+ .
211
+ .
212
+ .
213
+ ===== Rspec for All Support Ruby Result =====
214
+ ruby-2.6.6: 0
215
+ ruby-2.7.1: 0
216
+ =============================================
217
+ ```
218
+
159
219
  ## 🔩 CORS
160
220
 
161
221
  Use [rack-cors](https://github.com/cyu/rack-cors) to enable CORS.
@@ -6,14 +6,14 @@ require 'r2-oas/errors'
6
6
  require 'r2-oas/schema/v3/object/public'
7
7
 
8
8
  module R2OAS
9
- extend ActiveSupport::Autoload
10
-
11
9
  if !defined?(::Rails)
12
10
  raise NoImplementError, 'Can not load Rails'
13
11
  # support Rails version
14
12
  elsif ::Rails::VERSION::STRING >= '4.2.5.1'
15
13
  extend Configuration
16
14
  require 'r2-oas/task'
15
+ require 'r2-oas/lib/core_ext/hash/deep_merge'
16
+ require 'r2-oas/lib/core_ext/object/blank'
17
17
 
18
18
  autoload :Base, 'r2-oas/base'
19
19
  autoload :NoImplementError, 'r2-oas/errors'
@@ -22,8 +22,6 @@ module R2OAS
22
22
  autoload :Sortable, 'r2-oas/shared/all'
23
23
 
24
24
  module Schema
25
- extend ActiveSupport::Autoload
26
-
27
25
  autoload :Base, 'r2-oas/schema/base'
28
26
  autoload :Generator, 'r2-oas/schema/generator'
29
27
  autoload :Builder, 'r2-oas/schema/builder'
@@ -44,7 +44,7 @@ module R2OAS
44
44
  # rubocop:enable Style/MutableConstant
45
45
  DEFAULT_TOOL = Tool.new
46
46
  # :dot or :underbar
47
- DEFAULT_NAMESPACE_TYPE = :underbar
47
+ DEFAULT_NAMESPACE_TYPE = :dot
48
48
  DEFAULT_DEPLOY_DIR_PATH = './deploy_docs'
49
49
 
50
50
  PUBLIC_VALID_OPTIONS_KEYS = %i[
@@ -6,22 +6,33 @@ require 'fileutils'
6
6
  module R2OAS
7
7
  module Deploy
8
8
  class Client < Schema::Base
9
+ SWAGGER_UI_DIST_URL = 'https://github.com/swagger-api/swagger-ui/trunk/dist'
10
+
11
+ def initialize(options = {})
12
+ super(options)
13
+ @download_dir = "#{SecureRandom.uuid[0..7]}/dist"
14
+ @dist_path = File.expand_path(Rails.root.join(@download_dir), __FILE__)
15
+ end
16
+
17
+ def download_swagger_ui_dist
18
+ system("svn export #{SWAGGER_UI_DIST_URL} #{@dist_path}")
19
+ end
20
+
9
21
  def deploy
10
22
  copy_swagger_ui_dist
11
23
  copy_swagger_ui_index
12
24
  copy_oas_doc_file
25
+ ensure
26
+ remove_download_dist
13
27
  end
14
28
 
15
29
  private
16
30
 
17
31
  def copy_swagger_ui_dist
18
32
  docs_path = File.expand_path(Rails.root.join(deploy_dir_path), __FILE__)
19
- return if FileTest.exists?(docs_path)
20
-
21
33
  FileUtils.mkdir_p(docs_path) unless FileTest.exists?(docs_path)
22
-
23
- dist_path = File.expand_path('swagger-ui/dist', __dir__)
24
- FileUtils.cp_r(dist_path, docs_path)
34
+ FileUtils.mkdir_p(@dist_path) unless FileTest.exists?(@dist_path)
35
+ FileUtils.cp_r(@dist_path, docs_path)
25
36
  end
26
37
 
27
38
  def copy_swagger_ui_index
@@ -29,7 +40,7 @@ module R2OAS
29
40
  @schema_file_path = doc_save_file_name
30
41
  template_path = File.expand_path('swagger-ui/index.html.erb', __dir__)
31
42
  template = File.read(template_path)
32
- index = ERB.new(template, nil, '%').result(binding)
43
+ index = make_index(template)
33
44
  File.write(index_path, index)
34
45
  end
35
46
 
@@ -38,6 +49,22 @@ module R2OAS
38
49
  oas_doc_file_path = File.expand_path("#{root_dir_path}/#{doc_save_file_name}")
39
50
  FileUtils.cp_r(oas_doc_file_path, swagger_file_path)
40
51
  end
52
+
53
+ def remove_download_dist
54
+ FileUtils.rm_rf(File.expand_path('..', @dist_path))
55
+ end
56
+
57
+ # [ref]
58
+ # https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Lint/ErbNewArguments
59
+ def make_index(template)
60
+ if RUBY_VERSION >= '2.6'
61
+ ERB.new(template, trim_mode: '%').result(binding)
62
+ else
63
+ # rubocop:disable Lint/ErbNewArguments
64
+ ERB.new(template, nil, trim_mode: '%').result(binding)
65
+ # rubocop:enable Lint/ErbNewArguments
66
+ end
67
+ end
41
68
  end
42
69
  end
43
70
  end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copy From https://github.com/rails/rails/blob/v4.2.5/activesupport/lib/active_support/core_ext/hash/deep_merge.rb
4
+
5
+ # rubocop:disable all
6
+ class Hash
7
+ # Returns a new hash with +self+ and +other_hash+ merged recursively.
8
+ #
9
+ # h1 = { a: true, b: { c: [1, 2, 3] } }
10
+ # h2 = { a: false, b: { x: [3, 4, 5] } }
11
+ #
12
+ # h1.deep_merge(h2) #=> { a: false, b: { c: [1, 2, 3], x: [3, 4, 5] } }
13
+ #
14
+ # Like with Hash#merge in the standard library, a block can be provided
15
+ # to merge values:
16
+ #
17
+ # h1 = { a: 100, b: 200, c: { c1: 100 } }
18
+ # h2 = { b: 250, c: { c1: 200 } }
19
+ # h1.deep_merge(h2) { |key, this_val, other_val| this_val + other_val }
20
+ # # => { a: 100, b: 450, c: { c1: 300 } }
21
+ def deep_merge(other_hash, &block)
22
+ dup.deep_merge!(other_hash, &block)
23
+ end
24
+
25
+ # Same as +deep_merge+, but modifies +self+.
26
+ def deep_merge!(other_hash, &block)
27
+ other_hash.each_pair do |current_key, other_value|
28
+ this_value = self[current_key]
29
+
30
+ self[current_key] = if this_value.is_a?(Hash) && other_value.is_a?(Hash)
31
+ this_value.deep_merge(other_value, &block)
32
+ else
33
+ if block_given? && key?(current_key)
34
+ block.call(current_key, this_value, other_value)
35
+ else
36
+ other_value
37
+ end
38
+ end
39
+ end
40
+
41
+ self
42
+ end
43
+ end
44
+ # rubocop:enable all
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copy From https://github.com/rails/rails/blob/v4.2.5/activesupport/lib/active_support/core_ext/object/blank.rb
4
+
5
+ # rubocop:disable all
6
+ class Object
7
+ # An object is blank if it's false, empty, or a whitespace string.
8
+ # For example, +false+, '', ' ', +nil+, [], and {} are all blank.
9
+ #
10
+ # This simplifies
11
+ #
12
+ # !address || address.empty?
13
+ #
14
+ # to
15
+ #
16
+ # address.blank?
17
+ #
18
+ # @return [true, false]
19
+ def blank?
20
+ respond_to?(:empty?) ? !!empty? : !self
21
+ end
22
+
23
+ # An object is present if it's not blank.
24
+ #
25
+ # @return [true, false]
26
+ def present?
27
+ !blank?
28
+ end
29
+
30
+ # Returns the receiver if it's present otherwise returns +nil+.
31
+ # <tt>object.presence</tt> is equivalent to
32
+ #
33
+ # object.present? ? object : nil
34
+ #
35
+ # For example, something like
36
+ #
37
+ # state = params[:state] if params[:state].present?
38
+ # country = params[:country] if params[:country].present?
39
+ # region = state || country || 'US'
40
+ #
41
+ # becomes
42
+ #
43
+ # region = params[:state].presence || params[:country].presence || 'US'
44
+ #
45
+ # @return [Object]
46
+ def presence
47
+ self if present?
48
+ end
49
+ end
50
+
51
+ class NilClass
52
+ # +nil+ is blank:
53
+ #
54
+ # nil.blank? # => true
55
+ #
56
+ # @return [true]
57
+ def blank?
58
+ true
59
+ end
60
+ end
61
+
62
+ class FalseClass
63
+ # +false+ is blank:
64
+ #
65
+ # false.blank? # => true
66
+ #
67
+ # @return [true]
68
+ def blank?
69
+ true
70
+ end
71
+ end
72
+
73
+ class TrueClass
74
+ # +true+ is not blank:
75
+ #
76
+ # true.blank? # => false
77
+ #
78
+ # @return [false]
79
+ def blank?
80
+ false
81
+ end
82
+ end
83
+
84
+ class Array
85
+ # An array is blank if it's empty:
86
+ #
87
+ # [].blank? # => true
88
+ # [1,2,3].blank? # => false
89
+ #
90
+ # @return [true, false]
91
+ alias_method :blank?, :empty?
92
+ end
93
+
94
+ class Hash
95
+ # A hash is blank if it's empty:
96
+ #
97
+ # {}.blank? # => true
98
+ # { key: 'value' }.blank? # => false
99
+ #
100
+ # @return [true, false]
101
+ alias_method :blank?, :empty?
102
+ end
103
+
104
+ class String
105
+ BLANK_REGEXP = /\A[[:space:]]*\z/
106
+
107
+ # A string is blank if it's empty or contains whitespaces only:
108
+ #
109
+ # ''.blank? # => true
110
+ # ' '.blank? # => true
111
+ # "\t\n\r".blank? # => true
112
+ # ' blah '.blank? # => false
113
+ #
114
+ # Unicode whitespace is supported:
115
+ #
116
+ # "\u00a0".blank? # => true
117
+ #
118
+ # @return [true, false]
119
+ def blank?
120
+ BLANK_REGEXP === self
121
+ end
122
+ end
123
+
124
+ class Numeric #:nodoc:
125
+ # No number is blank:
126
+ #
127
+ # 1.blank? # => false
128
+ # 0.blank? # => false
129
+ #
130
+ # @return [false]
131
+ def blank?
132
+ false
133
+ end
134
+ end
135
+ # rubocop:enable all